我正在尝试使用MediaSessionCompat来调整chromecast接收器的音量。
以下是启动MediaSessionCompat的代码
ComponentName receiver = new ComponentName(context, RemoteControlReceiver.class.getName());
Intent remoteControlIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
remoteControlIntent.setComponent(receiver);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(context, 0, remoteControlIntent, 0);
mediaSession = Optional.of(new MediaSessionCompat(context, MEDIA_SESSION_TAG, receiver, mediaPendingIntent));
mediaSession.get().setMetadata(
new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, mediaDelegate.getTitle(this))
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, resources.getString(R.string.casting_to, adapter.getDeviceName()))
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, adapter.getMastheadImage(screenSize.x, screenSize.y)).build());
mediaRouter.setMediaSessionCompat(mediaSession.get());
mediaSession.get().setPlaybackState(getBasePlaybackStateBuilder().setState(PlaybackStateCompat.STATE_PLAYING, 0, 0).build());
mediaSession.get().setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS | VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE);
mediaSession.get().setActive(true);
tokenPublisher.onNext(mediaSession.get().getSessionToken());
mediaRouter.addRemoteControlClient(mediaSession.get().getRemoteControlClient());
尝试设置chromecast接收器音量的代码
MediaControllerCompat mediaControllerCompat = new MediaControllerCompat(getContext(), token); // Token that the media session generates
float maxVolume = mediaControllerCompat.getPlaybackInfo().getMaxVolume();
mediaControllerCompat.setVolumeTo((int) ((seekBar.getProgress() / 100f) * maxVolume), 0);
当我这样做时,它会将音乐流音量更改为默认设置
我知道我可以使用Cast.CastApi.setVolume(2);
来设置音量,但问题是它不会像使用硬件按钮调整时那样显示接收器上的音量进度条。
我不确定如何设置MediaSessionController更改的音量流。似乎没有任何关于此的文件。我知道这可能是因为Netflix这样做了。
以下是Cast.CastApi.setVolume未显示接收器UI的示例 https://www.dropbox.com/s/uvjtma26luem32b/20150515_113421.mp4?dl=0
这是使用硬件按钮时出现的UI https://www.dropbox.com/s/psk1g314puz9ie4/20150515_113313.mp4?dl=0
用于以编程方式设置卷的代码为messageStream.get().setStreamVolume(googleApiClient.get(), volume);
谢谢!