簡體   English   中英

在Windows Phone 8.1背景中播放聲音

[英]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之間提供通信-ToUIToPlayer (當然,如果需要的話)。

您可能還需要配置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM