0

我在我的 Android 应用程序中的一个方法中使用了这个 setOnClickListener()。这里我使用了一个在本地声明的 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 Object(mp.)。我可以直接使用,

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

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

PS:->如果我在所有方法中都使用 mp ,则不是在播放声音和说创建静态媒体播放器。

谢谢你。

4

2 回答 2

2

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

IE

像这样声明 mediaPlayer

MediaPlayer mp;

然后在您onClick或其他其他方法中像这样使用

并检查是否MediaPlayer已经存在

f(mp!=null&&mp.isPlaying()){
  mp.stop();
  mp.release();
}
mp=MediaPlayer.create(getApplicationContext(), sound);
mp.start();
于 2013-05-07T12:14:26.080 回答
2

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

于 2013-05-07T12:16:36.937 回答