6
나는 볼륨 변경을 구현하려면 위의 이미지와 볼륨 버튼에 응답하지만 내 브로드 캐스트 수신기에서 변경 사항을 수신하지 못합니다.안드로이드 MediaRouter 볼륨 이벤트
나는 볼륨 변경을 구현하려면 위의 이미지와 볼륨 버튼에 응답하지만 내 브로드 캐스트 수신기에서 변경 사항을 수신하지 못합니다.안드로이드 MediaRouter 볼륨 이벤트
VolumeProviderCompat
으로 MediaSessionCompat
을 작성하면됩니다.
// Here is a volume provider which sets the volume of a remote route.
// Extend VolumeProviderCompat with your own implementation.
public static class RemoteVolume extends VolumeProviderCompat {
public RemoteVolume(MediaRouter.RouteInfo routeInfo) {
super(VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE, STEPS, 0);
this.stepSize = routeInfo.getVolumeMax()/STEPS;
this.routeInfo = routeInfo;
}
@Override
public void onSetVolumeTo(int volume) {
routeInfo.requestSetVolume(volume * stepSize);
setCurrentVolume(volume);
}
@Override
public void onAdjustVolume(int delta) {
int newVolume = getCurrentVolume() + delta;
routeInfo.requestSetVolume(newVolume * stepSize);
setCurrentVolume(newVolume);
}
}
, 연결 VolumeProviderCompat
당신의 MediaSessionCompat
에 : 델타 0 어떤 생각이 왜 불려 onAdjustVolume 볼륨 키를 사용하여
MediaSessionCompat session = new MediaSessionCompat(context, TAG);
// might need some of these flags
session.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS |
MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS);
// the volume buttons are routed to this session when it is
// active and currently playing
session.setPlaybackState(new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f)
.build());
session.setActive(true);
// The media router tries to bind its own VolumeProvider which kinda
// works. We need to unbind the one provided and put ours in.
router.setMediaSessionCompat(session);
session.setPlaybackToRemote(new RemoteVolume(myRemoteRoute));
? 캐스트 대화 상자를 사용하여 볼륨을 변경할 때 잘 작동합니다. – ingsaurabh
현재 볼륨을 업데이트하기 위해 호출 될 수 있습니다. 그것은 한 번 이상 일어나는가? – 0xcaff
또한 'STEPS'는 0이 아니어야합니다. – 0xcaff