2013-05-07 180 views
0

我在我的Android应用程序中的一个方法中使用此setOnClickListener()。在这里我使用了一个mediaPlayer,它是在本地声明的。这样我也有两个更多的方法,所有使用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

你在说什么方法?他们应该做什么? – Cornholio 2013-05-07 12:09:45

+0

Plz看到编辑的代码,我会创建两个这样的方法,并在我的代码中的某处使用它们。如果我调用这个方法,应该停止其他方法的声音。而已。 – sai 2013-05-07 12:15:48

+0

在这种情况下,您应该为全部应用全局MediaPlayer。 – Cornholio 2013-05-07 12:24:43

回答

2

每当您创建新玩家时,将其分配到Global MediaPlayer实例。这样

MediaPlayer mp; 

,然后在onClick或以外的其他方法

声明MediaPlayer的使用这样

并检查MediaPlayer是否已存在或不

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

工作谢谢花花公子 – sai 2013-05-07 12:27:33

1

尝试设计您的中介aplayer作为单身模式,然后你的mediaplayer将只通过整个应用创建一个实例对象。