2012-11-14 3 views
2

J'ai développé une application Android liée à la musique. J'ai un problème en manipulant le mediaplayer sur l'appel entrant. Je veux mettre l'audio en pause pendant l'appel téléphonique et le reprendre après la fin de l'appel. J'ai besoin de suggestions pour utiliser TelephonyManager avec onstatechanged pour mettre en pause et reprendre l'audio (OR) toutes les autres méthodes pour mettre en pause et reprendre l'application elle-même pendant les appels entrants.Traitement des appels entrants dans l'application android

Répondre

3

utilisez les méthodes onPause() et onResume() pour votre activité. Lorsqu'un appel entrant arrive, la méthode onPause() est appelée. et onResume() est appelée lorsque l'appel est raccroché.

Cela fonctionnera même si l'utilisateur clique sur une notification envoyée à partir d'une autre application.

+1

Pas génial si vous voulez que la musique continue à jouer sans que l'activité soit au premier plan. – Syntax

5

Inclure la permission suivante dans le manifeste.

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

Puis

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

     } else if(state == TelephonyManager.CALL_STATE_IDLE) { 
      Play music 
     } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) { 
      Pause music 
     } 
     super.onCallStateChanged(state, incomingNumber); 
    } 
}; 


TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
if(mgr != null) { 
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 

Et être un bon citoyen android par la désinscription dans onDestroy

if(mgr != null) { 
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE); 
} 

Lorsque l'utilisateur ramassera appel alors CALL_STATE_OFFHOOK obtiendrez called.There vous pouvez écrire le code pour faire une pause de lecture.

+0

Cela fonctionne bien mais je veux arrêter l'audio seulement quand l'utilisateur accepte l'appel pas sur l'état qui sonne. – user1526671

+0

@ user1526671 Voir ma réponse mise à jour. –

+0

merci ... ça marche bien ...... – user1526671

Questions connexes