Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的步进计数器(计数器传感器不工作)_Android - Fatal编程技术网

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

我试着用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.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
}