如何阻止媒体播放器从其他方法播放

时间:2013-05-07 12:04:39

标签: android android-mediaplayer

我在我的Android App中的一个方法中使用了这个setOnClickListener()。我使用了一个在本地声明的A mediaPlayer。 像这样我还有两个方法都使用mediaplayer。我还宣布了一个全球媒体播放器&在我的onCreate()的各个地方使用它。

public void setOnClickListenerWithMedia(ImageView iv,final int drawable,final int sound) {
    iv.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            stopAllSoundsAndClearMemory();
        switchCases();
        iv_gone();
        fullscreenImage.setVisibility(View.VISIBLE);
        fullscreenImage.setImageResource(drawable);
        MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), sound);
        mediaPlayer.start();
        }
    });
}

我的问题是,如果我点击任何其他方法,我必须停止MediaPlayer。对于全局声明的MediaPlayer对象(mp。)。我可以直接使用,

if(mp!=null&&mp.isPlaying()){
  mp.stop();
}

我可以阻止它。但我也希望停止所有方法的声音。怎么可能?

P.S: - >如果我在所有方法中使用mp,它就不会播放声音&说要创建静态mediaPlayer。

谢谢。

2 个答案:

答案 0 :(得分:2)

每次创建新播放器时,都会将其分配给全局MediaPlayer实例。

像这样声明mediaPlayer

MediaPlayer mp;

然后在您的onClick或其他方法中使用此类

并检查MediaPlayer是否已存在

f(mp!=null&&mp.isPlaying()){
  mp.stop();
  mp.release();
}
mp=MediaPlayer.create(getApplicationContext(), sound);
mp.start();

答案 1 :(得分:2)

尝试将您的媒体播放器设计为单身模式,然后您的媒体播放器将通过整个应用程序仅创建一个实例对象。