我目前正在开发一个用于跟踪步骤的应用程序。
为了跟踪步骤,我正在使用以下手机传感器:Sensor.TYPE_STEP_COUNTER
这对于我测试过的所有设备都很好。最近,我有机会在Samsung S10设备上测试该应用程序,但它不再跟踪步骤,而可以在Samsung S9的Android 9上运行。它也可以在运行Android 6的Google Nexus上正常运行。
运行应用程序时发现以下警告:
一些其他调试信息:
由于我测试了步数计数器传感器和步数检测器传感器都产生相同的结果,因此调试信息有些混杂。
我注册传感器的代码:
private SensorEventListener sensorEventListener = new SensorEventListener() {
/**
* This Method gets called on each Sensor Trigger event
*
* @param sensorEvent Event created by Sensor
*/
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
//ME COUNTING STEPS
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
//Nothing to do here
}
};
private SensorManager sensorManager;
/**
* Function that initialises all the Sensors
* Sets SensorManager
* Sets Sensor to monitor to STEP Counter
* Also Registers the Sensor
*/
private void initSensors() {
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
assert sensorManager != null;
Sensor stepSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (stepSensor == null) {
createToastMessage("Sensor not found.");
selectedFragment = new NoSensor_Fragment();
activeFragment = 5;
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
selectedFragment).commit();
} else {
sensorManager.registerListener(sensorEventListener, stepSensor,
SensorManager.SENSOR_DELAY_NORMAL);
hasSensor = true;
}
}
我找到了解决此问题的方法
就我而言,这是权限的简单错误。在Android 10上,您需要询问权限以获取对步进传感器的访问权限。在阅读Android 10的更改时,我忽略了这一点。我在Manifest.xml中添加了以下内容
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
并在onCreate方法中添加了以下内容:
if(ContextCompat.checkSelfPermission(this,
Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
//ask for permission
requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
}
希望这可以帮助人们面对与我相同的问题。
可能的解决方案
就我而言,这是权限的简单错误。在Android 10上,您需要询问权限以获取对步进传感器的访问权限。在阅读Android 10的更改时,我忽略了这一点。我在Manifest.xml中添加了以下内容
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
并在onCreate方法中添加了以下内容:
if(ContextCompat.checkSelfPermission(this,
Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
//ask for permission
requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
}
希望这可以帮助人们面对与我相同的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句