参考书籍:《Android应用开发揭秘》第9章

Android 是一个面向应用程序开发的丰富平台,它拥有许多具有吸引力的用户界面元素、数据管理和网络应用等优秀的功能。Android 还提供了很多颇具特色的接口。本文我们将分别介绍这些吸引开发者眼球的特色开发,主要包括:传感器系统(Sensor)、语音识别技术 (RecognizerIntent)、Google Map和用来开发桌面的插件(Widget)。

Android特色开发之传感器:

Google Android操作系统中内置了很多传感器,比如G1自带了一个非常实用的加速感应器(微型陀螺仪),有了它,G1手机就支持重力感应、方向判断等功能,在部分游戏或软件中可以自动识别屏幕的横屏、竖屏方向来改变屏幕显示布局。下面是Android中支持的几种传感器:

  Sensor.TYPE_ACCELEROMETER:加速度传感器。

  Sensor.TYPE_GYROSCOPE:陀螺仪传感器。

  Sensor.TYPE_LIGHT:亮度传感器。

  Sensor.TYPE_MAGNETIC_FIELD:地磁传感器。

  Sensor.TYPE_ORIENTATION:方向传感器。

  Sensor.TYPE_PRESSURE:压力传感器。

  Sensor.TYPE_PROXIMITY:近程传感器。

  Sensor.TYPE_TEMPERATURE:温度传感器。

  下面我们通过一个例子来分析Android中传感器的使用,这里分析的是方向传感器(TYPE_ORIENTATION)。

要在Android中使用传感器,首先需要了解SensorManager和SensorEventListener。顾名思义,SensorManager就是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。我们可以通过getSystemService 方法来取得一个SensorManager对象。代码如下:

  SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

取得SensorManager对象之后,可以通过getSensorList方法来获得我们需要的传感器类型,保存到一个传感器列表中。通过如下代码可以得到一个方向传感器:

  List sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

要与传感器交互,应用程序必须注册以侦听与一个或多个传感器相关的活动。Android中提供了registerListener来注册一个传感器,并提供了unregisterListener来卸载一个传感器。registerListener方法包括3个参数:第1个参数,接收信号的 Listener实例;第2个参数,想接收的传感器类型的列表(即上一步创建的List对象);第3个参数,接收频度。调用之后返回一个布尔值,true表示成功,false表示失败。当然,之后不再使用时,我们还需要卸载。代码如下:

  //注册传感器

  Boolean mRegisteredSensor = mSensorManager.registerListener(this, sensor,

  SensorManager.SENSOR_DELAY_FASTEST);

  //卸载传感器

  mSensorManager.unregisterListener(this);

  其中,SensorEventListener是使用传感器的核心部分,包括以下两个方法必须实现:

  onSensorChanged (SensorEvent event) 方法在传感器值更改时调用。该方法只由受此应用程序监视的传感器调用。该方法的参数包括一个SensorEvent对象,该对象主要包括一组浮点数,表示传感器获得的方向、加速度等信息。例如,以下代码可以取得其值:

  float x = event.values[SensorManager.DATA_X];

  float y = event.values[SensorManager.DATA_Y];

  float z = event.values[SensorManager.DATA_Z];

  onAccuracyChanged (Sensor sensor,int accuracy) 方法在传感器的精准度发生改变时调用。其参数包括两个整数:一个表示传感器,另一个表示该传感器新的准确值。

SensorManager中还有很多常量和一些常用的方法,如下:

  getDefaultSensor:得到默认的传感器对象。

  getInclination:得到地磁传感器倾斜角的弧度值。

  getOrientation:得到设备旋转的方向。

  getSensorList:得到指定传感器的列表。

具体代码下载链接:http://www.apkbus.com/android-117051-1-1.html

例子中演示了如何获得方向传感器的方向、加速度等信息,我们可以根据得到的数值与上一次得到的数值之间的关系来进行需要的操作。

喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你值得拥有哦!

更多相关文章

  1. Android开发的未来发展方向
  2. Android(安卓)AsyncTask完全解析,带你从源码的角度彻底理解
  3. android 登陆、提交数据或加载数据时提示页面
  4. Android(安卓)网络框架 Retrofit 源码解析
  5. Android截屏截图方法所有方法汇总(包括Activity、View、ScrollVie
  6. 关于android中使用new Message的内存泄露问题
  7. Android(安卓)控件二 Button
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. 破解大众点评的字体加密,这一篇就够了。
  2. Python 如何移除旧的版本特性,如何迎接新
  3. 脚本实现Oracle19c_pdb单实例自动安装部
  4. centos 7下安装python3.8
  5. 破解X眼电影字体动态加密|凹凸玩数据
  6. 2000万条直播数据,揭秘斗鱼主播生存现状
  7. “三本”应届走社招,已顺利拿 offer & 附
  8. Python 为什么使用缩进来划分代码块?
  9. Android(安卓)项目多版本管理
  10. Python 的缩进是不是反人类的设计?