android使用磁场传感器和加速度传感器确定当前朝向(即:方位角),以及常见问题的解决办法

本文介绍了Android设备如何通过加速度传感器和磁场传感器确定当前朝向,指出Sensor.TYPE_ORIENTATION的不足,并提供了结合Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD的解决方案,详细解释了关键步骤和注意事项。
摘要由CSDN通过智能技术生成

1,功能实现

确定当前设备朝向的方式有两种,一种是是直接使用 方向传感器 Sensor.TYPE_ORIENTATION,另一种是结合使用Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD;前一种已经不建议使用了,因为它无法根据应用的横竖屏与设备的自然方向调整结果方向,且精确度不如后一种方式。

后一种方式的实现如下,比较关键的地方都写注释了。

<pre name="code" class="java">	/**
	 * 方向传感器中心。<br>
	 * 使用方法为:创建对象后使用 {@link #init(Activity)} 初始化上下文环境,使用
	 * {@link #registerOrientationListener(IListener)} 注册
	 * 方向变化监听器,使用完毕后(一般在 {@link #init(Activity)}中所使用 {@link Activity}
	 * 销毁时), {@link #unregister()}取消本类内部注册的 {@link SensorEventListener}
	 * @author yangsheng
	 * @date 2015年1月28日
	 */
	private static class SensorCenter {

		private float[] accelerValues = new float[3];
		private float[] magneticValues = new float[3];

		private final SensorEventListener sensorListener = new SensorEventListener() {

			@Override
			public void onSensorChanged(SensorEvent event) {

				switch (event.sensor.getType()) {

				// 深度复制,可避免部分设备下 SensorManager.getRotationMatrix 返回false的问题
				case Sensor.TYPE_ACCELEROMETER:
					for (int i = 0; i < 3; i++) {
			
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值