2011-06-16 13 views
2

非常に頻繁に発生する問題があります。サウンドプール(<2.1)を使用した後でリンガー音量を変更できない

私はsoundpoolを再生するためにsoundpoolを使用しています。 1つの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(); 
} 

APIレベル8以上でしかメソッドをサポートしていないため、autoPause()は使用できません。私は設定で強制停止しようとします。しかし、これはどちらもうまくいかないでしょう。呼び出し音量を変更するには、電話を再起動する必要があります。 (Sony Ericsson X10)

Android 2.1でアプリを終了した後でリンガー音量を変更できる方法はありますか?

編集: 私はいくつかのデバイスでそれをテストしました。問題はMotorola FlipOutとSE X10 miniでも発生しました。これは、ギャラクシーS、HTCの伝説、SE X8とギャラクシーS IIで動作します。

答えて

0

"mSoundPool.pause"をonPause()の代わりにonStop()メソッドに配置してください。

それが動作しない場合は、試すことができます:

setVolumeControlStream(AudioManager.STREAM_RING); 

をonStopの最後に()。

+0

私は両方を試してみます。それは動作しません。それはメディアボリュームのままです。 – Xazen

+0

私はアプリが見えない場合でも、何とかあなたのアプリがまだオーディオストリームに「ハング」していると思います。あなたは、onPause/Resumeだけでなく、あなたの "Audio engine"を注意深くチェックするべきです。 – BrainCrash

+0

私はonStopとonDestroyでも試しました。私は仕上げ方法をオーバーライドしようとしました。最後に私はすべてをリリースする。 onResumeでは、ファイルを再度ロードする必要があります。出来た。それでも。それは私が望むものではありません。 – Xazen

関連する問題