如何将Chromecast的品牌,接收器名称和断开连接按钮放入Android的锁定屏幕?



Google声明我需要在锁定屏幕上放置品牌、接收器名称和断开连接按钮。我不知道如何做到这一点,因为MediaMetadataRetriever中没有任何字段用于此数据。目前我正在做以下工作,我得到的只是艺术品、标题和控件。

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_KEY_ARTWORK,位图).apply();

在这个位图中,你可以有你的品牌名称,应用程序图标等。

我使用了这种技术来显示一个暂停按钮,并在屏幕锁定的背景中显示一个非常漂亮的图像。

问候

最新更新