如何将Chromecast的品牌、接收器名称和断开连接按钮放入Android';什么是锁屏?

如何将Chromecast的品牌、接收器名称和断开连接按钮放入Android';什么是锁屏?,android,google-cast,chromecast,Android,Google Cast,Chromecast,谷歌表示,我需要在锁屏上输入品牌、接收器名称和断开连接按钮。我不知道该怎么做,因为MediaMetadataRetriever中没有用于此数据的任何字段。目前,我正在做以下工作,我得到的只是艺术品、标题和控件 remoteControlClient .editMetadata(true) .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "Title") .putBitmap(RemoteControlClient

谷歌表示,我需要在锁屏上输入品牌、接收器名称和断开连接按钮。我不知道该怎么做,因为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\u KEY\u插图,位图) .apply()

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

我用这种技术显示了一个暂停按钮,并在背景屏幕的锁定处显示了一个非常好的图像


关于

您能分享整个RCC代码吗?我需要同样的,但无法让它工作以下随机播放器样本一个重要的一块,可以很容易被忽视,并会导致看不到锁屏是音频焦点;您需要请求音频焦点,否则您将无法看到锁定屏幕。您需要包括这样一行:mAudioManager.requestAudioFocus(null,AudioManager.STREAM\u MUSIC,AudioManager.AUDIOFOCUS\u GAIN\u TRANSIENT\u MAY\u DUCK);就这样!非常感谢你!你的锁屏工作是否完美如你所愿?我想为我的音乐应用程序实现它。请让我知道它是否工作正常。Nexus5也会在锁屏上显示应用程序图标,所以不仅仅是在平板电脑上。这是正确的;事实上,这是所有设备的KitKat功能。