【问题标题】:Vibrate the device in the Sensor mode在传感器模式下振动设备
【发布时间】:2013-05-16 06:03:52
【问题描述】:

我已经在我的应用程序中实现了传感器功能。现在 2 分钟后振动处于激活模式,因此设备得到一些运动并且传感器开始工作。我希望传感器只有在用户手动移动时才会激活设备。应该没有振动对传感器的影响。以下是我的代码。感谢 Advance...

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");

}

【问题讨论】:

    标签: android sensors


    【解决方案1】:

    所以如果我没看错的话,你想打开加速度计,但不要因为设备的振动而改变它——以某种方式过滤掉它。那真的是不可能的。框架没有办法做到这一点,任何尝试这样做都是困难的——振动器的强度会因设备而异,甚至在同一设备的调用之间也会有所不同。而且他们并没有真正校准这些东西——真的没有办法准确地做到这一点。

    【讨论】:

    • 是的,你是对的..它应该因设备而异。我只在三星 Galaxy S3 中遇到过这个问题。在其他设备中,振动对传感器没有影响。请帮助我解决这个问题。
    • 请 Gabe 帮我解决这个问题..由于它我的应用程序没有交付给客户... :(
    • 我建议测量它的振动速度并进行一些数字信号处理 - 使用带隙滤波器来允许除该值范围之外的所有内容。
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多