2016-05-06 10 views
0

にあるとき、私は、次のとオーディオのバックグラウンドタスクを持っているの3.5mmジャックボタンを押しを検出します。は、アプリがフォアグラウンド

バックグラウンドタスクなしでこれをフォアグラウンドで使用したいと考えています。 BackgroundMediaPlayerを使用せずにこれを行うことは可能ですか?私はMediaElementを使用しようとしましたが、ButtonPressedというイベントまたはそれに類するものが見つかりませんでした。

答えて

0

はい、それはMediaElementを使用することにより可能であり、SystemMediaTransportControls class.The SystemMediaTransportControls classはこれを行う方法を案内しSystem Media Transport ControlsButtonPressed event.Theドキュメントが含まれています。既にお客様の要件を満たしているoffical sampleがあります。サンプルを直接テストすることができます。サンプルのコードの一部です。私はヘッドセットポートに差し込まれているボタンを押すと

private SystemMediaTransportControls systemMediaControls = SystemMediaTransportControls.GetForCurrentView();  
systemMediaControls.IsEnabled = true; 
systemMediaControls.ButtonPressed += systemMediaControls_ButtonPressed; 
private async void systemMediaControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) 
    { 
     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => 
     { 
      switch (args.Button) 
      { 
       case SystemMediaTransportControlsButton.Pause: 
        Debug.WriteLine("Button pressed: "); 
        break; 
      } 
     }); 
    } 

背後

XAMLコード

<MediaElement x:Name="MyMediaElement" Margin="0,0,10,0" AudioCategory="Media" AreTransportControlsEnabled="True" VerticalAlignment="Top"/> 

コードは、それが呼び出されていないはい。

ヘッドセットを接続したときにイベントをトリガーしたい場合は、このAPI AudioRoutingManagerを使用してください。コード例は次のとおりです。

private void Detectheadset_Click(object sender, RoutedEventArgs e) 
{ 
    AudioRoutingManager manager = AudioRoutingManager.GetDefault(); 
    manager.AudioEndpointChanged += Manager_AudioEndpointChanged;   
} 

private void Manager_AudioEndpointChanged(AudioRoutingManager sender, object args) 
{ 
} 

Windows Mobile Extensions for the UWPの相対的な機能を追加して参照を追加するように注意してください。これはモバイル拡張名前空間なので、電話で実行します。

+0

'systemMediaControls.IsPauseEnabled = true;'を追加し、すべてのボタンを有効にしようとしましたが、ボタンを押すと 'systemMediaControls_ButtonPressed'が呼び出されません。私はこれらに類似したものを持っています:[image](http://ecx.images-amazon.com/images/I/61TnbxASYfL._SL1010_.jpg)。エラーもありません。 – Nfear

+0

@Nfear公式サンプルをテストに使用しましたか?私のコードはここでは完全ではありません。 –

+0

はい、ヘッドセットポートに差し込まれたボタンを押すと呼び出されません。ボリュームコントロールメニューで一時停止を押すと呼び出されます。 – Nfear

関連する問題