【问题标题】:Play an alarm during a call在通话期间播放闹钟
【发布时间】: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();

【问题讨论】:

  • 澄清一下,如果手机正在通话且屏幕亮起,您的闹钟可以正常工作,但如果您当前正在通话且屏幕关闭,则无法正常工作?
  • 是的。当我将手机放在耳边时,我的屏幕会关闭(有一个传感器可以做到这一点)。我可以听到把手机放在桌子上的警报声。

标签: android audio call


【解决方案1】:

您可能需要使用WakeLock。当手机被拿起以获取WakeLock和手机被挂起以释放WakeLock时,您应该监听事件。

不过,这只是一个疯狂的猜测。

【讨论】:

  • 我尝试使用 WakeLock 但它不起作用。即使使用 WakeLock,我的屏幕也无法打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多