현재 스트리밍 안드로이드 앱을 만들고 원격 제어 클라이언트를 통합하려고합니다 (예를 들어 잠금 화면의 컨트롤 ICS +). 클라이언트 자체에서 멈추었을 때 잠금 화면 원격 제어 클라이언트가 이상하게 깜박임
내가 내 스트리밍 서비스의 시작에서 그 일을 해요, 이렇게하려면 다음int result = audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
stopSelf();
}
mediaButtonReceiverComponent = new ComponentName(this, RemoteControlReceiver.class);
audioManager.registerMediaButtonEventReceiver(mediaButtonReceiverComponent);
if (remoteControlClientCompat == null) {
final Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mediaButtonReceiverComponent);
remoteControlClientCompat = new RemoteControlClientCompat(
PendingIntent.getBroadcast(
getApplicationContext(),
0,
mediaButtonIntent,
PendingIntent.FLAG_UPDATE_CURRENT
)
);
RemoteControlHelper.registerRemoteControlClient(audioManager, remoteControlClientCompat);
}
final int flags = RemoteControlClient.FLAG_KEY_MEDIA_STOP;
remoteControlClientCompat.setTransportControlFlags(flags);
remoteControlClientCompat
단순히 샘플에서 RemoteControlClientCompat의 인스턴스입니다.
스트리밍 중 메타 데이터를 업데이트하고 있습니다. 모든 것이 정상적으로 작동하고 있어도 컨트롤이 내 RemoteControlReceiver
으로 전송됩니다. 데이터와 이미지는 잠금 화면에 잘 나타납니다.
내 앱에서 스트리밍을 중지하면 화면 잠금이 해제되지만 위젯 자체에서 버튼을 눌러 위젯을 삭제하려고 할 때 이상한 일을합니다. 정지 버튼을 누르면 방송 수신기가 내 스트리밍 서비스를 중단합니다. 그런 다음 서비스의들의 OnDestroy() 메소드에, 내가 그 일을 해요 :
RemoteControlHelper.unregisterRemoteControlClient(audioManager, remoteControlClientCompat);
audioManager.unregisterMediaButtonEventReceiver(mediaButtonReceiverComponent);
audioManager.abandonAudioFocus(this);
위젯은 즉시 audioManager.unregisterMediaButtonEventReceiver(mediaButtonReceiverComponent);
가 호출 점멸 간다. 줄을 주석 처리하려고 시도했는데 깜박임은 audioManager.abandonAudioFocus(this);
으로 발생합니다. 서비스가 중단 될 때 다른 행이 깜박이는 것을 주석 처리합니다.
내 알림에서 스트리밍을 중지 할 때도 이와 같은 현상이 발생했습니다.
내가 뭘 잘못하고 있니? 이 호출의 순서를 변경하려고 시도했지만 해결할 수 없었습니다. Spotify에서 몇 가지 버전과 똑같은 문제가 발생했습니다. 나는 그들이 그것을 어떻게 해결했는지 궁금 하네 ...