android 传感器1--传感器list

从android1.5起,android系统内置了至少八种传感器。
包括:加速度传感器(accelerometer)、陀螺仪(gyroscope)、环境光照传感器(light)、磁力传感器(magnetic field)、方向传感器(orientation)、压力传感器(pressure)、距离传感器(proximity)和温度传感器(temperature)。
实例手机传感器清单
mainActivity.java

package com.cindy.sensorlearn;

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 java.util.List;

public class MainActivity extends AppCompatActivity implements SensorEventListener{
    private SensorManager sensorManager;
    private Sensor sensor_p,sensor_a,sensor_o;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
        System.out.println("所有的传感器");
        for(Sensor s:sensorList){
            System.out.println(s.getName());
        }
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        switch (event.sensor.getType()){
            case Sensor.TYPE_PROXIMITY:
                System.out.println("传感器"+event.values[0]);
                break;
            case Sensor.TYPE_ACCELEROMETER:
                System.out.format("x=%f,y=%f,z=%f\n", event.values[0], event.values[1], event.values[2]);
                break;
            case Sensor.TYPE_ORIENTATION:
                System.out.format("value=%f\n", event.values[0]);
                break;
        }
    }

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

    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.cindy.sensorlearn.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

在华为荣耀6上测试log输出:
10-23 19:00:28.979 9787-9787/com.cindy.sensorlearn I/System.out: 所有的传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: LSM330 3-axis Accelerometer 三轴式加速度传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: AK09911 3-axis Magnetic field sensor 地磁场传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: iNemo Orientation sensor 方向传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: Light sensor 光线传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: Proximity sensor 距离传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: LSM330 Gyroscope sensor 陀螺传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: iNemo Gravity sensor 重力传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: iNemo Linear Acceleration sensor 线性加速度传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: iNemo Rotation Vector sensor 旋转矢量传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: huawei hall sensor 华为霍尔传感器
10-23 19:00:47.954 12990-12990/com.cindy.sensorlearn I/System.out: huawei step counter 华为计步器
android所有的传感器都归传感器SensorManager管理,获取传感器管理器的方法如下
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
传感器类型常量 内部整数值 中文名称
Sensor.TYPE_ACCELEROMETER 1 加速度传感器
Sensor.TYPE_MAGNETIC_FIELD 2 磁力传感器
Sensor.TYPE_ORIENTATION 3 方向传感器
Sensor.TYPE_GYROSCOPE 4 陀螺仪传感器
Sensor.TYPE_LIGHT 5 环境光照传感器
Sensor.TYPE_PRESSURE 6 压力传感器
Sensor.TYPE_TEMPERATURE 7 温度传感器
Sensor.TYPE_PROXIMITY 8 距离传感器

从传感器管理器中获取其中某个或者某些传感器的方法有如下三种:
第一种:获取某种传感器的默认传感器
Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
第二种:获取某种传感器的列表
List pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
第三种:获取所有传感器的列表,我们这个例子就用的第三种
List sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);

对于某一个传感器,它的一些具体信息的获取方法可以见下表:
方法 描述
getMaximumRange() 最大取值范围
getName() 设备名称
getPower() 功率
getResolution() 精度
getType() 传感器类型
getVentor() 设备供应商
getVersion() 设备版本号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值