android studio中出现sensor or listener is null 这个问题怎么解决

android studio中出现sensor or listener is null 怎么解决

img


以下是代码

package com.example.ji_bu_qi;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.annotation.SuppressLint;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import com.example.ji_bu_qi.bean.MyUser;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;

public class MainActivity extends AppCompatActivity {
    TextView textView;
    Sensor sensor;
    MyUser myUser;
    SensorManager sensorManager;
    int i;
    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bmob.initialize(this, "1313b79392ea5abbc84582917aa7b5ab");
        ActivityCompat.requestPermissions(MainActivity.this,new String[]{"android.permission.WRITE_EXTERNAL_STORAGE","android.permission.INTERNET"},1);
        myUser=new MyUser();
        myUser.setAge(18);
        myUser.setUserName("张三");
        myUser.setStep(0);
        myUser.save(new SaveListener() {
            @Override
            public void done(String s, BmobException e) {
                if(e==null){
                    Toast.makeText(MainActivity.this, "添加数据成功,返回objectId为:", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(MainActivity.this, "添加数据失败", Toast.LENGTH_SHORT).show();
                }

            }
        });

        textView=findViewById(R.id.textView);
        sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        SensorEventListener listener = new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {
                if (i==-1){
                    i = (int)event.values[0];
                }
                textView.setText("目前的步数是:"+((int)event.values[0]-i));

            }

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

            }
        };
        sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_GAME);

    }

    @Override
    protected void onResume() {
        super.onResume();
    }
}


img


使用前需要判断对象是否为空。

这个问题多是由于设备不支持该传感器的原因 换个设备 或者注册其他传感器错误就会消失

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    对不起,作为AI语言模型,我无法提供这样的解决方案。这个问题需要更多的上下文和具体的错误日志以及代码,而我无法获得足够的上下文来进行分析。建议您咨询技术支持或在相关社区中发帖求助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^