Android基础:传感器

1.获得SensorManger对象
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
2.获得指定类型的传感器并注册
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
SensorManager.SENSOR_DELAY_GAME);
在OnResume()中注册

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity implements SensorEventListener {
    EditText textGRAVITY, textLIGHT;  //传感器输出信息的编辑框
    private SensorManager sensorManager;  //定义传感器管理

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textGRAVITY = (EditText) findViewById(R.id.textGRAVITY); //获取重力传感器输出信息的编辑框
        textLIGHT = (EditText) findViewById(R.id.textLIGHT);     //获取光线传感器输出信息的编辑框
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);  //获取传感器管理

    }

    @Override
    protected void onResume() {
        super.onResume();
        //为重力传感器注册监听器
        sensorManager.registerListener(this,
                sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
                SensorManager.SENSOR_DELAY_GAME);
        //为光线传感器注册监听器
        sensorManager.registerListener(this,
                sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
                SensorManager.SENSOR_DELAY_GAME);
    }

    @Override
    protected void onPause() {  //取消注册监听器
        sensorManager.unregisterListener(this);
        super.onPause();
    }

    @Override
    protected void onStop() {  //取消注册监听器
        sensorManager.unregisterListener(this);
        super.onStop();
    }


    @Override
    public void onSensorChanged(SensorEvent event) {
        float[] values = event.values;  //获取X、Y、Z三轴的输出信息
        int sensorType = event.sensor.getType();  //获取传感器类型
        StringBuilder stringBuilder = null;
        switch (sensorType) {
            case Sensor.TYPE_GRAVITY:
                stringBuilder = new StringBuilder();
                stringBuilder.append("X轴横向重力值:");
                stringBuilder.append(values[0]);
                stringBuilder.append("\nY轴纵向重力值:");
                stringBuilder.append(values[1]);
                stringBuilder.append("\nZ轴向上重力值:");
                stringBuilder.append(values[2]);
                textGRAVITY.setText(stringBuilder.toString());
                break;
            case Sensor.TYPE_LIGHT:
                stringBuilder = new StringBuilder();
                stringBuilder.append("光的强度值:");
                stringBuilder.append(values[0]);
                textLIGHT.setText(stringBuilder.toString());
                break;
        }

    }

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

    }
}

加速度传感器的:

import android.app.Service;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Vibrator;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements SensorEventListener {
    private SensorManager sensorManager;  //定义传感器管理器
    private Vibrator vibrator;            //定义振动器

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);  // 获取传感器管理器
        vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);  //获取振动器服务

    }

    @Override
    protected void onResume() {
        super.onResume();
        //为加速度传感器注册监听器
        sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_GAME);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {

        float[] values = event.values;  //获取传感器X、Y、Z三个轴的输出信息
        int sensorType = event.sensor.getType();  // 获取传感器类型
        if (sensorType == Sensor.TYPE_ACCELEROMETER) {  //如果是加速度传感器
            //X轴输出信息>15,Y轴输出信息>15,Z轴输出信息>20
            if (values[0] > 15 || values[1] > 15 || values[2] > 20) {
                Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
                //创建AlertDialog.Builder对象
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
                alertDialog.setView(R.layout.packet);     //添加布局文件
                alertDialog.show();                        //显示alertDialog
                vibrator.vibrate(500);                    //设置振动器频率
                sensorManager.unregisterListener(this);  //取消注册监听器
            }
        }

    }

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

    }
}

猜你喜欢

转载自blog.csdn.net/qq_37282683/article/details/86621403