所以我正在使用以下代码尝试在蓝牙AVRCP兼容设备上显示元数据,但到目前为止还没有运气。
锁屏上没有出现任何控件,这让我相信RemoteControlClient`没有按预期工作。
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
ComponentName rec = new ComponentName(getPackageName(), MediaButtonReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(rec);
Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON);
i.setComponent(rec);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
RemoteControlClient mRemoteControlClient = new RemoteControlClient(pi);
mAudioManager.registerRemoteControlClient(mRemoteControlClient);
int flags = RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
| RemoteControlClient.FLAG_KEY_MEDIA_NEXT
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY
| RemoteControlClient.FLAG_KEY_MEDIA_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_STOP;
mRemoteControlClient.setTransportControlFlags(flags);
mAudioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
RemoteControlClient.MetadataEditor mEditor = mRemoteControlClient.editMetadata(true);
mEditor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, "RCC Artist");
mEditor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "RCC Title");
mEditor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, "RCC Album");
mEditor.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, 6039000);
mEditor.apply();
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
按下按钮时,我正在执行此代码。
答案 0 :(得分:1)
我使用5.0
然后RemoteControlClient
无效。
这是否意味着它根本不起作用?
正确。引用the documentation:
Android 5.0中的锁定屏幕不显示MediaSession或RemoteControlClient的传输控件。相反,您的应用可以通过通知从锁定屏幕提供媒体播放控制。这使您的应用程序可以更好地控制媒体按钮的显示,同时为锁定和解锁设备的用户提供一致的体验。
Android 5.0为此目的引入了一个新的Notification.MediaStyle模板。 Notification.MediaStyle将您使用Notification.Builder.addAction()添加的通知操作转换为嵌入在应用程序媒体播放通知中的紧凑按钮。将会话令牌传递给setSession()方法,以通知系统此通知控制正在进行的媒体会话。
确保将通知的可见性设置为VISIBILITY_PUBLIC,以便将通知标记为可在任何锁定屏幕上显示(安全或其他)。有关详细信息,请参阅锁定屏幕通知。