2

У меня вопрос, я использую класс, который расширяет фрагменты для воспроизведения музыки через MusicPlayer, в этом классе, используя PhoneStateListener и TelephonyManager, чтобы приостановить музыку, если приходит вызов, все в порядке, сомневаюсь, что заключается в том, что когда я запускаю приложение, песня начинается автоматически и хотела бы избежать этого, любые предложения? здесь часть моего кода:Android Fragments и TelephonyManager

PS: Извините за мой плохой английский

public class FragmentPlaySong extends Fragment implements MediaPlayer.OnCompletionListener { 

private MediaPlayer mediaPlayer; 
... 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_play_song, container, false); 

    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setOnCompletionListener(this); 
    ... 
    ... 

    //Service MediaPlayer pause when Incoming Call 
    PhoneStateListener phoneStateListener = new PhoneStateListener(){ 
     public void onCallStateChanged(int state, String incomingNumber){ 
      if (state == TelephonyManager.CALL_STATE_RINGING) { 
       if (mediaPlayer != null){ 
        if (mediaPlayer.isPlaying()){ 
         mediaPlayer.pause(); 
        } 
       } 
      } else if(state == TelephonyManager.CALL_STATE_IDLE) { //here start song when start application 
       if (mediaPlayer != null){ 
        if (!mediaPlayer.isPlaying()){ 
         mediaPlayer.start(); 
        } 
       } 
      } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) { 
       if (mediaPlayer != null){ 
        if (mediaPlayer.isPlaying()){ 
         mediaPlayer.pause(); 
        } 
       } 
      } 
      super.onCallStateChanged(state, incomingNumber); 
     } 
    }; 

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

    return view; 
} 

ответ

0

ли он начать работу по коду в этом блоке?

 } else if(state == TelephonyManager.CALL_STATE_IDLE) { //here start song when start application 
      if (mediaPlayer != null){ 
       if (!mediaPlayer.isPlaying()){ 
        mediaPlayer.start(); 
       } 
      } 
     } 

Если вам, возможно, просто нужно иметь флаг, например.

private boolean mPlaying; 

Установите его true когда музыка запущена вручную пользователем измените выше блок на что-то вроде:

 } else if(state == TelephonyManager.CALL_STATE_IDLE) { //here start song when start application 
      if (mediaPlayer != null){ 
       if (mPlaying && !mediaPlayer.isPlaying()){ 
        mediaPlayer.start(); 
       } 
      } 
     } 
+0

ок ок, это было что-то просто. Спасибо. –