2010-08-09 4 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 Я предоставил все необходимые разрешения в файле манифеста. – AllSolutions

+0

POContext - это обычный контекст. Я определил его как свою собственную переменную –

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.permission.MODIFY_AUDIO_SETTINGS"

Смежные вопросы