0

XAML の両方の mediaElement を介してバックグラウンド オーディオを設定しようとしました

<MediaElement x:Name="MyAudio" Source="Assets/Sound.mp3" AudioCategory="BackgroundCapableMedia" AutoPlay="False" />

そしてプログラム的に

async void setUpAudio()
{
    var package = Windows.ApplicationModel.Package.Current;
    var installedLocation = package.InstalledLocation;
    var storageFile = await installedLocation.GetFileAsync("Assets\\Sound.mp3");
    if (storageFile != null)
    {
        var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
        _soundEffect = new MediaElement();
        _soundEffect.AudioCategory = AudioCategory.BackgroundCapableMedia;
        _soundEffect.AutoPlay = false;
        _soundEffect.SetSource(stream, storageFile.ContentType);
    }
}

// and later...
_soundEffect.Play();

しかし、どちらも私にはうまくいきません。アプリを最小化するとすぐに音楽がフェードアウトします

4

1 に答える 1

0

aktonは、この優れた回答で同様の質問に回答しました

タイトルに「audio」が使われておらず、音楽を演奏していなかったため、最初は簡単に見つけることができませんでした。これは、StackExchangeで見たいと思うような、優れた包括的な回答です。また、同様の質問に対する他の回答が指摘できなかったいくつかのことについても言及しています。簡単に言えば

  • ボタンがない場合でも、MediaControlイベント、、、PlayPressed処理する必要があります。編集:これらのイベントはWindows 8アプリの認定に必要です、実際に機能することを確認してください。PausePressedPlayPausedTogglePressedStopPressed
  • アプリケーションマニフェストのサポートバックグラウンドタスクのリストにオーディオを追加します[詳細については、aktonsの回答を参照してください]

しかし、このソリューションを実装する際に、私が推測できるのはバグであることに気づきました。UserControl内にキッチンタイマーを作成しました。カウントダウン時にオプションのカチカチという音が鳴り、経過するとブーンという音がします。ただし、タイマーがセットされる前にカチカチという音を消すと、バズ音は鳴りません。Windows 8アプリは、バックグラウンドオーディオを機能させるために、最小化する前にサウンドを再生する必要があるようです。これを修正するために、持続時間が1秒のサイレントオーディオファイルを作成しました。このファイルは、カチカチ音がオンかオフかに関係なく再生されます。これは奇妙なハックであり、より良い解決策を見つけられることを願っていますが、今のところ私が考えることができるのはそれだけです。

于 2012-11-21T14:33:04.913 に答える