[英]Play sound in windows phone 8.1 background
我正在編寫需要背景音樂的應用程序。 以下是我在搜索不同論壇后制作的代碼。
class AudioPlayer : IBackgroundTask
{
private BackgroundTaskDeferral _deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
taskInstance.Canceled += TaskInstance_Canceled;
}
private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
_deferral.Complete();
}
//===========================================================================================================
public void startTick()
{
BackgroundMediaPlayer.Current.SetUriSource(new Uri("ms-appx:///Audio/clock.wav"));
BackgroundMediaPlayer.Current.Play();
}
}
問題是它不起作用。 模擬器沒有聲音。 請幫忙!
幾乎沒有什么地方出錯(我想這不是您的全部代碼)。 如果您要遵循Bacground Audio Overview,那將是最好的選擇。
另請檢查您是否添加了所需的聲明(我懷疑這可能是這里的問題):轉到Package.appxmanifest
文件,打開“聲明”,然后應添加帶有Audio
Background Tasks
(作為支持的任務類型)並指定其條目點(可能是yournamespace.AudioPlayer
)。
還要記住,正如MSDN(上面的鏈接)所說:
您的應用程序首次在您的應用程序訪問BackgroundMediaPlayer時啟動后台任務。當前在前台應用程序代碼中。
我建議在Run
方法中設置一個斷點,您應該查看AudioPlayer
是否已啟動。 還記得在UI和AudioPalyer之間提供通信-ToUI和ToPlayer (當然,如果需要的話)。
您可能還需要配置SMTP ,以便您的AudioPlayer對單擊VolumeControl時顯示的按鈕做出反應。
為了幫助您理解BackgroundMediaPlayer的正確用法,請看一下此示例,您的想法將變得清晰。您必須集成另一個項目的引用以使用背景Audio。只需看一下即可。希望對您有所幫助。
萬一有人偶然發現,Win Phone 8.1上的任何IBackgroundTask都必須包含在WinRT組件項目類型中,而不是包含在類庫或PCL中。
MediaPlayer exe即將退出,如果您給它提供dll,您將被拔出頭發。
這樣,並確保您的appxmanifest文件中的入口點路徑正確,並且您應該一切順利。 只需在您的Run()方法中放置一個斷點來進行驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.