Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在安卓音板中,如何使一个声音在点击另一个声音后停止播放?_Java_Android - Fatal编程技术网

Java 在安卓音板中,如何使一个声音在点击另一个声音后停止播放?

Java 在安卓音板中,如何使一个声音在点击另一个声音后停止播放?,java,android,Java,Android,如何修改此选项,以便在一个声音已播放且单击另一个声音时,前一个声音停止播放,新选择的声音开始播放?提前感谢大家的帮助。(这不是全部代码,只是最重要的代码) 使用对象成员变量保留当前播放的声音,以便可以调用stop(),并且不要忘记对其进行null检查。离开活动后,不要忘记释放()您的MediaPlayer对象 以下可能是更好的设计:将所有音频文件移动到资产目录,并将文件名放入按钮的标记中,使用相同的单击事件处理程序获取一个MediaPlayer对象的状态,如果它当前正在播放,则停止播放,将新文件

如何修改此选项,以便在一个声音已播放且单击另一个声音时,前一个声音停止播放,新选择的声音开始播放?提前感谢大家的帮助。(这不是全部代码,只是最重要的代码)


使用对象成员变量保留当前播放的声音,以便可以调用
stop()
,并且不要忘记对其进行null检查。离开活动后,不要忘记释放()您的
MediaPlayer
对象


以下可能是更好的设计:将所有音频文件移动到资产目录,并将文件名放入按钮的标记中,使用相同的单击事件处理程序获取一个MediaPlayer对象的状态,如果它当前正在播放,则停止播放,将新文件设置为从按钮的标记播放,然后播放该文件。这将显著减少重复的代码。

使用对象成员变量保留当前播放的声音,以便调用
stop()
,不要忘记对其进行空检查。离开活动后,不要忘记释放()您的
MediaPlayer
对象


以下可能是更好的设计:将所有音频文件移动到资产目录,并将文件名放入按钮的标记中,使用相同的单击事件处理程序获取一个MediaPlayer对象的状态,如果它当前正在播放,则停止播放,将新文件设置为从按钮的标记播放,然后播放该文件。这将显著减少重复代码。

使用单个
MediaPlayer
实例。您的设备在大多数设备上都会失败,因为分配给
MediaPlayer
的许多实例都会失败。而且,重复的代码是不好的。坏坏:

public class NewBoard extends Activity {
    private MediaPlayer player;
    private Resources res;

    private int buttonIds = { R.id.button01, R.id.button02, R.id.button03,
                              R.id.button04, R.id.button05, R.id.button06,
                              R.id.button07, R.id.button08, R.id.button09,
                              R.id.button10, R.id.button11, R.id.button12,
                              R.id.button13, R.id.button14, R.id.button15,
                              R.id.button16, R.id.button16, R.id.button17,
                              R.id.button18, R.id.button19, R.id.button20,
                              R.id.button21, R.id.button22, R.id.button23,
                              R.id.button24, R.id.button25 };

    private int soundIds =  { R.raw.sound01, R.raw.sound02, R.raw.sound03,
                              R.raw.sound04, R.raw.sound05, R.raw.sound06,
                              R.raw.sound07, R.raw.sound08, R.raw.sound09,
                              R.raw.sound10, R.raw.sound11, R.raw.sound12,
                              R.raw.sound13, R.raw.sound14, R.raw.sound15,
                              R.raw.sound16, R.raw.sound16, R.raw.sound17,
                              R.raw.sound18, R.raw.sound19, R.raw.sound20,
                              R.raw.sound21, R.raw.sound22, R.raw.sound23,
                              R.raw.sound24, R.raw.sound25 };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        //Kill this with fire -- just an unnecessary user annoyance.
        Toast.makeText(this, 
            "Thank you for using this App.", Toast.LENGTH_LONG).show();

        AdView layout = (AdView)findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest();
        adRequest.setTesting(true);
        layout.loadAd(adRequest);

        player = new MediaPlayer();
        res = getResources();

        for(int i = 0, n = buttonIds.length(); i < n; i++) {
            Button button = (Button)findViewById(buttonIds[i]);
            button.setOnClickListener(new SoundClickListener(soundIds[i]));
        }
    }

    private class SoundClickListener implements OnClickListener {
        private int id;

        public SoundClickListener(int soundId) {
            id = soundId;
        }

        public void onClick(View v) {
            player.reset();
            player.setDataSource(
                res.openRawResourceFd(id).getFileDescriptor());
            player.prepare();
            player.start();
        }
    }
}
public类NewBoard扩展活动{
私人媒体播放器;
私人资源;
private int buttonnids={R.id.button01,R.id.button02,R.id.button03,
R.id.button04,R.id.button05,R.id.button06,
R.id.button07,R.id.button08,R.id.button09,
右id按钮10,右id按钮11,右id按钮12,
右id按钮13,右id按钮14,右id按钮15,
R.id.按钮16,R.id.按钮16,R.id.按钮17,
右id按钮18,右id按钮19,右id按钮20,
R.id.button21,R.id.button22,R.id.button23,
R.id.button24,R.id.button25};
私有int soundIds={R.raw.sound01,R.raw.sound02,R.raw.sound03,
R.raw.sound04,R.raw.sound05,R.raw.sound06,
R.raw.sound07,R.raw.sound08,R.raw.sound09,
R.raw.sound10,R.raw.sound11,R.raw.sound12,
R.raw.sound13,R.raw.sound14,R.raw.sound15,
R.raw.sound16,R.raw.sound16,R.raw.sound17,
原声18,原声19,原声20,
R.raw.sound21,R.raw.sound22,R.raw.sound23,
R.raw.sound24,R.raw.sound25};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.main);
//用火杀死它——这只是一个不必要的用户烦恼。
Toast.makeText(这个,
“感谢您使用此应用。”,Toast.LENGTH_LONG).show();
AdView布局=(AdView)findViewById(R.id.AdView);
AdRequest AdRequest=新AdRequest();
地址:Setting(真);
布局。加载(adRequest);
player=新媒体播放器();
res=getResources();
对于(inti=0,n=buttonIds.length();i

像这样的。可以按原样编译,也可以不按原样编译。另外,正如评论所说,用火杀死
土司
——这很烦人

使用单个
MediaPlayer
实例。您的设备在大多数设备上都会失败,因为分配给
MediaPlayer
的许多实例都会失败。而且,重复的代码是不好的。坏坏:

public class NewBoard extends Activity {
    private MediaPlayer player;
    private Resources res;

    private int buttonIds = { R.id.button01, R.id.button02, R.id.button03,
                              R.id.button04, R.id.button05, R.id.button06,
                              R.id.button07, R.id.button08, R.id.button09,
                              R.id.button10, R.id.button11, R.id.button12,
                              R.id.button13, R.id.button14, R.id.button15,
                              R.id.button16, R.id.button16, R.id.button17,
                              R.id.button18, R.id.button19, R.id.button20,
                              R.id.button21, R.id.button22, R.id.button23,
                              R.id.button24, R.id.button25 };

    private int soundIds =  { R.raw.sound01, R.raw.sound02, R.raw.sound03,
                              R.raw.sound04, R.raw.sound05, R.raw.sound06,
                              R.raw.sound07, R.raw.sound08, R.raw.sound09,
                              R.raw.sound10, R.raw.sound11, R.raw.sound12,
                              R.raw.sound13, R.raw.sound14, R.raw.sound15,
                              R.raw.sound16, R.raw.sound16, R.raw.sound17,
                              R.raw.sound18, R.raw.sound19, R.raw.sound20,
                              R.raw.sound21, R.raw.sound22, R.raw.sound23,
                              R.raw.sound24, R.raw.sound25 };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        //Kill this with fire -- just an unnecessary user annoyance.
        Toast.makeText(this, 
            "Thank you for using this App.", Toast.LENGTH_LONG).show();

        AdView layout = (AdView)findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest();
        adRequest.setTesting(true);
        layout.loadAd(adRequest);

        player = new MediaPlayer();
        res = getResources();

        for(int i = 0, n = buttonIds.length(); i < n; i++) {
            Button button = (Button)findViewById(buttonIds[i]);
            button.setOnClickListener(new SoundClickListener(soundIds[i]));
        }
    }

    private class SoundClickListener implements OnClickListener {
        private int id;

        public SoundClickListener(int soundId) {
            id = soundId;
        }

        public void onClick(View v) {
            player.reset();
            player.setDataSource(
                res.openRawResourceFd(id).getFileDescriptor());
            player.prepare();
            player.start();
        }
    }
}
public类NewBoard扩展活动{
私人媒体播放器;
私人资源;
private int buttonnids={R.id.button01,R.id.button02,R.id.button03,
R.id.button04,R.id.button05,R.id.button06,
R.id.button07,R.id.button08,R.id.button09,
右id按钮10,右id按钮11,右id按钮12,
右id按钮13,右id按钮14,右id按钮15,
R.id.按钮16,R.id.按钮16,R.id.按钮17,
右id按钮18,右id按钮19,右id按钮20,
R.id.button21,R.id.button22,R.id.button23,
R.id.button24,R.id.button25};
私有int soundIds={R.raw.sound01,R.raw.sound02,R.raw.sound03,
R.raw.sound04,R.raw.sound05,R.raw.sound06,
R.raw.sound07,R.raw.sound08,R.raw.sound09,
R.raw.sound10,R.raw.sound11,R.raw.sound12,
R.raw.sound13,R.raw.sound14,R。