0

私は自分のアプリにセンサー機能を実装しました.2分後に振動がアクティブモードになり、デバイスが動き、センサーが動作するようになります.ユーザーが手動でデバイスを動かしたときにのみセンサーがアクティブになるようにしたい.センサーへの振動の影響はないはずです。以下は私のコードです。事前に感謝します...

vib= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

vib.vibrate(val);

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {
        float x=event.values[0];
        float y=event.values[1];
        float z=event.values[2];


        float deltaX = Math.abs(mLastX - x);
        float deltaY = Math.abs(mLastY - y);
        float deltaZ = Math.abs(mLastZ - z);

        if(deltaX>NOISE){
            compareX();
        }
        else if(deltaY>NOISE){
            compareX();
        }
        else if(deltaZ>NOISE){

            compareX();
        }

        mLastX = x;
        mLastY = y;
        mLastZ = z;
    }
}

private void compareX() {
    mStartTime = SystemClock.uptimeMillis();
    mHandler.removeCallbacks(mUpdateTimeTask);
    mHandler.postDelayed(mUpdateTimeTask, 100);
    vib.cancel();
    stopService(new Intent(getApplicationContext(),AlarmService.class));
    System.out.println("Movemenet>><><><><><><>><Occur");

}
4

1 に答える 1