Android 安卓处理器重置
我使用以下代码和处理程序在设备完全平坦(加速度计x、y值)5秒钟后发出嘟嘟声。然后,如果设备仍然是平坦的,声音每5秒就会再现一次。问题是,我第一次将设备放平时,代码工作正常,但如果它不是放平的,并尝试再次放平,则处理程序不工作,声音立即产生,并跟随“lastBip”语句。我想每次设备不平坦时,我必须尝试重置处理器,但我不知道如何重置。我想要的是,当我的设备是平坦的,声音应该在我的应用程序运行的所有时间5秒后工作,而不仅仅是在我第一次打开它时。有人知道我必须对代码进行哪些更改才能正常工作吗?先谢谢你Android 安卓处理器重置,android,handler,reset,Android,Handler,Reset,我使用以下代码和处理程序在设备完全平坦(加速度计x、y值)5秒钟后发出嘟嘟声。然后,如果设备仍然是平坦的,声音每5秒就会再现一次。问题是,我第一次将设备放平时,代码工作正常,但如果它不是放平的,并尝试再次放平,则处理程序不工作,声音立即产生,并跟随“lastBip”语句。我想每次设备不平坦时,我必须尝试重置处理器,但我不知道如何重置。我想要的是,当我的设备是平坦的,声音应该在我的应用程序运行的所有时间5秒后工作,而不仅仅是在我第一次打开它时。有人知道我必须对代码进行哪些更改才能正常工作吗?先谢谢
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (x > -0.1 && x < 0.1 && y > -0.1 && y < 0.1 && System.currentTimeMillis() - lastBip > bipRate) {
AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_RING);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_RING);
float volume = streamVolumeCurrent / streamVolumeMax;
lastBip = System.currentTimeMillis();
soundPool.play(bipSoundID, volume, volume, 1, 0, 1);
}
}
}, 5000);
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
如果(x>-0.1&&x<0.1&&y>-0.1&&y<0.1&&System.currentTimeMillis()-lastBip>bipRate){
AudioManager管理器=(AudioManager)getSystemService(Context.AUDIO\u服务);
float streamVolumeCurrent=mgr.getStreamVolume(AudioManager.STREAM_环);
float streamVolumeMax=mgr.getStreamMaxVolume(AudioManager.STREAM_环);
浮动体积=流量体积当前值/流量体积最大值;
lastBip=System.currentTimeMillis();
soundPool.play(双声音ID,音量,音量,1,0,1);
}
}
}, 5000);
x=event.values[0];y=事件值[1];加速度计给出的值。当x,y接近0时,表示设备为平面。您知道如何在设备不平面时重置处理程序吗?