2016-10-10 19 views
2

WINDOW UNIVERSAL APPの場合、オーディオエンドポイントが変更されたことを検出したい。 Windows Mobile AppのWindows Storeアプリケーションでオーディオエンドポイントの変更を検出するにはどうすればよいですか?

  • 、私はコールバックを取得し、オーディオストリームのルーティングを行うためにWindows.Phone.Media.Devices.AudioRoutingManagerを使用。

  • Windowsデスクトップアプリケーションの場合、MMDevice APIが表示されます。

  • Windowsストアアプリの場合、これを取得する方法はわかりません。これを検出するには?

    ご協力いただきありがとうございます。ありがとうございました。

答えて

0

リバーステストを長時間行って、作成した後、私はDeviceWatcherを作成することが最も適切な解決策だと思います。私はそれを試して、ヘッドフォン/マイクが追加または削除されるたびに通知を受け取ります。

ウォッチャを作成すると、指定した条件に一致するデバイスについて、次の通知が送信されます。

  • 新しいデバイスが追加されたときに通知を追加します。
  • 興味のあるプロパティが変更されたときに更新通知が変更されます。
  • デバイスが使用できなくなったとき、またはフィルタに一致しなくなったときに通知を削除します。

これは、linkです。

2

UWPでは、MediaDevice.DefaultAudioRenderDeviceChangedイベントを使用して、デフォルトのオーディオレンダーデバイスが変更されたことを検出できます。このイベントにはDefaultAudioRenderDeviceChangedEventArgs引数が含まれています。 Idプロパティでは、新たに選択されたデフォルトのオーディオレンダリングデバイスのIDを取得できます。デバイスIDを取得したら、DeviceInformation.CreateFromIdAsyncメソッドを使用してDeviceInformationを取得できます。このクラスを使用すると、デバイスの列挙中に指定された追加のプロパティと同様に、既知のデバイスプロパティにアクセスできます。詳細はDevice information propertiesをご覧ください。そして次は、簡単なサンプルです:詳細情報については、Output to a specific audio endpointを参照してください

var outputDevices = await DeviceInformation.FindAllAsync(MediaDevice.GetAudioRenderSelector()); 

MediaDevice.DefaultAudioRenderDeviceChanged += MediaDevice_DefaultAudioRenderDeviceChanged; 

private async void MediaDevice_DefaultAudioRenderDeviceChanged(object sender, DefaultAudioRenderDeviceChangedEventArgs args) 
{ 
    System.Diagnostics.Debug.WriteLine($"{args.Id} : {args.Role}"); 

    var device = await DeviceInformation.CreateFromIdAsync(args.Id); 

    //TODO 
} 

加えて、我々のようなDeviceInformation.FindAllAsync方法でMediaDevice.GetAudioRenderSelector方法を使用することにより、利用可能なすべてのオーディオエンドポイントを取得することができます。

+0

こんにちはジェイ、あなたの提案は良い解決策であるようです。しかし、Windows Phone Store Appでこれを試してみましたか?それは動作しますか?私にとっては、DeviceWatcherを試してみましたが、うまくいきます。 –

+0

@LuongMinhHiep 'DefaultAudioRenderDeviceChanged'は汎用APIであり、モバイルデバイス上で動作するはずです。そして私はLumia 640でテストしました。うまくいきます。 –

関連する問題