0

因此,我使用以下代码尝试在兼容蓝牙 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);

当按下按钮时,我正在执行此代码。

4

1 回答 1

1

我正在使用 5.0

然后RemoteControlClient就不行了。

这是否意味着它根本不起作用?

正确的。引用文档

Android 5.0 中的锁屏不显示 MediaSession 或 RemoteControlClient 的传输控件。相反,您的应用可以通过通知从锁定屏幕提供媒体播放控制。这使您的应用程序可以更好地控制媒体按钮的显示,同时为锁定和解锁设备的用户提供一致的体验。

为此,Android 5.0 引入了一个新的 Notification.MediaStyle 模板。Notification.MediaStyle 将您使用 Notification.Builder.addAction() 添加的通知操作转换为嵌入在应用的媒体播放通知中的紧凑按钮。将会话令牌传递给 setSession() 方法以通知系统此通知控制正在进行的媒体会话。

确保将通知的可见性设置为 VISIBILITY_PUBLIC 以将通知标记为安全以显示在任何锁定屏幕上(安全或其他)。有关详细信息,请参阅锁定屏幕通知。

于 2014-12-13T12:53:06.247 回答