Я пытаюсь программно увеличить громкость до максимального значения потока STREAM_MUSIC
, но при этом возникает проблема "Отправка сообщения обработчику в мертвом потоке". Кроме того, кажется, что он не увеличивает громкость в 100% случаев, хотя, когда я получаю эту ошибку, он увеличивает ее БОЛЬШИНСТВО времени.
Код:
System.out.println("Maximum volume for this stream is: "+maxstreamvol+" and it used to be set to: "+currentvol);
final AudioManager am = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
am.setStreamVolume(AudioManager.STREAM_MUSIC, maxstreamvol, AudioManager.FLAG_SHOW_UI);
am.setStreamSolo(AudioManager.STREAM_MUSIC, true);
System.out.println("Volume Raised!");
После поиска в Google кажется, что эта ошибка связана с многопоточными ситуациями... Код на этом этапе должен выполняться в потоке пользовательского интерфейса.
На самом деле, я даже окружил его:
runOnUiThread(new Runnable() {
public void run() {
// code_goes_here
}
});
И это вызвало ту же ошибку. Ошибка, которую я вижу, заключается в следующем:
I/System.out(24949): Maximum volume for this stream is: 15 and it used to be set to: 0
W/MessageQueue( 490): Handler (android.media.AudioManager$FocusEventHandlerDelegate$1) {42b52f28} sending message to a Handler on a dead thread
W/MessageQueue( 490): java.lang.RuntimeException: Handler (android.media.AudioManager$FocusEventHandlerDelegate$1) {42b52f28} sending message to a Handler on a dead thread
W/MessageQueue( 490): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:294)
W/MessageQueue( 490): at android.os.Handler.enqueueMessage(Handler.java:618)
W/MessageQueue( 490): at android.os.Handler.sendMessageAtTime(Handler.java:587)
W/MessageQueue( 490): at android.os.Handler.sendMessageDelayed(Handler.java:558)
W/MessageQueue( 490): at android.os.Handler.sendMessage(Handler.java:495)
W/MessageQueue( 490): at android.media.AudioManager$1.dispatchAudioFocusChange(AudioManager.java:1894)
W/MessageQueue( 490): at android.media.IAudioFocusDispatcher$Stub.onTransact(IAudioFocusDispatcher.java:57)
W/MessageQueue( 490): at android.os.Binder.execTransact(Binder.java:351)
W/MessageQueue( 490): at dalvik.system.NativeStart.run(Native Method)
I/System.out(24949): Volume Raised!
Кто-нибудь знает, что здесь происходит?
applicationContext
, например.(AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
- person iTech   schedule 12.03.2013