我有一个问题,我正在使用一个通过MusicPlayer扩展片段来播放音乐的类,在这个类中使用PhoneStateListener和TelephonyManager来暂停音乐,如果有电话进来,一切都好,怀疑当我启动应用程序时,歌曲会自动开始,希望避免这种情况,有什么建议吗??下面是我的代码的一部分:
附言:很抱歉我的英语不好
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;
}发布于 2014-09-24 07:18:21
它是由这个代码块中的代码启动的吗?
} 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();
}
}
}https://stackoverflow.com/questions/26006031
复制相似问题