4

Windows 8 のメトロ スタイル アプリで mp3 ファイルからサウンドを再生したい。そのために、次の 2 つの方法を試しました。

Method1:これはhttps://stackoverflow.com/a/10961201/147530
によって提供されるコードを使用しています。できます。

方法 2:
ここでは、 a を新規作成し、MediaElementそのSourceプロパティを次のよう に設定します。

var x = new MediaElement { Source = new Uri("ms-appx:/Assets/MyMp3File.mp3") };  

しかし、私がx.Play()何も起こらないとき。スローされる例外はありません。

質問: 方法 2 を機能させるにはどうすればよいですか?

MediaFailed, MediaOpened, MediaEnded編集:方法 2 を使用して呼び出されるイベント ハンドラーがないことを更新したかった.

sound = new MediaElement { Source = new Uri("ms-appx:/Assets/Clook.mp3") };
                    sound.MediaFailed += sound_MediaFailed;
                    sound.MediaOpened += sound_MediaOpened;
                    sound.MediaEnded += sound_MediaEnded;

static void sound_MediaEnded(object sender, RoutedEventArgs e)
        {
            Debugger.Break();
        }

        static void sound_MediaOpened(object sender, RoutedEventArgs e)
        {
            Debugger.Break();
        }

        static void sound_MediaFailed(object sender, ExceptionRoutedEventArgs e)
        {
            Debugger.Break();
        }
4

3 に答える 3

6

いくつかのことを試してください。次のコードを試してください

var music = new MediaElement()
{
  AudioCategory = AudioCategory.ForegroundOnlyMedia,
  Source = new Uri(this.BaseUri, "Assets/MyMp3File.mp3")
};

// This is really the only difference, adding it to the visual tree
// LayoutRoot is the root of the visual tree, in the case, a grid in my XAML
LayoutRoot.Children.Add(music);

music.Play();

ビジュアル ツリーに追加することが重要な場合があります。その上にブレーク ポイントを配置して、MediaElement にデータが含まれていることを確認します。

2番目に(そして実際に私に起こったので、それが私が言及する理由です)、私はドッキングステーションを備えた//BuildのSamsungデバイスで開発していました。デバイスがドッキング ステーションにある場合、デバイスのオーディオ ジャックとスピーカーは無効になります。サウンドを聞くには、ヘッドセットをドッキング ステーションに直接接続するか、ドッキング ステーションから取り外す必要があります。

于 2012-06-11T20:30:21.203 に答える
2

メディアを再生する前に、MediaElement を visualTree に配置する必要があります:)

于 2012-10-11T12:15:56.850 に答える
0

を使用しx.autoplay = trueます。自動再生では、ロードされるまで待機します。

于 2013-02-25T13:41:34.567 に答える