![](/img/trans.png)
[英]Google-Fit Sensor.TYPE_STEP_COUNTER equivalent in Xamarin
[英]Android 10 cannot register Sensor.TYPE_STEP_COUNTER
我目前正在開發一個應用程序來跟蹤步驟。
為了跟蹤步驟,我使用手機的以下傳感器: Sensor.TYPE_STEP_COUNTER
這適用於我測試過的所有設備。 最近我有機會在三星 S10 設備上測試該應用程序,但它不再跟蹤步驟,而它可以在三星 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);
}
希望這可以幫助與我面臨同樣問題的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.