Android AudioManager.adjustStreamVolume: вызов фонового потока, чтобы избежать ANR?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android AudioManager.adjustStreamVolume: вызов фонового потока, чтобы избежать ANR?

Сообщение Anonymous »

Я использую следующий код для увеличения громкости музыки, когда пользователь нажимает кнопку увеличения громкости:
@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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • 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
  • Audiomanager.getStreamVolume (audiomanager.stream_music) возвращает 0
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как избежать ANR в автономной службе Android
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»