Android平台提供两个让你确定设备位置的传感器:磁场传感器和方位传感器。Android平台也提供了一个让你确定一个对象面对设备多远的传感器(称为距离传感器)。磁场传感器和距离传感器是基于硬件的。大部分手机和平台厂商包含磁场传感器。同样的,手机厂商通常包含一个距离传感器确定什么时候手机靠近用户的脸(例如,当打电话的时候)。方位传感器是基于软件的,并且从加速度和磁场传感器产生数据。
注意:方位传感器在Android2.2中已经被启用(API
Level8)。
位置传感器对于确定设备在真实世界参考系中的物理位置是非常有用的。例如,你能使用磁场传感器结合加速度传感器来确定设备相对于磁北极的位置。你也能使用方位传感器(或者类似于传感器定位方法)类确定设备在你的应用程序的参考系中的位置。位置传感器通常不用于检测设备的运动,例如震动,倾斜或推力(更多信息,查阅Motion
Sensor)。
磁场传感器和方位传感器为每个SensorEvent返回多维数组的传感器数值。例如,方位传感器提供
1.这个传感器在Android2.2中被弃用(API Level 8)。传感器框架提供了可选的方法用于获取设备方位,它在Using the Orientation Sensor中被讨论。
————————————————————————————————————————————
方位传感器让你检测设备相对于地球参考系的位置(特别是,磁北极)。下面的代码向你展示了如何获取默认的方位传感器实例:
private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
方位传感器通过使用设备的磁场传感器结合设备的加速度传感器获取数据。使用这两个硬件传感器,方位传感器提供以下面三个尺寸提供数据:
-
Azimuth(与z轴的角度)。这是地磁北极和设备的y轴的之间的角度。例如,如果设备的y轴和地磁北极对齐值为0,并且如何设备的y轴指向南值为180。同样,当y轴指向东值是90,并且当它指向西的时候值是270。
-
Pitch(与x轴的角度)。当正z轴旋转到正y轴的时候这个值是正数,并且当正z轴传转到负y轴的时候它使负数。这个值的范围是180度至-180度。
-
Roll(与y轴的角度)。当正z轴旋转到正x轴的时候这个值是整数,并且当正z轴旋转到负x轴的时候它是负值。值的范围是90度值-90度。
—————————————————————————————————————————————————————————————
磁场传感器让你监测地球磁场的变化。下面的代码像你展示了如何获取一个默认的磁场传感器实例:
private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
这个传感器为三个坐标轴分别提供原始磁场强度数据(以uT)。通常你不需要直接使用这个传感器。相反,你能使用旋转矢量传感器来确定原始旋转运动,或者你能使用加速度和磁场传感器结合getRotationMatrix()方法来获取旋转矩阵和倾角矩阵。你然后能使用getOrientation()和getInclinaton()方法获取方位和地磁倾角数据。
—————————————————————————————————————————————————————————————
距离传感器让你确定一个物体力设备有多远。下面的代码显示了如何获取默认的距离传感器实例:
private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
距离传感器通常被用于确定人头离手机正面有多远(例如,当用户打或者接听电话的时候)。大部分距离传感器返回以厘米为单位的绝对距离,但是一些仅仅返回远近值。下面的代码像你显示如何使用距离传感器:
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mProximity;
@Override
public final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get an instance of the sensor service, and use that to get an instance of
// a particular sensor.
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here if sensor accuracy changes.
}
@Override
public final void onSensorChanged(SensorEvent event) {
float distance = event.values[0];
// Do something with this sensor data.
}
@Override
protected void onResume() {
// Register a listener for the sensor.
super.onResume();
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
// Be sure to unregister the sensor when the activity pauses.
super.onPause();
mSensorManager.unregisterListener(this);
}
}
注意:一些距离传感器返回二进制值代表“近“或者”远“。在这种情况下,传感器通常在远的状态报告它的最大范围值,和在近状态返回最小值。代表性的,远值是一个大于5厘米的值,但是传感器和传感器之间可能不同。你能通过使用getMaximunRange()方法确定传感器的最大范围。
分享到:
相关推荐
Android Cookbook: Problems and Solutions for Android Developers by Ian F. Darwin English | 10 May 2017 | ASIN: B071VLZ9ZK | 838 Pages | AZW3 | 12 MB Jump in and build working Android apps with the ...
Manning RxJava for Android Developers Manning RxJava for Android Developers
本书介绍Scala基本语法、构造。以及如何将您已经知道的复制java语法转换为Scala,了解Scala除了javabecome之外还提供了哪些功能编程概念和惯用技巧和建议,这些技巧和建议在将现有java项目转换为Scala时非常有用
Kotlin for android developers 中文学习文档 https://leanpub.com/kotlin-for-android-developers 英文版 - Github: https://github.com/wangjiegulu/kotlin-for-android-developers-zh
Kotlin for android developers中文版翻译 Kotlin for android developers中文版翻译
Linux for Developers: Jumpstart Your Linux Programming Skills (Developer's Library) by William "Bo" Rothwell English | 17 Apr. 2017 | ASIN: B06ZY85CPJ | 224 Pages | AZW3 | 5.37 MB Linux for ...
CalendarProvider是用于用户的日历事务的仓库。CalendarProviderAPI允许你在日历,事务,参与者,提醒等,执行查询,插入,更新,和删除操作。CalendarProvderAPI能通过应用程序和同步Adapter被使用。...
kotlin for android developers 中文版, kotlin for android developers 中文版
《Kotlin for android developers中文版翻译》
Kotlin-for-Android-Developers:该书的配套应用
Wiley - Java Programming for Android Developers - For Dummies 2nd - 2017
Kotlin for Android Developers 中文版 ---------------------------------------------------- 本 ePub 基于开源文档,目录书签齐全。 版权归原作者,翻译版权归译者。 ------------------------------------------...
Kotlin for android developers(非扫描中文)下载后解压即可,更多请关注我的博客:xiayye5
Kotlin for Android Developers - Learn Kotlin the easy way.pdf
This book is a handy reference for all Android app developers. Table of Contents Chapter 1: Getting Started with Android Chapter 2: Views, Graphics, and Drawing Chapter 3: User Interaction Recipes ...
Master the fundamentals of Scala and understand its emphasis on functional programming that sets it apart from ...Java developers looking to transition to Scala. No prior experience necessary in Scala.
kotlin-for-android-developers-zh 中文版本,请支持正版。 https://leanpub.com/kotlin-for-android-developers
kotlin-for-android-developers; kotlin-for-android-developers; kotlin-for-android-developers;