Я использую следующий код для увеличения громкости музыки, когда пользователь нажимает кнопку увеличения громкости:
@Override
public boolean onKeyDown(int keyCode, KeyEvent e) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
AudioManager audio = (AudioManager)getApplicationContext().getSystemService(AUDIO_SERVICE);
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
return true;
}
}
В консоли разработчика Google я вижу следующее сообщение ANR:
Возможно, этот вызов Binder занимает слишком много времени. , что заставляет основной поток
ожидать и активировать ANR.
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (Binder.iava: 1154)
at android.media.IAudioServiceSStub$Proxy.adjustStreamVolume (IAudioService.java: 1150)
at android.media.AudioManager.adjustStreamVolume (AudioManager.java: 820)
at com.example.MyActivity.onKeyDown (MyActivity.java:42)
Код вашего приложения приводит к вызову Binder, указанному выше. Код, запускающий
вызовы Binder, должен быть перемещен из основного потока.
Должны ли выполняться вызовы AudioManager.adjustStreamVolume фоновый поток?
@Override
public boolean onKeyDown(int keyCode, KeyEvent e) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
new Thread(this::increaseVolume).start();
return true;
}
}
private void increaseVolume() {
AudioManager audio = (AudioManager)getApplicationContext().getSystemService(AUDIO_SERVICE);
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... -avoid-anr
Android AudioManager.adjustStreamVolume: вызов фонового потока, чтобы избежать ANR? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Audiomanager.adjuststreamvolume больше не функционирует на 6+ устройствах
Anonymous » » в форуме JAVA - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Audiomanager.adjuststreamvolume больше не функционирует на 6+ устройствах
Anonymous » » в форуме Android - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Audiomanager.getStreamVolume (audiomanager.stream_music) возвращает 0
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-