android中的步进计数器(计数器传感器不工作)
我试着用android做一个基本的计步器应用程序。但当我在错误下面时 计数器传感器不可用 请帮帮我android中的步进计数器(计数器传感器不工作),android,Android,我试着用android做一个基本的计步器应用程序。但当我在错误下面时 计数器传感器不可用 请帮帮我 package com.starboardland.pedometer; import android.app.Activity; import android.content.Context; import android.hardware.*; import android.os.Bundle; import android.widget.TextView; import android.w
package com.starboardland.pedometer;
import android.app.Activity;
import android.content.Context;
import android.hardware.*;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class CounterActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private TextView count;
boolean activityRunning;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
count = (TextView) findViewById(R.id.count);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
activityRunning = true;
Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (countSensor != null) {
sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
} else {
Toast.makeText(this, "Count sensor not available!", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPause() {
super.onPause();
activityRunning = false;
// if you unregister the last listener, the hardware will stop detecting step events
// sensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (activityRunning) {
count.setText(String.valueOf(event.values[0]));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
传感器的状态取决于硬件
这两个步进传感器都依赖于硬件(Nexus 5是第一个支持它们的设备),因此您应该使用FEATURE_SENSOR_step_检测器和FEATURE_SENSOR_step_计数器常数,使用hasSystemFeature()检查可用性
您应该首先检查设备是否具有该功能
PackageManager pm = getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_STEP_COUNTER)) {
// the awesome stuff here
}