当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

10.10 传感器专题(1)——相关介绍

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:28:07

1.传感器相关介绍:说到传感器,相信大家都不会陌生吧,比如微信的摇一摇就用到了加速度传感器;传感器的定义:一种物理设备或者生物器官,能够探测、感受外界的信号,物理条件(如光,热,适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官!传感器的种类:可以从不同的角度对传感器进行划分,转换原理(传感器工作的基本物理或化学效应);用途;输出信号以及制作材料和工艺等。一般是按工作原来来分:物理传感器与化学传感器两类!手机上搭载的基本都是物理传感器,手机上搭载的传感器有下面这些:方向传感器(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和其他不一样,具有读写功能。当然除了这些以外还有其他比如心率传感器,记步传感器,指纹传感器等,关于Android设备所支持的传感器类型可见官方文档:Sensor Summary部分的内容~2.如何查看自己手机所支持的传感器有哪些?上面说的这么多种肯定不是所有手机都具备的,每台手机上搭载的传感器类型以及数目都可能是不一样的,比如我手头上的Nexus 5支持的传感器类型有:重力,光线,距离,气压和陀螺仪!而令意外moto x 二代则有重力,光线,距离和红外传感器!关于自己手机支持的传感器类型,你可以到相关的评测网站比如:中关村手机在线,太平洋等,搜索到自己的机型查看相关参数!当然,我们也可以自己写代码来看看自己手机支持的传感器类型~代码示例:运行效果图:代码实现:activity_main.xml:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/txt_show" android:layout_width="match_parent" android:layout_height="match_parent" /> </ScrollView></RelativeLayout>MainActivity.java:public class MainActivity extends AppCompatActivity { private TextView txt_show; private SensorManager sm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); txt_show = (TextView) findViewById(R.id.txt_show); 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"); } txt_show.setText(sb.toString()); }}3.Sensor传感器相关的方法以及使用套路从2中的例子我们可以大概地总结下获取Sensor传感器以及获取传感器相关的一些信息流程如下:1)Sensor传感器的相关方法Step 1:获得传感器管理器:SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); Step 2:获得设备的传感器对象的列表:List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);Step 3:迭代获取Sensor对象,然后调用对应方法获得传感器的相关信息:for(Sensor s:allSensors){ sensor.getName(); //获得传感器名称 sensor.getType(); //获得传感器种类 sensor.getVendor(); //获得传感器供应商 sensor.getVersion(); //获得传感器版本 sensor.getResolution(); //获得精度值 sensor.getMaximumRange(); //获得最大范围 sensor.ge

[1] [2]  下一页


10.10 传感器专题(1)——相关介绍