如何从另一种方法停止声音(在播放时)

时间:2014-01-26 21:20:25

标签: java android swing concurrency inputstream

我的节目中播放了一些音乐。我希望它根据某些动作等来切换音乐。问题是我的音乐从一种方法开始播放,我试图从另一种方法或动作事件中阻止它。另一种方法无法找到我的剪辑对象,因为它不公开。是否可以将这个剪辑对象公开给我的全班?我试着为音乐制作另一堂课。有人可以指导我吗?谢谢,

public void playsound(String filepath){
    try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filepath));
            Clip clip = AudioSystem.getClip( );
            clip.open(audioInputStream);
            clip.start( );    
            }

        catch(Exception e)  {
            e.printStackTrace( );
        }
}


 public void dummyMethod(){

//when this method is call make the clip stop
}

3 个答案:

答案 0 :(得分:1)

为什么不将Clip对象设为实例/类范围的变量而不仅仅是局部变量,因此您可以在需要时调用clip.stop()clip.pause()方法将其关闭或暂停?

修改

// declare as an instance variable
private Clip clip; 

public void playsound(String filepath){
    try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filepath));
            // NOTICE: I am only initializing and NOT declaring (no capital Clip)
            clip = AudioSystem.getClip( );
            clip.open(audioInputStream);
            clip.start( );    
            }

        catch(Exception e)  {
            e.printStackTrace( );
        }
}

 // call stop method to stop clip form playing
 public void dummyMethod(){
    clip.stop();
 }

答案 1 :(得分:0)

使Clip clip成为一个类变量,然后从dummyMethod

调用clip.Stop()

答案 2 :(得分:0)

在方法之外声明 Clip 变量,
只需在方法上面写 Clip clip;