android基础—->传感器的使用
最后更新 2021-02-05 14:10 星期五 所属:
安卓教程 浏览:705
如今每一集Android 手机里面都是会内嵌有很多的感应器,他们可以检测到各种各样产生在手机上的物理学事情,而大家只需熟练掌握这种事情就可以编写出许多好玩儿的应用软件。今日大家逐渐简易的感应器应用的学习培训。
文件目录导航栏:
- 感应器的简要说明
- 感应器的案例
- 友链
感应器的简要说明
一、 手机传感器的详细介绍:
- 手机上中内嵌的感应器是一种小型的物理学机器设备,它可以检测、感受到外部的数据信号,并按一定规律性转化成大家所必须的信息内容
- Android 手机上一般 都是会适用各种类型的感应器,如阳光照射感测器右器、瞬时速度感应器、地磁传感器、液位传感器、温度感应器
- Android 系统软件仅仅承担将这种感应器所輸出的信息的传递给大家,对于实际如何去运用这种信息内容就需要我们在程序流程中实际去运用这种获得的数据信息做解决了
二、 手机上基础适用的传感器分类:
从Android1.5逐渐,系统软件内嵌了对高达八种感应器的适用,她们分别是:瞬时速度感应器(accelerometer)、手机陀螺仪(gyroscope)、自然环境阳光照射感应器(light)、磁性感应器(magnetic field)、方位感应器(orientation)、液位传感器(pressure)、距离感应器(proximity)和温度感应器(temperature)。
三、 感应器的一些使用说明书
- Android全部的感应器都归感应器管理工具 SensorManager 管理方法,获得感应器管理工具的方式非常简单:
String service_name = Context.SENSOR_SERVICE;
SensorManager sensorManager = (SensorManager)getSystemService(service_name);
- 从感应器管理工具中获得在其中某一或是一些感应器的方式有以下三种:
第一种:获得某类感应器的默认设置感应器:
Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
第二种:获得某类感应器的目录:
List<Sensor> pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
第三种:获得全部感应器的目录:
List<Sensor> allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
四、 针对一个感应器,信息内容的获得:
方式
|
叙述
|
getMaximumRange()
|
较大 取值范围
|
getName()
|
设备名称
|
getPower()
|
输出功率
|
getResolution()
|
精密度
|
getType()
|
传感器分类
|
getVentor()
|
机器设备经销商
|
getVersion()
|
机器设备版本信息 |
五、 目前Android适用的常见感应器有8种:
传感器分类变量定义
|
內部整数金额值
|
中文名字
|
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 | 距离感应器 |
感应器的案例
大家建立一个感应器的运用案例,新项目构造以下:
一、 在MainActivity中复位一些信息内容:
private final static String TAG = "SensorTest"; private TextView textView; SensorManager sm = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); }
二、 获得手机适用的全部传感器分类:建立一个方式
// 表明手机上适用的感应器的明细 public void allSensors(View view) { //从服务程序中得到感应器管理工具 //从感应器管理工具中得到所有的感应器目录 List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL); Log.i(TAG, "allsensors: " allSensors.size()); //表明每一个感应器的实际信息内容 for (Sensor sensor : allSensors) { String name = sensor.getName(); String vendor = sensor.getVendor(); int version = sensor.getVersion(); Log.i(TAG, "name: " name ", vendor: " vendor ", version: " version); } }
三、 光线传感器的简易应用:
// 阳光照射感应器的应用 public void lightSensors(View view) { Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT); sm.registerListener(LightListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } // 阳光照射感应器的事情 private SensorEventListener LightListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { float value = event.values[0]; Sensor sensor = event.sensor; textView.setText(value ""); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { Log.i(TAG, "on accuracy change: " accuracy); } };
四、 瞬时速度感应器的简易应用:
// 瞬时速度感应器 public void accelerSensors(View view) { Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sm.registerListener(AcclerListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } // 瞬时速度感应器的事情 private SensorEventListener AcclerListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // 瞬时速度很有可能会是负数,因此 要用他们的平方根 float xValue = Math.abs(event.values[0]); float yValue = Math.abs(event.values[1]); float zValue = 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); } };
五、 在onDestory方式启用unregisterListener()方式来释放出来应用的資源。
@Override protected void onDestroy() { super.onDestroy(); if (sm != null) { sm.unregisterListener(LightListener); sm.unregisterListener(AcclerListener); } }
六、 表明結果:
- 全部感应器的复印日志:
allsensors: 27 name: Accelerometer, vendor: STMicroelectronics, version: 1 name: Magnetometer, vendor: AKM, version: 1 name: Magnetometer Uncalibrated, vendor: AKM, version: 1 name: Gyroscope, vendor: STMicroelectronics, version: 1 name: Gyroscope Uncalibrated, vendor: STMicroelectronics, version: 1 name: Proximity Sensor, vendor: TAOS, version: 1 name: Ambient Light Sensor, vendor: TAOS, version: 1 name: Barometer Sensor, vendor: BOSCH, version: 1 name: Temperature Sensor, vendor: BOSCH, version: 1 name: Gravity, vendor: Qualcomm, version: 1 name: Linear Acceleration, vendor: Qualcomm, version: 1 name: Rotation Vector, vendor: Qualcomm, version: 1 name: Step Detector, vendor: Qualcomm, version: 1 name: Step Counter, vendor: Qualcomm, version: 1 name: Significant Motion Detector, vendor: Qualcomm, version: 1 name: Game Rotation Vector, vendor: Qualcomm, version: 1 name: Geomagnetic Rotation Vector, vendor: Qualcomm, version: 1 name: Orientation, vendor: Qualcomm, version: 1 name: AMD, vendor: Qualcomm, version: 1 name: RMD, vendor: Qualcomm, version: 1 name: Basic Gestures, vendor: Qualcomm, version: 1 name: Facing, vendor: Qualcomm, version: 1 name: Tilt, vendor: Qualcomm, version: 1 name: Pedometer, vendor: Qualcomm, version: 1 name: PEDESTRIAN-ACTIVITY-MONITOR, vendor: Qualcomm, version: 1 name: Motion Accel, vendor: Qualcomm, version: 1 name: Temperature Sensor, vendor: BOSCH, version: 1
友链
- 功能测试的源代码下载 浏览登陆密码 5760