android - AccelerationSensor.accelerationchanged()使应用变慢

标签 android crash accelerometer android-sensors

在我的应用中,我使用AccelerationSensor.accelerationchanged(xAccel,yAccel,zAccel)API
问题是该方法在任何轴上的每个o.oooo1变化都被称为,因此应用程序变得非常缓慢,有时甚至变得“无​​响应”

有没有一种方法可以检查整数部分是否已更改并放弃任何十进制更改?

最佳答案

这就是我在执行的服务的onStartCommand()中所做的事情

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

这是我正在处理数据的功能,虽然重量很轻,但是应该使用阈值为您提供一个思路。就我而言,我真的只需要稍微了解一下设备,就我而言,差异值大约需要为1.75G,但对于您来说可能有所不同。
@Override
public void onSensorChanged(SensorEvent event) {


    if(last[0] == 0.0f &&
       last[1] == 0.0f &&
       last[2] == 0.0f){

        last[0] = event.values[0];
        last[1] = event.values[1];
        last[2] = event.values[2];

        return;
    }

    float diff = 0f;

    if(Math.abs(last[0] - event.values[0]) > differenceValue ||
       Math.abs(last[1] - event.values[1]) > differenceValue ||
           Math.abs(last[2] - event.values[2]) > differenceValue){

        Log.d(TAG,"G values are "+event.values[0]+" "+event.values[1]+" "+event.values[2]);
        Log.d(TAG,"Last G values are "+last[0]+" "+last[1]+" "+last[2]);



        diff = Math.abs(last[0] - event.values[0]);

        if(diff < Math.abs(last[1] - event.values[1])){
           diff = Math.abs(last[1] - event.values[1]);
        }

        if(diff < Math.abs(last[2] - event.values[2])){
           diff = Math.abs(last[2] - event.values[2]);
        }

        Log.d(TAG,"Sensor difference: "+diff);

        //Do what ever processing you need here

    }

    last[0] = event.values[0];
    last[1] = event.values[1];
    last[2] = event.values[2];
}

关于android - AccelerationSensor.accelerationchanged()使应用变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14966429/

相关文章:

java - 格式化日期并返回日期,而不是字符串

android - 通过 Google Play Developer API 删除 Android 订阅列表

haskell - 如何阻止 Haskell 运行时解释器库 Hint 使 GHC 解释器崩溃?

ios - Swift - 发布构建崩溃,除非我关闭优化

ios - 哪些 Action 由 iOS 上的加速度计管理?

java - 从 AsyncTask 的 onPostExecute() 将自定义 View 添加到布局后未恢复自定义 View

android - 在 Android 终端中运行 Python for Android (Qpython)

crash - 在SQL Job Agent中打开SSIS时SSMS崩溃

iphone - 检测用户的旋转运动

ios - CMAccelerometerData 和 CMDeviceMotion 之间的区别