Android 安卓处理器重置

Android 安卓处理器重置,android,handler,reset,Android,Handler,Reset,我使用以下代码和处理程序在设备完全平坦(加速度计x、y值)5秒钟后发出嘟嘟声。然后,如果设备仍然是平坦的,声音每5秒就会再现一次。问题是,我第一次将设备放平时,代码工作正常,但如果它不是放平的,并尝试再次放平,则处理程序不工作,声音立即产生,并跟随“lastBip”语句。我想每次设备不平坦时,我必须尝试重置处理器,但我不知道如何重置。我想要的是,当我的设备是平坦的,声音应该在我的应用程序运行的所有时间5秒后工作,而不仅仅是在我第一次打开它时。有人知道我必须对代码进行哪些更改才能正常工作吗?先谢谢

我使用以下代码和处理程序在设备完全平坦(加速度计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时,表示设备为平面。您知道如何在设备不平面时重置处理程序吗?