2

我已经通过 SDK (RandomMusicPlayer) 提供的 RemoteControlClient 示例程序。但是,我终其一生都无法弄清楚如何使用自己的音乐播放器使用RemoteControlClient. 以下是我的音乐播放器服务:

//Request audio focus for playback
int result = audioManager.requestAudioFocus(audioFocusChangeListener,
                                            AudioManager.STREAM_MUSIC,
                                            AudioManager.AUDIOFOCUS_GAIN);

//Check if audio focus was granted. If not, stop the service.
if (result!=AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
    //Stop the service.
    stopSelf();
    Toast.makeText(mContext, R.string.close_other_audio_apps, Toast.LENGTH_LONG).show();
}

ComponentName remoteControlsReceiver = new ComponentName(getPackageName(),      
                                         HeadsetButtonsReceiver.class.getName());

if (mRemoteControlClientCompat == null) {
   Intent remoteControlIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
   remoteControlIntent.setComponent(remoteControlsReceiver);

   mRemoteControlClientCompat = new RemoteControlClientCompat(PendingIntent.getBroadcast(this, 0, remoteControlIntent, 0));
   RemoteControlHelper.registerRemoteControlClient(audioManager, mRemoteControlClientCompat);
   audioManager.registerMediaButtonEventReceiver(remoteControlsReceiver);
}

这基本上就是 SDK 示例所做的(据我所知)。我已经确认我的应用能够获得音频焦点。我已经完成了我的功课,并且知道这个工作需要音频焦点。我到底在这里想念什么?任何指向正确方向的指针都非常感谢。:)

4

1 回答 1

6

弄清楚了。我最初正确获得了 AudioFocus,但我的代码中存在一个缺陷,导致它在几秒钟后失去了 AudioFocus。这导致不显示锁屏控件。

底线,如果您看不到您的控件并且看起来您的代码设置正确,请确保您不会无意中abandonFocus(...)过早调用。这就是给我带来问题的原因。

于 2013-12-26T22:26:38.070 回答