Android 10无法注册Sensor。TYPE_STEP_COUNTER

蒂埃里(Thierry)狩猎

我目前正在开发一个用于跟踪步骤的应用程序。

为了跟踪步骤,我正在使用以下手机传感器:Sensor.TYPE_STEP_COUNTER

这对于我测试过的所有设备都很好。最近,我有机会在Samsung S10设备上测试该应用程序,但它不再跟踪步骤,而可以在Samsung S9的Android 9上运行。它也可以在运行Android 6的Google Nexus上正常运行。

现在出现的问题是这是否与我的代码有关,或者是否与Android 10有关?

运行应用程序时发现以下警告:

  • 2020-01-06 17:13:30.381 24261-24261 /?D / SensorManager:registerListener失败(1):: 17,SAMSUNG计步器传感器,200000,0,

一些其他调试信息:

  • 传感器名称=“ SAMSUNG步进检测器传感器”,供应商=“ Samsung Inc.”,版本= 1,类型= 18,maxRange = 1.0,分辨率= 1.0,功率= 0.3,minDelay = 0

由于我测试了步数计数器传感器和步数检测器传感器都产生相同的结果,因此调试信息有些混杂。

我注册传感器的代码:

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

希望这可以帮助人们面对与我相同的问题。

蒂埃里(Thierry)狩猎

可能的解决方案

就我而言,这是权限的简单错误。在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TYPE_STEP_COUNTER无法解析或不是Android KitKat字段

来自分类Dev

在Android Lollipop上找不到Sensor.TYPE_STEP_DETECTOR

来自分类Dev

在后台服务中使用TYPE_STEP_COUNTER?

来自分类Dev

在Android服务中不能注册多个Sensor

来自分类Dev

Android BroadcastReceiver无法注册

来自分类Dev

Android BroadcastReceiver无法注册

来自分类Dev

Android Wear Step Counter crashing app

来自分类Dev

Android Wear Step Counter崩溃应用

来自分类Dev

在NEXUS5X 29API中找不到TYPE_STEP_COUNTER传感器

来自分类Dev

Android:Sensor ACCELEROMETER无法在服务中使用

来自分类Dev

注册/登录无法正常工作的android / PHP

来自分类Dev

Android服务未注册

来自分类Dev

Android KeyEvent未注册

来自分类Dev

Android服务未注册

来自分类Dev

Android注册表格

来自分类Dev

Android KeyEvent 未注册

来自分类Dev

Android 10上的Portsip SDK。注册或刷新未得到回复

来自分类Dev

无法在Windows 10 Android Studio上编译VLC Android

来自分类Dev

Android Studio:清单中的“无法解析符号”注册服务

来自分类Dev

Android库项目无法注册到Google Map

来自分类Dev

WSO2Emm-无法注册android设备

来自分类Dev

无法使用API级别16注册Android令牌

来自分类Dev

无法在Windows 10上运行Android Studio

来自分类Dev

Android 10 wifi连接无法到达网关

来自分类Dev

Android Studio无法在Windows 10上打开

来自分类Dev

Windows 10:无法CD $ ANDROID_HOME

来自分类Dev

Android Sensor.TYPE_LINEAR_ACCELERATION报告Galaxy S5上的错误值

来自分类Dev

Android,“注册”按钮向上移动

来自分类Dev

Android,“注册”按钮向上移动