简单的 stepCounter 不适用于不同的手机
Simple stepCounter doesn't work on different phones
我基于计步器传感器制作了简单的 stepCounter。我知道不是每个人 phone 都有这种传感器,所以我通过 onResume.Both 设备中的 Toast 消息保护了我的代码,显示已找到传感器的 Toast 消息。应用程序在 samsung galaxy S5 上运行正常,但在更高型号的 S10E 上却不能。有谁知道这个错误的原因是什么?
public class StepCounterActivity extends AppCompatActivity implements SensorEventListener {
private TextView textViewStepCounter;
private SensorManager mSensorManager;
private boolean running = false;
int stepCount = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_step_counter);
textViewStepCounter = (TextView) findViewById(R.id.textViewStepCounter);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
running = true;
Sensor countSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if(countSensor != null){
mSensorManager.registerListener(this,countSensor,SensorManager.SENSOR_DELAY_UI);
Toast.makeText(this, "Sensor found", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this,"Sensor not found",Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onPause() {
super.onPause();
running = false;
}
@Override
public void onSensorChanged(SensorEvent event) {
if(running){
stepCount = (int) event.values[0];
textViewStepCounter.setText(String.valueOf(stepCount));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
在 Android10,您需要请求权限才能访问步进传感器。
在您的清单中使用它。
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
您可能想询问权限:
if(ContextCompat.checkSelfPermission(this,
Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
//ask for permission
requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
}
看到这个问题:
遗憾的是,由于安装受限,Galaxy S10e 不是嵌入式心率传感器space。
我基于计步器传感器制作了简单的 stepCounter。我知道不是每个人 phone 都有这种传感器,所以我通过 onResume.Both 设备中的 Toast 消息保护了我的代码,显示已找到传感器的 Toast 消息。应用程序在 samsung galaxy S5 上运行正常,但在更高型号的 S10E 上却不能。有谁知道这个错误的原因是什么?
public class StepCounterActivity extends AppCompatActivity implements SensorEventListener {
private TextView textViewStepCounter;
private SensorManager mSensorManager;
private boolean running = false;
int stepCount = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_step_counter);
textViewStepCounter = (TextView) findViewById(R.id.textViewStepCounter);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
running = true;
Sensor countSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if(countSensor != null){
mSensorManager.registerListener(this,countSensor,SensorManager.SENSOR_DELAY_UI);
Toast.makeText(this, "Sensor found", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this,"Sensor not found",Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onPause() {
super.onPause();
running = false;
}
@Override
public void onSensorChanged(SensorEvent event) {
if(running){
stepCount = (int) event.values[0];
textViewStepCounter.setText(String.valueOf(stepCount));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
在 Android10,您需要请求权限才能访问步进传感器。
在您的清单中使用它。
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
您可能想询问权限:
if(ContextCompat.checkSelfPermission(this,
Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
//ask for permission
requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
}
看到这个问题:
遗憾的是,由于安装受限,Galaxy S10e 不是嵌入式心率传感器space。