我正在尝试创造一个节拍器的声音,然而,不起作用的是静音的能力。我希望能够在不停止TimerTask的情况下将其静音,因为我希望速率在取消静音后保持一致。下面是我的代码: public class Metronome {
private boolean mute;
private boolean playing = false;
private Timer mainTimer;
private SoundPool mSoundPool;
int mSoundID;
public Metronome(Context context) {
我已经在Kotlin中使用Timer类为安卓应用程序创建了StopWatch函数。我正在使用activity?.runOnUiThread在应用程序栏中显示时间(不在视图中)。有没有什么简单的方法可以停止计时器并将其设置回0。多线程是必要的吗?
下面是我的函数:
private fun stopwatch(isCanceled: Boolean) {
val timer = Timer()
val tt: TimerTask = object : TimerTask() {
override fun run() {
num +=
我有一个像这样的类Render
public class Render {
private Timer timer;
private TimerTask timerTask;
@Override
public void refresh() {
if (timerTask != null)
timerTask.cancel();
timerTask = new LoadTask();
timer.schedule(timerTask, 1000);
}
private c
我想重复播放音频文件,其中说“搜索”每1分钟。当CASE_STATUS_SEARCHING将更改为其他文件时,我如何实现它以停止该文件?我使用了TIMER和SOUNDPOOL:
public class Player {
private static SoundPool soundPool;
private static int searching;
final Timer timer = new Timer();
public void searching () {
timer.schedule(new TimerTask() {
我目前正在尝试在我的安卓应用程序中设置一个每30秒扫描一次WiFi接入点的WiFi扫描。
我已经使用了Timer和TimerTask来让扫描以我需要的时间间隔正确运行。
但是,我希望能够在用户按下按钮时停止并开始扫描,而我当前在停止然后重新启动计时器和TimerTask时遇到了问题。
以下是我的代码
TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();
public void doWifiScan(){
scanTask = new TimerTask() {
pu
我正在尝试阅读这本关于安卓编程的书,其中一个例子是如何使用SoundPool播放声音。
然而,它总是在LogCat中给出相同的错误:
AudioFlinger could not create track, status -12.
我在谷歌上搜索了这个错误,对于其他人来说,似乎是因为试图播放太多的声音。但是我的在第一次尝试播放声音时失败了。在使用MediaPlayer时,我得到了同样的错误。是不是有什么东西我没有在AVD中正确设置?音频播放支持已打开。
我也把它加载到我的手机上,它工作得很好。它只在仿真器中失败。显然,这是由于模拟器中的一个错误,如果启用了快照,声音将不会播放。
创建了一个新的
在安卓系统中,SoundPool.play接口允许播放音效。我想知道我应该如何改变参数来实现多普勒效果:
public final int play (
int soundID,
float leftVolume,
float rightVolume,
int priority,
int loop,
float rate)
在我的安卓代码中,我通过调用Timer.schedule(myTask,0,1000)来响应按钮按下,它调用myTimerTask::run(),如下所示:
嵌套在我的活动中:
class mytimerTask extends TimerTask {
@Override
public void run() {
//update my progress bar
//if progress bar is full, i want to call a function that is in my activity
}
}
我可以直接从Time
据我所知,我的应用程序运行得很好,但我注意到SoundPool经常在日志中报告这个错误。
E/SoundPool(28182): 2 mChannels.erase can not get the lock
有什么想法会导致这种情况吗?我尝试删除我的线程同步代码,但我仍然收到错误。
这是使用运行安卓2.3.6的Galaxy S2 (SC-02C)观察到的。
我在我的安卓代码中添加了一个TimerTask:
private class MyTimerTask extends TimerTask {
@Override
public void run() {
//do some task...
}
}
并按如下方式命名:
myTimer = new Timer();
//set the rate as 1 min
myTimer.scheduleAtFixedRate(new MyTimerTask(), 0,
60*1000);
现在,如果我关闭自动时间更新(从网络)