一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述android 传感器应用相关的知识,希望能为你提供帮助。
本章讲述android开发中,传感器应用相关的知识点。
1.功能需求
- 做一个基于传感器的水平尺应用。
文章图片
1 private SensorManager mSensorManager; 2... 3 @Override 4 protected void onPause() { 5super.onPause(); 6mSensorManager.unregisterListener(this); 7 8 }
文章图片
2 不要在模拟器上测试你的代码目前无法在模拟器上测试传感器相关的代码,因为模拟器不能模拟传感器。你必须在物理设备上测试传感器相关代码。 不过,你可以利用传感器的模拟器来模拟传感器的输出。
3 不要阻塞 onSensorChanged() 方法传感器数据以很高的频率在发生变化,这意味着系统可能会非常频繁地调用 onSensorChanged(SensorEvent) 方法。最佳实现方案是,在 onSensorChanged(SensorEvent) 方法中你应该尽可能少干些事情,以防止阻塞。如果你的应用需要对传感器数据进行过滤或剔除操作,则应该在 onSensorChanged(SensorEvent) 方法之外进行。
4 避免使用过时的方法或传感器类型【android 传感器应用】有几个方法和常量已经过时了。特别是 TYPE_ORIENTATION 传感器类型已经过时。要获取方位数据,你应该换用getOrientation() 方法。同样, TYPE_TEMPERATURE 传感器类型也已过时。在 Android 4.0 的设备上,你应该用TYPE_AMBIENT_TEMPERATURE 传感器类型来代替。
5 在使用前先验证传感器在试图读取数据前,请确保先验证一下传感器是否存在。不要因为传感器很常用,就简单地假定它会存在。制造商并不需要在他们的设备上提供任何传感器。
在运行时检测传感器并酌情启用或禁用应用程序的相应功能
文章图片
1 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 2 3if (mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) != null){ 4 5// Success! There‘s a pressure sensor. 6 7} 8 9else { 10 11// 失败!传感器不存在。 12 13}
文章图片
使用Android Market过滤器来限定目标设备必须带有特定传感器
如果要在 Android Market 上发布应用,可以用 manifest 文件中的 < uses-feature> 元素把不提供所需传感器的设备过滤掉。
manifest 文件中的< uses-feature> 元素有很多硬件描述符,利用它们可以根据传感器存在与否来对应用进行过滤。 可列出的传感器包括:加速计、气压计、罗盘(地磁)、陀螺仪、光线和邻近距离。 以下是滤除无加速计的 manifest 样例:
< uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
如果你把这个元素和描述符加入你的 manifest 中,则只有设备上带有加速计的用户才能在 Android Market 上看到你的应用。
6 谨慎选择传感器延时
当利用 registerListener() 方法注册传感器时,请确保为你的应用或使用场景选择了合适的发送频率。传感器能够以很高的频率发送数据。请保证系统有能力发送其它数据,不要无谓浪费系统资源和消耗电池电量。
推荐阅读
- Win8.1笔记本触摸板没反应怎样办?
- Android Studio - 第四十六期 不会AAR的轮播写法
- android视图概述
- application跟session的区别
- Androidproject师进阶之路 (《Android开发进阶:从小工到专家》上市啦!)
- android 打造ListView和Gridview万能adapter适配器(附源码)
- Android——DEBUG 堆栈
- Android API Guides---Host-based Card Emulation
- 以神经网络使用为例的Matlab和Android混合编程