1

私には仕事があります-電話が鳴ったらすぐに着信音の音量を変更してください。例: 着信があることを検出した後、呼び出し音の音量を 0 (ミュート) に設定する必要があり、バイブレーターも無効にする必要があります (まだ無効になっていない場合)。次に、別のコード (startComputing();) を実行する必要があるときに遅延が発生します。その後、着信音量を特定の値 (fe7) に変更し、バイブレーターをアクティブにする必要があります。これが私のコードです:

    public class IncomingCallReceiver extends BroadcastReceiver {
        private AudioManager amanager;
        public void onReceive(Context context, Intent intent) {
            if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                amanager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
                amanager.setRingerMode(0x00000000); // no sound and no vibration            
                startComputing();
                amanager.setRingerMode(0x00000002); // normal
                amanager.setStreamVolume(AudioManager.STREAM_RING, 7,
                        AudioManager.FLAG_SHOW_UI
                                + AudioManager.FLAG_PLAY_SOUND);
            }

        }
        private void startComputing() {
            try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
        }

}

1)主な問題は、この後です: amanager.setStreamVolume(AudioManager.STREAM_RING, 7, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 着信音はまったく鳴らず、サウンド レベルが変更されたというトースト メッセージのみが表示されますが、電話機はサウンドを再生しません。これはどのように変更できますか?2) amanager.setRingerMode(0x00000000); という問題もあります。音量とバイブレーションはすぐには変わりませんが、約 0.5 秒で変わります。前もって感謝します。ジェイコブ

4

1 に答える 1

1

呼び出し音をミュートする前に、1/2 秒の遅延を克服するためにできることは何もないと思います。動作する場合もあれば (遅延が非常に短い、または遅延がない場合)、リンガーが短時間聞こえる場合もあります。

あなたが抱えている問題は、に渡されるフラグにあると思いますsetStreamVolume

これを試して:

amanager.setStreamVolume(AudioManager.STREAM_RING, 7,
    AudioManager.FLAG_SHOW_UI|AudioManager.FLAG_PLAY_SOUND);

単純な加算( ) ではなく、ビット単位の包括的または( )を使用する必要があります。|+

于 2012-03-20T14:34:53.847 に答える