2016-10-10 6 views
1

SystemMediaTransportControlsをバックグラウンドオーディオアプリケーションで使用しようとしています。私は、オーディオを再生するMediaPlayerクラスを使用しています。音楽のプロパティを設定すると、サムネイルはすべてうまく動作しているように見えますが、コントロールボタン(「次へ」ボタン)を設定することはまったく機能していません。一度に完全なプレイリストを取得できないという点で、私のユースケースは多少ユニークです。次のトラックは、内部メソッド呼び出しでのみ使用できます。この部分は機能していないSystemMediaTransportControls - プロパティが動作しない設定

var playbackItem = new MediaPlaybackItem(source); 
var displayProperties = playbackItem.GetDisplayProperties(); 
displayProperties.Type = Windows.Media.MediaPlaybackType.Music; 
displayProperties.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(_currentTrack.AlbumArtUrl)); 
displayProperties.MusicProperties.AlbumArtist = displayProperties.MusicProperties.Artist = _currentTrack.Artist; 
displayProperties.MusicProperties.Title = _currentTrack.SongTitle; 
displayProperties.MusicProperties.AlbumTitle = _currentTrack.Album; 
playbackItem.CanSkip = true; 
playbackItem.ApplyDisplayProperties(displayProperties); 
_player.Source = playbackItem; 

、「次へ」:この部分は正常に動作している

、ボリュームコントロールが正しく、すべての音声情報とサムネイルが表示されます。ここでは

は私がやっているものですボタンがまだ無効になっている場合、「レコード」ボタンは表示されません。

私はオンラインで回答を探していましたが、何か有用なものを見つけることができませんでした。いずれの答えも高く評価されます。

答えて

0

UWPでは、SMTCを除いて、CommandManagerのようなものがあります。あなたのSMTCで正しく動作させるには、それを無効にする必要があります。プレイヤーを初期化したら、

mediaPlayer.CommandManager.IsEnabled = false; 

と入力してください。あなたはMSDNでより多くの情報を見つける:

あなたはメディアを再生するためのMediaPlayerを使用している場合、あなたはMediaPlayer.SystemMediaTransportControlsプロパティにアクセスすることでSystemMediaTransportControlsクラスのインスタンスを取得することができます。 SMTCを手動で制御する場合は、CommandManager.IsEnabledプロパティをfalseに設定して、MediaPlayerが提供する自動統合を無効にする必要があります。

+0

これはうまくいきます - ありがとう!あなたが手動でSMTCを制御するという敗北を決心したような場合でも、アプリがバックグラウンドになった場合に何が起こるかを処理する必要があります。私はCommandManager経由でSMTCのコントロールを有効にする別の方法を見つけました:set CommandManager.NextBehavior.EnablingRule = MediaCommandEnablingRule.Always、そしてCommandManagerからのNextReceivedイベントを処理します。 – sqexpress

関連する問題