MediaPlayer停止代码 - 放在哪里?

时间:2014-02-19 19:35:47

标签: java android

在片段上,我有一系列播放声音的按钮。

我有一个ScrollView和一个位于屏幕底部的LinearLayout中的按钮。

我被困在哪里输入代码,以确保按钮按下媒体播放器停止。

这是我将托管代码的SoundsFragment.java文件,我的按钮名为button_stop。我已经为此调用了一个监听器,您可以看到,我只是不确定将媒体播放器停止代码放在何处。

如果您可以编辑此代码或提供一个非常棒的示例,那么我可以更好地理解Java布局。

package /example/;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.view.Menu;
import android.view.View.OnClickListener;
import android.widget.Button;


public class SoundsFragment extends Fragment implements OnClickListener {

    private static MediaPlayer mp = null;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_sounds, container, false);
        Button button1=(Button)rootView.findViewById(R.id.button_1);
        Button button2=(Button)rootView.findViewById(R.id.button_2);
        Button button_stop=(Button)rootView.findViewById(R.id.button_stop);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this); 
        button_stop.setOnClickListener(this); 

        return rootView;
    }

    public void onClick(View v) {
     int resId;
     switch (v.getId()) {
     case R.id.button_1:
       resId = R.raw.a;
       break;
     case R.id.button_2:
        resId = R.raw.b;
       break;
     default:
       resId = R.raw.a;
       break;
     }
     // Release any resources from previous MediaPlayer
     if (mp != null) {
        mp.release();
     }
     // Create a new MediaPlayer to play this sound
     mp = MediaPlayer.create(getActivity(), resId);
     mp.setLooping(true);
     mp.start();
    }

    @Override
    public void onDestroy() {
      if(null!=mp){
     mp.release();
      }
      super.onDestroy();
    }
}

1 个答案:

答案 0 :(得分:0)

您可能需要在声明后为button_stop创建一个不同的onClickListener:

button_stop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mp.stop();
            }
        });

我不确定它是否仍会调用默认的onClick()函数。如果是这样,只要按下button_stop以外的按钮,就可以创建一个单独的函数来调用:

public void onClick(View v) {
 int resId;
 switch (v.getId()) {
 case R.id.button_1:
   startMediaPlayer(R.raw.a);
   break;
 case R.id.button_2:
   startMediaPlayer(R.raw.b);
   break;
 case R.id.button_stop:
   mp.stop();
   break;
 default:
   startMediaPlayer(R.raw.a);
   break;
 }

}

public void startMediaPlayer(int resId){
  // Release any resources from previous MediaPlayer
 if (mp != null) {
    mp.release();
 }
 // Create a new MediaPlayer to play this sound
 mp = MediaPlayer.create(getActivity(), resId);
 mp.setLooping(true);
 mp.start();
}