バックグラウンド エージェントからオーディオ ファイル (基本的にはサウンド) を再生できるようにしたいと考えています。私は次の2つのアプローチを使用しています:
1)
SoundEffectInstance ClockTickInstance;
StreamResourceInfo ClockTickStream;
SoundEffect ClockTickSound;
try {
ClockTickStream = Application.GetResourceStream(new Uri(
@"AudioFiles/NewHighScore.wav", UriKind.Relative));
ClockTickSound = SoundEffect.FromStream(ClockTickStream.Stream);
ClockTickInstance = ClockTickSound.CreateInstance();
ClockTickInstance.IsLooped = true;
ClockTickInstance.Volume = 1.0f;
ClockTickInstance.Pitch = 1.0f;
ClockTickInstance.Play();
ClockTickInstance.Stop();
}
また
2)
var localFolder = Package.Current.InstalledLocation;
Stream fileStream = await localFolder.OpenStreamForReadAsync("NewHighScore.wav");
byte[] buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, System.Convert.ToInt32(fileStream.Length));
fileStream.Close();
SoundEffect soundefct = new SoundEffect(buffer, 16000, AudioChannels.Mono);
FrameworkDispatcher.Update();
soundefct.Play();
xaml.cs ファイル (フォアグラウンド アプリなど) からコードを実行すると、すべて正常に動作し、サウンドが再生されます。
しかし、バックグラウンド エージェントからは、コードは実行されますが、音は聞こえません。
何が問題なのですか?
次の記事では、アプリがバックグラウンドで実行されているときに使用できる API のリストを示しています - http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662941(v=vs.105)。 aspx