Android Studio gelen aramalarda çalan sesi veya müziği durdurma nasıl yapılır?

ismailsarp (6010) 7 yıl önce sordu

Android Studio gelen aramalarda çalan sesi veya müziği durdurma nasıl yapılır?

Android Studio ile bir uygulama yaptım. Yaptığım uygulama bir müzik veya ses içeriyor. Uygulama içerisinde müzik veya ses çalarken bir arama geldiğinde, çalan ses otomatik olarak durmuyor ve konuşurken arka planda çalmaya devam ediyor. Android studio üzerinde gelen arama olduğunda çalan sesin veya müziğin otomatik olarak durmasını nasıl sağlayabilirim?

Toplam 1 cevap


ismailsarp (6010) 7 yıl önce cevapladı

Android Studio ile bir program yazdığınızda çalan sesin arka planda durması için gerekli tanımlamalar yapabilirsiniz. Bu tanımlamalar ile uygulama gelen aramaları anlayabilecek ve otomatik olarak çalan sesi veya müziği durdurabilecek, telefon ile konuşma bittiğinde müzik veya ses tekrar çalmaya devam edecektir.

Aşağıdaki adımları uyguladığınızda arama geldiğinde sesin otomatik olarak durması gerekir.

 

  • ilk olarak AndroidManifest.xml dosyası içerisine aşağıdaki kodu ekleyerek, uygulamanın gelen çağrıları anlamasına izin verin.
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

     

     

     

     

  • Şimdi çalıştığınız java sınıfına aşağıdaki global değişkenleri tanımlayın.
    private boolean ongoingCall = false;
    private PhoneStateListener phoneStateListener;
    private TelephonyManager telephonyManager;

     

  • Şimdi bir callStateListener isminde bir metot oluşturun.Daha sonra bu metodu ilgili yerde çağıracağız. ( // ile ilgili kodun ingilizce açıklamarı mevcuttur )
    //Handle incoming phone calls
    private void callStateListener() {
      // Get the telephony manager
      telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
      //Starting listening for PhoneState changes
      phoneStateListener = new PhoneStateListener() {
          @Override
          public void onCallStateChanged(int state, String incomingNumber) {
              switch (state) {
                  //if at least one call exists or the phone is ringing
                  //pause the MediaPlayer
                  case TelephonyManager.CALL_STATE_OFFHOOK:
                  case TelephonyManager.CALL_STATE_RINGING:
                      if (mediaPlayer != null) {
                          pauseMedia();
                          ongoingCall = true;
                      }
                      break;
                  case TelephonyManager.CALL_STATE_IDLE:
                      // Phone idle. Start playing.
                      if (mediaPlayer != null) {
                          if (ongoingCall) {
                              ongoingCall = false;
                              resumeMedia();
                          }
                      }
                      break;
              }
          }
      };
      // Register the listener with the telephony manager
      // Listen for changes to the device call state.
      telephonyManager.listen(phoneStateListener,
              PhoneStateListener.LISTEN_CALL_STATE);
    }
    

     

  • Şimdi oluşturduğumuz metodu çağıralım. Uygulama başladığında metodun devreye girmesi için onCreate() altında motodu çağırabiliriz.
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.[layoutismi]);
    
            //stop soundplayer when incoming calls
            callStateListener();
    
    ...
    }

     

Tüm bu adımlardan sonra uygulama artık arama durumunu anlayabilecek ve arama sırasında çalan sesi durdurup, arama bittiğinde çalan sesi tekrar devam ettirebilecektir.