2010-08-09 64 views
2

我想知道如何攔截來電並自動激活揚聲器。我讀這個類是使用com.android.internal.telephony,但我找不到propre文檔。謝謝你的幫助。Android揚聲器和通話攔截

回答

2

這裏是代碼攔截來電

PhoneStateListener mListner = new PhoneStateListener() { 
      @Override 
      public void onCallStateChanged(int state, String incomingNumber) { 

       switch (state) { 
        case TelephonyManager.CALL_STATE_OFFHOOK: 

         // TODO 
         break; 
        case TelephonyManager.CALL_STATE_RINGING: 

         // TODO 
         break; 
        default: 
         break; 
       } 
      }; 
     }; 

激活外放

AudioManager POAudioService = (AudioManager) POContext.getContext().getSystemService(Context.AUDIO_SERVICE); 
POAudioService.setSpeakerphoneOn(true); 
+0

在上面的代碼中,什麼是POContext?這是你創建的課程嗎?我嘗試了類似的代碼來使用BroadCastReceiver打開揚聲器,但它不起作用。你能回答這個問題:http://stackoverflow.com/questions/8617381/turn-on-speakerphone-whenever-an-outgoing-call-is-made我已經在Manifest文件中給予了所有必要的權限。 – AllSolutions 2012-01-12 16:34:07

+0

POContext是正常的上下文..我已經定義它爲我自己的變量 – 2012-01-21 05:49:40

1
private TelephonyManager telManager; 

//on create method 
telManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 

     if (telManager != null) { 
      telManager.listen(phoneStateListener, 
        PhoneStateListener.LISTEN_CALL_STATE); 
     } 


PhoneStateListener phoneStateListener = new PhoneStateListener() { 
     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
      if (state == TelephonyManager.CALL_STATE_RINGING) { 

       onCall = true; 


      } else if (state == TelephonyManager.CALL_STATE_IDLE) { 

       onCall = false; 

      } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) { 

       onCall = true; 
       //activate your loud speaker 


      } 
      super.onCallStateChanged(state, incomingNumber); 
     } 
    }; 
1

必需的權限: 使用許可權的android:NAME = 「android.permission.MODIFY_AUDIO_SETTINGS」