Android学习之重力传感器使用

一、食用解读

这里写图片描述

注意了Values[0]传回来的数是-10到10,可以根据自己的实际需求进行缩放

这里写图片描述

这里写图片描述

二、代码示例

这里写图片描述

例子,形如此类的。。

//一些定义
ProgressBar progressBarSpeed;
CheckBox checkBoxGravity;
SensorManager sensorManager;
Sensor sensor;
float X_lateral;//X方向角度
int Speed=0;//速度
TextView textViewSpeed;//显示速度值

/***
 * 单选框事件
 */
private CompoundButton.OnCheckedChangeListener checkBoxGravityCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // TODO Auto-generated method stub
        if (isChecked)
        {
            sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);//获取手机里面的传感器
            sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//选择获取重力传感器
            //监听函数                        重力传感器对象              工作频率
            sensorManager.registerListener(mySensorEventListener, sensor,  SensorManager.SENSOR_DELAY_NORMAL);// SENSOR_DELAY_GAME
        }
        else
        {
            sensorManager.unregisterListener(mySensorEventListener);//释放传感器
        }
    }
};

/**
 * 重力传感器监听事件
 */
SensorEventListener mySensorEventListener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        {
            X_lateral = event.values[0]+10; //把-10到10的数据变为0-20
            Speed = (int)((100-(X_lateral*10/2))*2);//变为0-200
            if (Speed>100) {
                Speed = 100;
            }
            textViewSpeed.setText(String.valueOf(Speed));
            //Toast.makeText(controlcar.this, Y_longitudinal+"", 500).show();
            runOnUiThread(new Runnable() {
                public void run()
                {
                    progressBarSpeed.setProgress(Speed);
                }
            });
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }
};

protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(mySensorEventListener);
}

参考:

https://www.cnblogs.com/yangfengwu/p/7633980.html
https://blog.csdn.net/wll995806658/article/details/53993356

猜你喜欢

转载自blog.csdn.net/ReCclay/article/details/81586999