Не удается изменить громкость звонка после использования Soundpool (<2.1) - PullRequest
2 голосов
/ 16 июня 2011

Существует проблема, которая возникала очень часто.

Я использую soundpool для воспроизведения soundfx. Один soundfx «silence.mp3» постоянно играет в цикле, так что я могу изменить громкость в любое время. Если я меняю громкость, отображается «громкость медиа». Кажется, это объем для приложения.

После выхода из приложения (кнопка «Назад» или «Домой») я не могу изменить «громкость звонка».

Звук будет воспроизводиться, если начать задание

@Override
protected void onResume() {
    super.onResume();
    Log.d(TAG, "onResume");
    if (StbApp.mSoundPool != null){
        Log.d(TAG, "playSounds");
        Log.d(TAG, "menu: " + StbApp.menu);
        StbApp.mSoundPool.play(
                StbApp.menu, 
                StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC), 
                StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC), 
                0, 
                0, 
                1
        );
        Log.d(TAG, "menu: " + StbApp.silence);
        StbApp.mSoundPool.play(
                StbApp.silence, 
                StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC), 
                StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC), 
                0, 
                -1, 
                1
        );
    }

Я пытаюсь приостановить все звуки, которые я использую в приложении, чтобы убедиться, что по какой-то причине звук не воспроизводится. (Хотя это и есть активность запуска)

@Override
protected void onPause() {
    Log.d(TAG, "onPause");
    StbApp.mSoundPool.pause(StbApp.gameover);
    StbApp.mSoundPool.pause(StbApp.execution);
    StbApp.mSoundPool.pause(StbApp.menu);
    StbApp.mSoundPool.pause(StbApp.number);
    StbApp.mSoundPool.pause(StbApp.penalty);
    StbApp.mSoundPool.pause(StbApp.players);
    StbApp.mSoundPool.pause(StbApp.quest);
    StbApp.mSoundPool.pause(StbApp.round);
    StbApp.mSoundPool.pause(StbApp.spinning);
    StbApp.mSoundPool.pause(StbApp.silence);

    super.onPause();
}

Я не могу использовать autoPause (), потому что только API уровня 8 и выше поддерживает метод. Я пытаюсь принудительно остановить в настройках. Но это тоже не сработает. Я должен перезагрузить телефон, чтобы изменить громкость звонка. (Sony Ericsson X10)

Есть ли способ изменить громкость звонка после выхода из приложения в Android 2.1?

EDIT: Я проверил это на некоторых других устройствах. Проблема возникла также на Motorola FlipOut и SE X10 mini. Работает на Galaxy S, HTC Legends, SE X8 и Galaxy S II.

Ответы [ 2 ]

0 голосов
/ 15 января 2012

Вам не нужно использовать тихий mp3, чтобы иметь возможность изменить громкость. Вы можете поместить эту строку в новую строку.

this.setVolumeControlStream(AudioManager.STREAM_MUSIC);  

Информация пришла отсюда. http://www.stealthcopter.com/blog/2010/02/how-to-tell-android-which-volume-mediaringtone-etc-should-be-controlled-by-your-app/

0 голосов
/ 16 июня 2011

Попробуйте поместить mSoundPool.pause в метод onStop () вместо onPause ().

Если это не работает, вы можете попробовать:

setVolumeControlStream(AudioManager.STREAM_RING);

в конце onStop ().

...