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