代码之家  ›  专栏  ›  技术社区  ›  user3668129

为什么运动传感器不触发?

  •  0
  • user3668129  · 技术社区  · 6 年前

    我正在尝试用以下代码测试我的运动传感器(在Galaxy S7上):

     public class MainActivity extends AppCompatActivity {
    
            private SensorManager sensorManager;
            private Sensor sensorGRAVITY;
            private Sensor sensorACCELEROMETER;
            private TriggerEventListener triggerEventListenerGRAVITY;
            private TriggerEventListener triggerEventListenerACCELEROMETER;
    
    
    
            private void initManagers() {
                sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
                // --- TYPE_GRAVITY
                sensorGRAVITY = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
                triggerEventListenerGRAVITY = new TriggerEventListener() {
                    @Override
                    public void onTrigger(TriggerEvent event) {
                        TextView textView = (TextView)findViewById(R.id.textView1);
                        textView.setText("[0] = " + String.valueOf(event.values[0]) + " [1] = " + String.valueOf(event.values[1]));
                    }
                };
                sensorManager.requestTriggerSensor(triggerEventListenerGRAVITY, sensorGRAVITY);
    
                // --- TYPE_ACCELEROMETER
                sensorACCELEROMETER = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
                triggerEventListenerACCELEROMETER = new TriggerEventListener() {
                    @Override
                    public void onTrigger(TriggerEvent event) {
                        TextView textView = (TextView)findViewById(R.id.textView2);
                        textView.setText("[0] = " + String.valueOf(event.values[0]) + " [1] = " + String.valueOf(event.values[1]));
                    }
                };
                sensorManager.requestTriggerSensor(triggerEventListenerACCELEROMETER, sensorACCELEROMETER);
            }
    
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                initManagers();
    
            }
    
    
        }
    

    但似乎没有触发信号。 我试着说话,移动我的银河系几秒钟,而textview1和textview2没有改变。

    我错过了什么?

    0 回复  |  直到 6 年前
        1
  •  0
  •   anirudh    6 年前

    尝试在initmanagers()方法之外声明triggerEventListener()。 私有void initmanagers(){

           sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
                // --- TYPE_GRAVITY
                sensorGRAVITY = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
                triggerEventListenerGRAVITY = new TriggerEventListener() {
                    @Override
                    public void onTrigger(TriggerEvent event) {
                        TextView textView = (TextView)findViewById(R.id.textView1);
                        textView.setText("[0] = " + String.valueOf(event.values[0]) + " [1] = " + String.valueOf(event.values[1]));
                    }
                };
                sensorManager.requestTriggerSensor(triggerEventListenerGRAVITY, sensorGRAVITY);
    
                // --- TYPE_ACCELEROMETER
                sensorACCELEROMETER = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    
                sensorManager.requestTriggerSensor(triggerEventListenerACCELEROMETER, sensorACCELEROMETER);
            }
    triggerEventListenerACCELEROMETER = new TriggerEventListener() {
                    @Override
                    public void onTrigger(TriggerEvent event) {
                        TextView textView = (TextView)findViewById(R.id.textView2);
                        textView.setText("[0] = " + String.valueOf(event.values[0]) + " [1] = " + String.valueOf(event.values[1]));
                    }
                };