Android - 快速点击后,点击按钮的按钮停止
问题描述:
我见过this后,但没有任何工作。这里是我当前的代码:Android - 快速点击后,点击按钮的按钮停止
private static MediaPlayer mp;
public void onClick(View v) {
mp = new MediaPlayer();
try {
mp.reset();
AssetFileDescriptor afd;
afd = getAssets().openFd("click.mp3");
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();
} catch (IllegalArgumentException | IllegalStateException | IOException e) {
e.printStackTrace();
}
increment(button, key, this);
}
当我快速地按一下按钮,声音停止
答
要解决它,你只需要添加:
if(mediaPlayer == null)
您创建一个新的MediaPlayer
之前。所以,在你的情况下:
if(mediaPlayer == null)
mediaPlayer = new MediaPlayer();
并确保mediaPlayer
是一个全局变量。
答
就拿媒体播放器创建代码到其他地方最好的onCreate。无论如何,当你知道你要使用相同的数据源时,每次用户点击按钮时都不需要初始化数据源。
private static MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Set conntent view and other codes
try {
mp = new MediaPlayer();
AssetFileDescriptor afd;
afd = getAssets().openFd("click.mp3");
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
} catch (IllegalArgumentException | IllegalStateException | IOException e) {
e.printStackTrace();
}
}
public void onClick(View v) {
if (mp.isPlaying()) {
mp.stop();
mp.reset();
}
mp.start();
increment(button, key, this);
}
@Override
public void onDestroy() {
super.onDestroy();
if (mp != null) {
mp.reset();
mp.release();
}
}
第二个选项是禁用点击按钮。但这是不正确的方式 –
我得到警告“布尔型”mp == null'总是'false'“。这是真的? –
请声明mp是全局变量 –