通话期间播放闹钟

时间:2011-10-24 19:23:57

标签: android audio call

我正在创建一个必须发出声音的应用程序。如果手机正在振铃或通话,我想在耳机中播放声音。只有当屏幕打开时,下面的代码才能正常工作,但是在通话中,当我将手机放在耳边时,屏幕会关闭,我的“闹钟”不会播放。任何提示?

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();

1 个答案:

答案 0 :(得分:0)

您可能需要使用WakeLock。您应该在接听电话以获取WakeLock以及挂断电话以释放WakeLock时收听事件。

这只是一个疯狂的猜测。