如何将Chromecast的品牌、接收器名称和断开连接按钮放入Android';什么是锁屏?
谷歌表示,我需要在锁屏上输入品牌、接收器名称和断开连接按钮。我不知道该怎么做,因为MediaMetadataRetriever中没有用于此数据的任何字段。目前,我正在做以下工作,我得到的只是艺术品、标题和控件如何将Chromecast的品牌、接收器名称和断开连接按钮放入Android';什么是锁屏?,android,google-cast,chromecast,Android,Google Cast,Chromecast,谷歌表示,我需要在锁屏上输入品牌、接收器名称和断开连接按钮。我不知道该怎么做,因为MediaMetadataRetriever中没有用于此数据的任何字段。目前,我正在做以下工作,我得到的只是艺术品、标题和控件 remoteControlClient .editMetadata(true) .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "Title") .putBitmap(RemoteControlClient
remoteControlClient
.editMetadata(true)
.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "Title")
.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, bitmap)
.apply();
由于有人请求了周围的代码,这里有一些:
private LockscreenManager(Context context) {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
ComponentName myEventReceiver = new ComponentName(context, MediaButtonIntentReceiver.class);
audioManager.registerMediaButtonEventReceiver(myEventReceiver);
if (remoteControlClient == null) {
Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
intent.setComponent(myEventReceiver);
remoteControlClient = new RemoteControlClient(PendingIntent.getBroadcast(context, 0, intent, 0));
audioManager.registerRemoteControlClient(remoteControlClient);
}
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
// android built-in lockscreen only supports play/pause/playpause/stop, previous, and next.
remoteControlClient.setTransportControlFlags(
RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
| RemoteControlClient.FLAG_KEY_MEDIA_NEXT);
}
public void setMetadata(Film film, Bitmap bitmap) {
remoteControlClient
.editMetadata(true)
.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, film.getDirectorString())
.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, film.getTitle())
.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, film.getDuration()/60)
.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, bitmap)
.apply();
}
public void requestAudioFocus(Context context) {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.requestAudioFocus(
new OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {}
},
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
}
public void removeLockscreenControls() {
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
}
public void setLockscreenPaused() {
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
}
public void setLockscreenPlaying() {
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
}
不幸的是,用户体验指南中的信息并不准确。RemoteControlClient目前不支持“停止”按钮(在奇怪的情况下,您可以使其可见,如将状态设置为缓冲,但这不是您想要的),因此您可以跳过“停止”按钮,这是断开连接操作的自然选择。在按钮方面,您只能添加“显示播放/暂停”、“下一个”和“上一个”;FF和REW没有出现。最后,在平板电脑上(至少在Kitkat上),锁屏会显示应用程序的图标,但在手机上不会。因此,总而言之,您不需要实现锁屏的断开连接,也不需要品牌(对于手机)。考虑到设备的高度和宽度,我建议生成一个动态位图,然后将该位图设置为 putBitmap(RemoteControlClient.MetadataEditor.BITMAP\u KEY\u插图,位图) .apply() 在这个位图中,您可以有您的品牌名称、应用程序图标等 我用这种技术显示了一个暂停按钮,并在背景屏幕的锁定处显示了一个非常好的图像
关于您能分享整个RCC代码吗?我需要同样的,但无法让它工作以下随机播放器样本一个重要的一块,可以很容易被忽视,并会导致看不到锁屏是音频焦点;您需要请求音频焦点,否则您将无法看到锁定屏幕。您需要包括这样一行:mAudioManager.requestAudioFocus(null,AudioManager.STREAM\u MUSIC,AudioManager.AUDIOFOCUS\u GAIN\u TRANSIENT\u MAY\u DUCK);就这样!非常感谢你!你的锁屏工作是否完美如你所愿?我想为我的音乐应用程序实现它。请让我知道它是否工作正常。Nexus5也会在锁屏上显示应用程序图标,所以不仅仅是在平板电脑上。这是正确的;事实上,这是所有设备的KitKat功能。