2017-05-06 107 views
0

我开发了一个Android应用程序,用户可以在某个片段中点击按钮来播放声音。但是,当您退出此片段或关闭应用程序时,它会继续播放。如果退出片段或关闭应用程序,我该如何停止它?Android:Mediaplayer一直在后台播放。如何阻止它?

这是我怎么打了声:

public class PageFragment_Bon extends Fragment implements View.OnClickListener{ 

    public static final String ARG_PAGE = "ARG_PAGE"; 

    private int mPage; 
    private Button start, stop, replay; 
    private MediaPlayer mediaPlayer; 
    int [] filer = new int[18]; 


    public static PageFragment_Bon newInstance(int page) { 
     Bundle args = new Bundle(); 
     args.putInt(ARG_PAGE, page); 
     PageFragment_Bon fragment = new PageFragment_Bon(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mPage = getArguments().getInt(ARG_PAGE); 
      } 

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

     start = (Button) view.findViewById(R.id.start); 
     start.setOnClickListener(this); 

     stop = (Button) view.findViewById(R.id.stop); 
     stop.setOnClickListener(this); 

     replay = (Button) view.findViewById(R.id.replay); 
     replay.setOnClickListener(this); 

     if(filer[mPage] != 0){ 
      start.setVisibility(View.VISIBLE); 
      stop.setVisibility(View.VISIBLE); 
      replay.setVisibility(View.VISIBLE); 
      mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), filer[mPage]); 
     } 

    @Override 
    public void onClick(View v) { 

     if(v == start){ 
      mediaPlayer.start(); 
     } 

     else if(v == stop){ 
      mediaPlayer.pause(); 
     } 

     else if(v == replay){ 
      mediaPlayer.seekTo(0); 
      mediaPlayer.start(); 
     } 
    } 

    } 

回答

1

H123,你需要在onPause()和的onResume(处理)事件片段。

的onPause:

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    if(mediaplayer != null) 
    { 
     mediaplayer.pause(); 
     media_length = mediaplayer.getCurrentPosition(); 
    } 

} 

的onResume:

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 

    if(mediaplayer != null) 
    { 
     mediaplayer.seekTo(media_length); 
     mediaplayer.start(); 
    } 

} 

更改的onClick方法如下图所示,

@Override 
public void onClick(View v) { 

    if(mediaPlayer == null) 
     mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), filer[mPage]);//add this line 
    if(v == start){ 
     mediaPlayer.start(); 
    } 

    else if(v == stop){ 
     mediaPlayer.pause(); 
    } 

    else if(v == replay){ 
     mediaPlayer.seekTo(0); 
     mediaPlayer.start(); 
    } 
} 
+0

我怎么放的 'onClick();'现在它开始自动播放 –

+0

您删除在onCreate mediaPlayer = MediaPlayer.create(getActivity()。getBaseContext(),filer [mPage]))创建mediaplayer obj;并在onclick –

+0

添加此行现在我更新我的答案见上面更改您的onClick像这样 –