【发布时间】:2011-10-24 19:23:56
【问题描述】:
我正在创建一个必须播放声音的应用程序。如果电话正在响铃或通话中,我想在耳机中播放声音。下面的代码只有在屏幕打开时才能完美运行,但是在通话中,当我将手机放在耳边时,屏幕会关闭并且我的“警报”不会播放。有什么提示吗?
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();
【问题讨论】:
-
澄清一下,如果手机正在通话且屏幕亮起,您的闹钟可以正常工作,但如果您当前正在通话且屏幕关闭,则无法正常工作?
-
是的。当我将手机放在耳边时,我的屏幕会关闭(有一个传感器可以做到这一点)。我可以听到把手机放在桌子上的警报声。