Android 10 无法注册 Sensor.TYPE_STEP_COUNTER

2023-11-24

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

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

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

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

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

  • 2020-01-06 17:13:30.381 24261-24261/? D/SensorManager:registerListener 失败 (1)::17,三星计步器传感器,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 的更改时忽略的事情。我将以下内容添加到清单.xml

    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

并在其中添加了以下内容onCreate Method:

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 的更改时忽略的事情。我将以下内容添加到清单.xml

    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

并在其中添加了以下内容onCreate Method:

if(ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
        //ask for permission
        requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
    }

希望这可以帮助那些和我面临同样问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 10 无法注册 Sensor.TYPE_STEP_COUNTER 的相关文章

随机推荐

  • 将已安装的 Cordova 插件保存到 config.xml

    我已经使用以下语法安装了所有 cordova 插件 cordova plugin add
  • 计算python字典中某个值出现的次数?

    如果我有这样的东西 D a 97 c 0 b 0 e 94 r 97 g 0 例如 如果我想计算 0 作为值出现的次数 而不必迭代整个列表 这是否可能以及如何实现 正如中提到的这个答案 using operator countOf 是可行的
  • Dart 有小部件库吗?

    一年后查看 Dart 我没有看到任何全面的小部件库 我在 GitHub 上看到了 KevMoo 的 Widget Dart 项目 但没有一个小部件实际上可以工作 我目前在我的项目中使用 AngularJS 并且拥有一组很棒的库 例如 Boo
  • 如何为一张纸设置vba代码?

    我目前正试图构建一个运行 sumifs 宏的按钮 我正在尝试构建按钮Sheet1并让 sumif 执行Sheet2 我目前拥有的是 Option Explicit Sub Sumifs Dim Sht2 As Worksheet Dim E
  • 类成员函数模板可以是虚拟的吗?

    我听说C 类成员函数模板不能是虚拟的 这是真的 如果它们可以是虚拟的 那么使用这种功能的场景示例是什么 模板都是关于编译器生成代码的编译时 虚函数都是关于运行时系统确定要调用哪个函数的run time 一旦运行时系统发现需要调用模板化虚拟函
  • 有没有办法为 JUnit 测试用例在内存中运行 MySQL?

    我只是想为访问 MySQL DB 的服务添加测试用例 并且我想重新创建整个架构 对于某些场景 也只需使用 MySQL 转储文件以及每个测试用例所需的数据 我环顾四周 发现有些人使用 SQLite H2 和其他人来做到这一点 但我只是想知道是
  • NPGSQL 与 .netCore 如何登录到架构而不仅仅是数据库

    这是我的NPGSQL连接字符串 ConnectionStrings DataAccessPostgreSqlProvider User ID damienbod Password 1234 Host localhost Port 5432
  • UICollectionView 的动态单元格宽度取决于标签宽度

    我有一个 UICollectionView 它从可重复使用的单元格加载单元格 其中包含标签 数组提供该标签的内容 我可以使用 sizeToFit 根据内容宽度轻松调整标签宽度 但我无法使细胞适合标签 这是代码 void viewDidLoa
  • 如何从内容页访问母版页控件

    我有一个母版页 其中包含状态消息的标签 我需要设置不同 aspx 页面的状态文本 如何从内容页面完成此操作 public partial class Site System Web UI MasterPage public string S
  • PHP:5.2 中需要 json_encode() 5.3 功能

    长话短说 客户端的托管使用的是 php 5 2 5 我迫切需要使用 JSON FORCE OBJECT 选项json encode 5 3 附带的 有谁知道用于此目的的等效项吗 请指出来 在编码之前将其转换为对象在 5 2 5 上对我有用
  • Python 等价于 System('PAUSE')

    我一直在用 python 3 3 编写一个基本计算器 我希望能够在命令窗口中运行它 但当我读到最后时 在我有时间查看最终答案之前它就关闭了窗口 所以我想知道是否有一个相当于 c System PAUSE 命令来告诉它在用户准备好之前不要再继
  • 从另一个项目 ID 访问现有云 SQL 实例

    我已经在 PHP 项目中创建了一个云 sql 实例 并成功完成了计费过程 该项目有效 现在 我想从另一个项目访问我的数据库 但这次是在带有 servlet 的 Java SDK 项目中 使用中的示例https developers goog
  • scanf() 的宽度说明符 - 要使用的字符长度在编译时不固定,仅在运行时确定。如何使其可变?

    我想将字段宽度说明符应用于 scanf 操作来读取字符串 因为明确指定了要读取 使用的字符数 而不是使scanf 容易导致缓冲区溢出的操作 以及目的地参数指向已经匹配的char数组 其元素的大小正好相同 字段宽度的所需值必须为 1 0 这个
  • 如何将文本添加到 pygame 矩形中

    我已经在 pygame 中绘制了一个矩形 但是我需要能够将 Hello 之类的文本放入该矩形中 我怎样才能做到这一点 如果您也能解释一下 将不胜感激 谢谢 这是我的代码 import pygame import sys from pygam
  • 如何使用java生成像apache的htpasswd这样的哈希值

    我在 htpasswd 中使用 强制对密码进行 MD5 加密 来生成哈希 例如我得到的 123 使用 htpasswd 123 gt apr1 kaTbKaLO ewJXRZAKpjaxK4thy2jOp 使用 MD5 摘要 123 gt
  • 如何检查列表是否包含相同顺序的另一个列表

    C 中有没有简单的方法来检查列表是否包含另一个列表 这是一个例子 我有 var list1 new List
  • 虚拟/纯虚拟解释

    如果一个函数被定义为虚函数到底意味着什么 它与纯虚函数相同吗 From 维基百科的虚函数 在面向对象编程中 在 C 和 Object Pascal 等语言中 虚函数或虚方法是可继承且可重写的函数或方法 便于动态分派 这个概念是面向对象编程
  • JavaFX 的 Spinner 在空文本输入上引发 NullPointerException

    我有一个问题 可编辑的 JavaFX 8Spinner导致未捕获NullPointerException如果清除编辑器文本并提交 然后单击递增或递减按钮 这是j8u60 j8u77 如果运气好的话 递增 递减按钮将卡在按下状态 NPE 会继
  • 如何在 Xcode 4 中打开内存浏览器?

    在 Xcode 3 中调试程序时 我经常在单独的窗口中使用内存浏览器来查看缓冲区更改的内容 同时单步执行代码行 当我现在开始使用 Xcode 4 时 我想知道如何打开内存浏览器 我在用户界面中找不到类似的东西 有人可以提供帮助吗 调试时选择
  • Android 10 无法注册 Sensor.TYPE_STEP_COUNTER

    我目前正在开发一个应用程序来跟踪步骤 为了跟踪步骤 我使用手机的以下传感器 传感器 TYPE STEP COUNTER 这对于我测试过的所有设备都运行良好 最近我有机会在三星 S10 设备上测试该应用程序 但它不再跟踪步骤 而它在三星 S9