2

隔離されたストレージからオーディオファイルを再生するための実用的な(テスト済みの)コードの例を持っている人はいますか?私が現在持っているコードは、例外をスローしたり音を立てたりすることはありませんが、次のとおりです。

        MediaElement ME = new MediaElement();
        ME.AutoPlay = false;
        IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
        ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open));
        ME.Play();

Expressionを使用してエンコードされたさまざまなオーディオ形式を使用してこれを試しましたが、常に同じ問題が発生します。

また、ファイルブラウザを使用してファイルストリームから曲をロードする例が必要ですが、これはそれほど重要ではなく、分離ストレージの例は簡単に変換できます。

確認しましたが、ファイルをアプリケーションに埋め込むと正常に再生されます。問題は、ユーザーが自分の曲をアプリケーションにロードできるようにしたいということです。アプリケーションは、分離されたストレージに保存され、そこから再生されます。

最後に、例のように、XAMLではなくC#コードでこれを実行したいと思います。

4

1 に答える 1

1
  1. ファイルは非同期で開かれるため、SetSourceコマンドと同じ方法でPlayコマンドを使用することはできません。AutoPlayをtrueに設定する(これはデフォルトでもあります)。ロードされるとすぐに再生されることを確認します。

    MediaElement ME = new MediaElement();
    ME.AutoPlay = true;
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
    ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open));
    
  2. Silvelrightはwavファイルをネイティブにサポートしていないため、wavファイルを再生するには、http://code.msdn.microsoft.com/wavmssをダウンロードしてから次のコードを使用する必要があります。

    MediaElement ME = new MediaElement();
    ME.AutoPlay = true;
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
    ME.SetSource(new WaveMediaStreamSource(ISF.OpenFile("foo.wav", FileMode.Open)));
    

    理想的ではありませんが、ファイル拡張子を使用してwavファイルが再生されていることを検出し、この場合にのみ2番目のコードサンプルを使用できます。

于 2010-12-07T17:49:16.527 に答える