0

私はアンドロイドが初めてで、音楽プレーヤーを作成しています。私は MediaSession に慣れていませんでしたが、今では機能する Music Player を持っていますが、ヘッドフォンのクリックへの反応や着信通話の一時停止をサポートしていません。

これは私のコードです:

    ComponentName mediaButtonReceiver = new ComponentName(context, MusicPlayerNotificationReceiver.class);
    final MediaSessionCompat mediaSession = new MediaSessionCompat(context, "Start MP", mediaButtonReceiver, null);
    mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
    LockerActivity.getInstance().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            mediaSession.setCallback(MusicPlayer.this);
        }
    });
    mediaSession.setActive(true);

BroadcastReceiverこのアクションで定義された もあります

<action android:name="android.intent.action.MEDIA_BUTTON" />

これは、に関連付けられた私のコードのすべてですMediaSession。ですから、今のところ、ヘッドフォンからアクションの通知を受け取るようにしています。内部の最初の行にブレークポイントがありonReceive()、ヘッドフォンのボタンをクリックしても何も起こりません。ボタンを長押しすると、Android がリスニング モードになり、音声指示が表示されます。

他に何が必要ですか?

4

1 に答える 1

0

MediaSessionまず、UI スレッドで実行するすべての呼び出しを行い、Google トレーニングからこのコードを追加しました。

AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...

// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
...

// Stop listening for button presses
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);

http://developer.android.com/training/managing-audio/volume-playback.html#PlaybackControls

そして、このSOの回答で定義されたコールバックを見ました: How to use the new MediaSession class to receive media button presses on Android 5.x?

ところで、それは ではMediaSession.Callbackなく に引っ掛かりBroadcastReceiverます。

于 2015-11-11T16:15:21.073 に答える