以下是我使用的示例代码:
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
private long prevTime=0;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
}
Run Code Online (Sandbox Code Playgroud)
我需要的后续系统时间戳值的差在OnSensorChanged(SensorEvent函数事件)的传感器开始之后.
public void onSensorChanged(SensorEvent event) {
long systemTimeStamp= SystemClock.elapsedRealtimeNanos();
long timeDifference = (systemTimeStamp - prevTime) / 1000000; //msec
Log.e("PROBLEM",timeDifference);
prevTime=systemTimeStamp;
}
Run Code Online (Sandbox Code Playgroud)
上面的差异在SENSOR_DELAY_FASTEST上多次变为0 //为什么?
后续时间戳的差异报告为0,但根据定义,它应以纳秒为单位报告时间,因此在5微秒时差异不应为零.如何获得非零差异,或者是否有其他方法可以以5微秒的精度获得系统时间戳差异.
请注意,event.timestamp报告传感器的时间戳,但我需要OnSensorChanged(SensorEvent事件)中的系统时间戳,以通过与实际系统时间戳进行比较来测量传感器时间戳的准确度.
我正在我的应用程序中启动服务.点击服务我正在启动一项活动.当我们转到任何应用程序并按下后退按钮并退出应用程序时,服务点击事件正常工作.
但是,如果我们在任何应用程序中然后按主页按钮并单击该服务,则不会启动该活动.如果我再单击它2次,它会打开活动,有时它也会打开应用程序.
所以我无法理解按下后退按钮和主页按钮之间的区别.