我在我的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。
谢谢。
答案 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)
尝试将您的媒体播放器设计为单身模式,然后您的媒体播放器将通过整个应用程序仅创建一个实例对象。