java - 在 NEXUS5X 29API 中找不到 TYPE_STEP_COUNTER 传感器
问题描述
我正在使用 Nexus5X API29 在 android studio 中做一个计步器项目。我需要为此使用传感器。我编写了如下传感器代码,但它仍然给出“未找到传感器”错误。有没有什么办法解决这一问题?
public class MainActivity extends AppCompatActivity implements SensorEventListener {
TextView tv_steps;
SensorManager sensorManager;
Sensor sensor;
boolean running = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_main );
tv_steps = (TextView) findViewById ( R.id.tv_steps );
sensorManager = (SensorManager) getSystemService ( Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume ();
running = true;
Sensor countSensor = sensorManager.getDefaultSensor ( sensor.TYPE_STEP_COUNTER );
if(countSensor!= null){
sensorManager.registerListener ( this,countSensor,SensorManager.SENSOR_DELAY_UI );
}else {
Log.d ("Main Activity","SENSOR NOT FOUND" );
}
}
@Override
protected void onPause() {
super.onPause ();
running = false;
//if you unregister the hardware will stop detecting steps
}
@Override
public void onSensorChanged(SensorEvent event) {
if (running){
tv_steps.setText ( String.valueOf ( event.values[0] ) );
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
在清单文件中,我还实现了这样的权限:
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" android:required="true"/>
解决方案
我建议你在真实设备上测试这个应用程序。通常,模拟器不具备某些功能,如传感器或文本转语音。
如果它仍然不起作用,请确保您的物理设备具有步长传感器。
推荐阅读
- postgresql - 带有 LAG() 的 PostgreSQL 更新查询返回“错误:用作表达式的子查询返回多行”
- c++ - RPi 上 C++ 中面向对象编程的性能
- angular - Angular - 直接在模板中使用输出事件发射器是一种好习惯吗?
- html - 如何在 HTML 中为段落着色?
- mysql - 我不明白两个查询之间 EXPLAIN 输出的区别。唯一的区别是 MYSQL 中的 LEFT JOIN 与 INNER JOIN
- drupal - Drupal 升级后 Drupal 模块丢失
- eclipse - 在 STS 中安装 Mac os Lombok
- javascript - 从地图文件中获取上下文
- java - 将本地时间转换为 EST 时区
- image-processing - 如何检查图像是否为损坏的图像?