1

非常に頻繁に発生する問題があります。

私はsoundfxを再生するためにsoundpoolを使用しています。1 つのサウンドエフェクト「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() を使用できません。設定で強制停止してみます。しかし、これもうまくいきません。着信音の音量を変更するには、電話機を再起動する必要があります。(ソニーエリクソン X10)

Android 2.1 でアプリを終了した後に着信音の音量を変更できる方法はありますか?

編集:さらにいくつかのデバイスでテストしました。この問題は、Motorola FlipOut と SE X10 mini でも発生しました。Galaxy S、HTC Legends、SE X8、Galaxy S II で動作します。

4

2 に答える 2

0

音量を変更できるようにするためにサイレント mp3 を使用する必要はありません。この行を oncreate に入れることができます。

this.setVolumeControlStream(AudioManager.STREAM_MUSIC);  

情報はここから来ました。 http://www.stealthcopter.com/blog/2010/02/how-to-tell-android-which-volume-mediaringtone-etc-should-be-control-by-your-app/

于 2012-01-15T18:17:29.477 に答える
0

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

うまくいかない場合は、次の方法を試してください。

setVolumeControlStream(AudioManager.STREAM_RING);

onStop() の最後に。

于 2011-06-16T14:50:17.703 に答える