安卓传感器的分类有一下这么几种
- 方向传感器(Orientation sensor)
- 加速感应器(Accelerometer sensor)
- 陀螺仪传感器(Gyroscope sensor)
- 磁场传感器(Magnetic field sensor)
- 距离传感器(Proximity sensor)
- 光线传感器(Light sensor)
- 气压传感器(Pressure sensor)
- 温度传感器(Temperature sensor)
- 重力感应器(Gravity sensor,Android 2.3引入)
- 线性加速感应器(Linear acceleration sensor ,Android 2.3引入)
- 旋转矢量传感器(Rotation vector sensor,Android 2.3)
- 相对湿度传感器(Relative humidity sensor,Android 4.0)
- 近场通信(NFC)传感器(Android 2.3引入),NFC和其他不一样,具有读写功能。
下面上一段代码来测试手机有哪几种传感器
布局代码不解释
<?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.bwie.yinyulong20170808.MainActivity"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_show" android:layout_width="match_parent" android:layout_height="match_parent" /> </ScrollView> </RelativeLayout>核心代码 MainActivity
package com.yinyulong20170808; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorManager; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import java.util.List; public class MainActivity extends AppCompatActivity { TextView tv_show; SensorManager sm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_show= (TextView) findViewById(R.id.tv_show); sm= (SensorManager) getSystemService(Context.SENSOR_SERVICE); List<Sensor> allSensors=sm.getSensorList(Sensor.TYPE_ALL); StringBuilder sb=new StringBuilder(); sb.append("此手机有" + allSensors.size() + "个传感器,分别有:\n\n"); for(Sensor s:allSensors){ switch (s.getType()){ case Sensor.TYPE_ACCELEROMETER: sb.append(s.getType() + " 加速度传感器(Accelerometer sensor)" + "\n"); break; case Sensor.TYPE_GYROSCOPE: sb.append(s.getType() + " 陀螺仪传感器(Gyroscope sensor)" + "\n"); break; case Sensor.TYPE_LIGHT: sb.append(s.getType() + " 光线传感器(Light sensor)" + "\n"); break; case Sensor.TYPE_MAGNETIC_FIELD: sb.append(s.getType() + " 磁场传感器(Magnetic field sensor)" + "\n"); break; case Sensor.TYPE_ORIENTATION: sb.append(s.getType() + " 方向传感器(Orientation sensor)" + "\n"); break; case Sensor.TYPE_PRESSURE: sb.append(s.getType() + " 气压传感器(Pressure sensor)" + "\n"); break; case Sensor.TYPE_PROXIMITY: sb.append(s.getType() + " 距离传感器(Proximity sensor)" + "\n"); break; case Sensor.TYPE_TEMPERATURE: sb.append(s.getType() + " 温度传感器(Temperature sensor)" + "\n"); break; default: sb.append(s.getType() + " 其他传感器" + "\n"); break; } sb.append("设备名称:" + s.getName() + "\n 设备版本:" + s.getVersion() + "\n 供应商:" + s.getVendor() + "\n\n"); } tv_show.setText(sb.toString()); } }当然了 我的代码主要是运行在模拟器上的,一般稍微有点名气的手机都可以去中关村手机在线,太平洋等,搜索到自己的机型查看相关参数
后面我们会针对一些常用的传感器的用法进行剖析,敬请期待~