随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

上文已介绍,水平传感器传回来的第一个参数值就是代表手机绕Z轴转过的角度,也就是手机顶部与正北的夹角。在程序中通过检查该夹角就可以实现指南针应用。其实思路很简单,先准备一张图片,该图片方向指针指向正北。然后开发一个检测方向的传感器,当程序检测到手机顶部绕Z轴转过多少角度,就让指南针图片反向转过多少度,这样就实现了指针始终指向正北方。这也是指南针的原理。代码如下:
Activity:

package com.home.compass;import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;public class CompassTestActivity extends Activity implementsSensorEventListener {// 定义显示指南针图片的组件private ImageView image;// 记录指南针图片转过的角度private float currentDegree = 0f;// 定义真机的Sensor管理器private SensorManager mSensorManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);image = (ImageView) findViewById(R.id.main_iv);// 获取真机的传感器管理服务mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);}@Overrideprotected void onResume() {super.onResume();// 为系统的方向传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onPause() {super.onPause();// 取消注册mSensorManager.unregisterListener(this);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {// 如果真机上触发event的传感器类型为水平传感器类型if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {// 获取绕Z轴转过的角度float degree = event.values[0];// 创建旋转动画(反向转过degree度)RotateAnimation ra = new RotateAnimation(currentDegree, -degree,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);// 设置动画的持续时间ra.setDuration(200);// 设置动画结束后的保留状态ra.setFillAfter(true);// 启动动画image.startAnimation(ra);currentDegree = -degree;}}
}

布局XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center" ><ImageViewandroid:id="@+id/main_iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/znz" /></LinearLayout>

这里附上一张指南针的图片:

利用Android传感器开发指南针相关推荐

  1. Android 传感器开发详解

    Android 传感器开发详解 本文转载自:https://blog.csdn.net/airsaid/article/details/52902299 前言 使用 第一步 第二步 第三步 方向传感器 ...

  2. 《Android传感器开发与智能设备案例实战》——导读

    本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的目录,作者 朱元波,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 ...

  3. 《Android传感器开发与智能设备案例实战》——第2章,第2.4节安装ADT

    本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的第2章,第2.4节安装ADT,作者 朱元波,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  4. 《Android传感器开发与智能设备案例实战》——第1章,第1.2节Android的巨大优势...

    本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的第1章,第1.2节Android的巨大优势,作者 朱元波,更多章节内容可以访问云栖社区"异步社区&quo ...

  5. Android开发基础:利用 Android Studio开发看美女应用(4)

    利用 Android Studio开发看美女应用 今天我们会利用 Android Studio开发一个简单的看美女应用,通过它查看互联网上的美女图片.通过本篇文章,你将会学到Android应用简单开发 ...

  6. Android移动开发-利用加速度传感器开发仿微信摇一摇功能的实现

    加速度传感器是最常见的传感器,大部分Android手机都内置了加速度传感器,加速度传感器运用最广泛的功能就是微信的摇一摇功能,用户通过摇晃手机寻找周围的人,其它类似的应用还摇骰子.玩游戏等. 下面以摇 ...

  7. Android传感器-开发指南

    大部分Android平台的设备都带有多个传感器,使你能监视其方位和运动状态的变化.很多设备还有其它类型的传感器,让你能感知周围的环境条件,比如温度.压力.湿度和光线.你可以利用Android的传感器框 ...

  8. Android 利用方向传感器实现 指南针

    step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中 step2:设计应用的UI界面,main.xml <?xml version=" ...

  9. Android 利用方向传感器实现 指南针

    step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中 step2:设计应用的UI界面,main.xml <?xml version=" ...

最新文章

  1. git pull遇到错误
  2. 用matlab提取lbp特征,求教大神给解释一下LBP特征提取每部分程序是干什么的
  3. Java的Object类
  4. [html] 说说你对<meta>标签的理解
  5. 【Python CheckiO 题解】Secret Message
  6. 还在使用 Windows?我的70岁母亲都用了 21 年 Linux
  7. 爬虫常用的user_agent
  8. java blocked_Java 线程状态之 BLOCKED
  9. 我那曲折的英语学习经历:学不学语法,天差地远 转载自豆瓣
  10. Since Due to Because of Because 的用法和区别
  11. RabbitMq报错 Execution of Rabbit message listener failed
  12. M1 Mac 开发Android遇到的坑点与我的解决方法
  13. [ZT]一位美眉出差到深圳,被黑心的出租车司机绕路不说,而且把妹妹扔在路边,带着她的行李就跑了。...
  14. 小米手机如何关闭系统扩展服务器,小米手机如何关闭广告?MIUI12系统这样操作就够了...
  15. AppInfoUtil 获取App应用程序信息工具类
  16. cu3er 3D幻灯切换效果 div被遮住的解决方法
  17. PAT_乙级1014
  18. 2013华为工作之研究所行
  19. Photoshop开门十件事。
  20. item_review - 获得shopee商品评论

热门文章

  1. 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问——Win10
  2. 自动注册MSComm控件
  3. 【散文】 滴滴相思泪化雨
  4. 机器人总动员英语情歌_机器人总动员经典台词对白爱情电影英文独白
  5. Codeforces Round #701 (Div. 2)小结
  6. div 设置相对比例 即div width 100 无效
  7. web端输出打印地图(ArcGIS api for Javascript)一、地图打印模板的制作
  8. 避免优盘中毒或传播病毒的三个方法
  9. 云计算机不支持加密狗,电脑两个用户名会不会造成加密狗不能识别?
  10. SCI论文,你是先写中文再翻译么?