Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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
Java Android步进计数器不工作,未出现在SensorManager中_Java_Android_Mobile_Frontend_Android Sensors - Fatal编程技术网

Java Android步进计数器不工作,未出现在SensorManager中

Java Android步进计数器不工作,未出现在SensorManager中,java,android,mobile,frontend,android-sensors,Java,Android,Mobile,Frontend,Android Sensors,我试图在Android中制作一个简单的步进计数器,我目前正在使用Oreo并用Pixel 2 API 29进行模拟。问题是,它根本不工作,当我调用sensorManager时,没有列出步进计数器或步进检测器的传感器。我一步一步地学习了不同的教程,但没有成功。有人知道问题出在哪里吗?这是我的代码和清单,还有我要说的清单 我的活动步骤activity.java public class StepsActivity extends AppCompatActivity implements SensorE

我试图在Android中制作一个简单的步进计数器,我目前正在使用Oreo并用Pixel 2 API 29进行模拟。问题是,它根本不工作,当我调用sensorManager时,没有列出步进计数器或步进检测器的传感器。我一步一步地学习了不同的教程,但没有成功。有人知道问题出在哪里吗?这是我的代码和清单,还有我要说的清单

我的活动步骤activity.java

public class StepsActivity extends AppCompatActivity implements SensorEventListener {

    SensorManager sm;
    Sensor sensor;
    TextView tv_steps_count;
    int counter=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_steps);

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

        tv_steps_count = (TextView) findViewById(R.id.tv_steps_count);

        sm = (SensorManager) getSystemService(SENSOR_SERVICE);
        if(sm.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)!=null){
            sensor = (Sensor) sm.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        }else if(sm.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR)!=null){
            sensor =(Sensor) sm.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
        }

        findViewById(R.id.backBTN).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();

            }
        });
    }

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
            tv_steps_count.setText(""+sensorEvent.values[0]);

    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }

    @Override
    public void onPause() {
        stop();
        super.onPause();
    }

    @Override
    public void onResume() {
        start();
        super.onResume();
    }

    private void start() {
        sm.registerListener(this, sensor, sm.SENSOR_DELAY_FASTEST);
    }

    private void stop() {
        sm.unregisterListener(this);
    }
}
我的清单(仅与此相关的部分)

。。。
...
...
以及在调试器上描绘问题的屏幕截图
问题在于仿真器不支持步进计数器或步进检测器。您需要在一台真正的设备上测试此功能,该设备支持这两个传感器。

您好,它在我的三星设备上也不起作用。我得到了一个25个传感器的扩展列表,但其中任何一个都是用于步进计数器或步进检测器并非所有设备都有所有传感器。我知道大多数中高端设备都有您正在寻找的两个传感器。例如,我的Galaxy S20和像素2、3都有这两个传感器。你不太可能在廉价手机上找到这些传感器。
...
<uses-feature
        android:name="android.hardware.sensor.accelerometer"
        android:required="true" />
    <uses-feature
        android:name="android.hardware.sensor.stepcounter"
        android:required="true"/>
   <uses-feature
       android:name="android.hardware.sensor.stepdetector"
       android:required="true"/>

    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <uses-feature
        android:name="android.hardware.sensor.accelerometer"
        android:required="true" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE" />
...
<uses-feature
        android:name="android.hardware.sensor.accelerometer"
        android:required="true" />
    <uses-feature android:name="android.hardware.sensor.stepcounter"
        android:required="true"/>
    <uses-feature android:name="android.hardware.sensor.stepdetector"
        android:required="true"/>
...