gpt4 book ai didi

Android 每隔 n 毫秒播放一次提示音

转载 作者:行者123 更新时间:2023-11-30 00:59:14 29 4
gpt4 key购买 nike

我创建了一个类似于节拍器的 Android 应用程序。实际上我想每 n 毫秒播放一次哔声。为此,我使用了 MediaPlayer 和计时器。

我的代码是这样的:

解决方案 1:

start_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Timer timer = new Timer("MetronomeTimer", true);
TimerTask tone = new TimerTask() {
@Override
public void run() {
//Log
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss:SS");
Date date = new Date();
j++;
Log.i("Beep", df.format(date) + "_____" + j);
//Play sound
music = MediaPlayer.create(MainActivity.this, R.raw.beep);
music.start();
}
};
timer.scheduleAtFixedRate(tone, 500, 500); // every 500 ms
}
});

当我运行这段代码时,一切正常。但循环15次后,Log行工作正常,但声音静音。偶尔每隔 15 或 20 个 Log,声音就会播放和停止。

解决方案 2:

我移动这条线:

music = MediaPlayer.create(MainActivity.this, R.raw.beep);

TimerTask(像这样):

start_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
music = MediaPlayer.create(MainActivity.this, R.raw.beep);

Timer timer = new Timer("MetronomeTimer", true);
TimerTask tone = new TimerTask() {
@Override
public void run() {
//Log
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss:SS");
Date date = new Date();
j++;
Log.i("Beep", df.format(date) + "_____" + j);
//Play sound
music.start();
}
};
timer.scheduleAtFixedRate(tone, 500, 500); // every 500 ms
}
});

此代码也可以重复直到 500 毫秒。当周期时间减少到 400 或 300 ms 时,每 2 Log,发出一声蜂鸣声。

如何修复这段工作正常的代码。

最佳答案

SoundPool更适合播放从内存中加载的短声音。我在实现 MediaPlayer 时也遇到了问题,SoundPool 只是一种更简单且延迟更低的体验。

如果您将 .setMaxStreams() 设置为大于 1 的数字,您应该不会听到任何静音。尝试和实验。

关于Android 每隔 n 毫秒播放一次提示音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684572/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com