Android传感器的使用

2022-04-08  本文已影响0人  懵懵懂懂_YOYO

目前每部Android 手机里面都会内置有许多的传感器,它们能够监测到各种发生在手机上的物理事件,而我们只要灵活运用这些事件就可以编写出很多好玩的应用程序。下面我们开始简单的传感器使用的学习。

传感器的简要说明

一、手机传感器的介绍:

1.手机内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息。

2.Android手机通常会支持多种类型的传感器,如光照传感器,地磁传感器,压力传感器,温度传感器。

3.Android手机只是负责将这些传感器所输出的信息传递给我们,至于具体如何去利用这些信息就要我们在程序中具体去利用这些得到的数据去处理了。

二、手机支持的传感器类型

从Android1.5开始,系统内置了对多达八种传感器的支持,他们分别是:加速度传感器(accelerometer)、陀螺仪(gyroscope)、环境光照传感器(light)、磁力传感器(magnetic field)、方向传感器(orientation)、压力传感器(pressure)、距离传感器(proximity)和温度传感器(temperature)。

三、传感器的使用

1.Android所有的传感器都归传感器管理器SensorManager管理,如下是获得传感器的方法:

SensorManager sensorManager  = (SensorManager)getSystemService(SENSOR_SERVICE);

2.获取某个或者某些传感器的方法有如下三种:

第一种:获取某种传感器:

Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);

第二种:获取某种传感器列表:

List<Sensor> pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);

第三种:获取所有传感器列表:

 List<Sensor> allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

四、某个传感器的信息获取:

image.png

五、现阶段Android支持的传感器有8种:

image.png

传感器的实例(加速度传感器的使用)

1.初始化

private SensorManager sensorManager =null;

private Sensor accelerometerSensor =null;
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

gyroSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);

accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

2.加速度传感器的事件

private SensorEventListener AcclerListener =new SensorEventListener() {

    @Override

    publicvoid onSensorChanged(SensorEvent event) {

        // 加速度可能会是负值,所以要取它们的绝对值
        floatxValue = Math.abs(event.values[0]);

        floatyValue = Math.abs(event.values[1]);

        floatzValue = Math.abs(event.values[2]);

        if(xValue > 15 || yValue > 15 || zValue > 15) {

            // 认为用户摇动了手机,触发摇一摇逻辑Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();

        }

    }

    @Override

    public void onAccuracyChanged(Sensor sensor,int accuracy) {

        Log.i(TAG, "on accuracy change: " + accuracy);

    }

};

3.在onDestory方法调用 unregisterListener() 方法来释放使用的资源。

@Override
protected void onDestroy() {

    super.onDestroy();

    if(sm !=null) {

        sm.unregisterListener(AcclerListener);

    }

}
上一篇 下一篇

猜你喜欢

热点阅读