2011-10-24 77 views
0

我正在創建一個應用程序,我必須發出聲音。如果手機正在響鈴或正在通話,我想在耳機中播放聲音。只有在屏幕打開的情況下,該代碼才能完美工作,但在通話中,當我將手機放在耳邊時,屏幕熄滅,我的「鬧鐘」不起作用。任何提示?在通話過程中發出警報

TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
       int state = tm.getCallState(); 
       mMediaPlayer.setLooping(true); 
       if(state == TelephonyManager.CALL_STATE_OFFHOOK || state == TelephonyManager.CALL_STATE_RINGING){ 
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 
        mMediaPlayer.setScreenOnWhilePlaying(true); 
        audioManager.setSpeakerphoneOn(false); 
       audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true); 
        audioManager.setMode(AudioManager.MODE_IN_CALL); 
        Log.d("GOFC","Tocando ou fora do gancho"); 
       } else { 
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
        vibrator.vibrate(pattern, 1); 
        Log.d("GOFC","Normal"); 
       } 
       mMediaPlayer.prepare(); 
       mMediaPlayer.start(); 
+0

只是爲了澄清,如果手機當前正在通話中,並且屏幕處於鬧鐘工作狀態,但如果您當前正在通話並且屏幕已關閉,則無法工作? – Carth

+0

是的。當我將手機放在耳邊時,屏幕關閉(有一個傳感器可以做到這一點)。我可以聽到把手機放在桌子上的鬧鐘。 – gugarush

回答

0

您可能需要使用WakeLock。您應該在收到電話以獲取WakeLock以及掛斷電話以釋放WakeLock時收聽事件。

雖然這只是一個瘋狂的猜測。

+0

我試過使用WakeLock,但沒有奏效。即使使用WakeLock,我的屏幕也沒有打開。 – gugarush