我已经浏览了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示例所做的(据我所知)。我已经确认我的应用程序能够获得音频焦点。我完成了我的作业,并且知道需要音频专注才能使用。我到底错过了什么?任何指向正确方向的人都非常感激。 :)
答案 0 :(得分:6)
想出来。我最初正确地获得了AudioFocus,但是我的代码中存在一个缺陷,导致它在几秒钟之后丢失了AudioFocus。这导致锁屏控件无法显示。
最重要的是,如果您看不到控件,看起来您的代码设置正确,请确保您不会过早地无意中调用abandonFocus(...)
。这就是给我带来问题的原因。