2011-10-24 10 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

関連する問題