我正在创建一个必须发出声音的应用程序。如果手机正在振铃或通话,我想在耳机中播放声音。只有当屏幕打开时,下面的代码才能正常工作,但是在通话中,当我将手机放在耳边时,屏幕会关闭,我的“闹钟”不会播放。任何提示?
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 :(得分:0)
您可能需要使用WakeLock
。您应该在接听电话以获取WakeLock
以及挂断电话以释放WakeLock
时收听事件。
这只是一个疯狂的猜测。