Android指南针代码示例
今天,我将分享一个有效的代码,为您的android设备制作一个非常简单的罗盘应用程序。
某些android设备(例如Huawei Y300和Lenovo P700i)不完全支持运动传感器,因此该代码不适用于它们。
影片示范
我们今天的代码将像这样运行:
所需文件
您需要创建自己的指南针图像。 在此示例中,我使用的是照片。 您的图片必须是透明背景的PNG,请勿使用我使用的jpg文件。
让我们编码
这是我们的MainActivity.java
package com.example.compassapp;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;
import android.widget.TextView;public class MainActivity extends Activity implements SensorEventListener {// define the display assembly compass pictureprivate ImageView image;// record the compass picture angle turnedprivate float currentDegree = 0f;// device sensor managerprivate SensorManager mSensorManager;TextView tvHeading;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// image = (ImageView) findViewById(R.id.main_iv);// TextView that will tell the user what degree is he headingtvHeading = (TextView) findViewById(R.id.tvHeading);// initialize your android device sensor capabilitiesmSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);}@Overrideprotected void onResume() {super.onResume();// for the system's orientation sensor registered listenersmSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onPause() {super.onPause();// to stop the listener and save batterymSensorManager.unregisterListener(this);}@Overridepublic void onSensorChanged(SensorEvent event) {// get the angle around the z-axis rotatedfloat degree = Math.round(event.values[0]);tvHeading.setText("Heading: " + Float.toString(degree) + " degrees");// create a rotation animation (reverse turn degree degrees)RotateAnimation ra = new RotateAnimation(currentDegree, -degree,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);// how long the animation will take placera.setDuration(210);// set the animation after the end of the reservation statusra.setFillAfter(true);// Start the animationimage.startAnimation(ra);currentDegree = -degree;}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// not in use}
}
我们的布局文件activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#fff" ><TextViewandroid:id="@+id/tvHeading"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginBottom="40dp"android:layout_marginTop="20dp"android:text="Heading: 0.0" /><ImageViewandroid:id="@+id/imageViewCompass"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/tvHeading"android:layout_centerHorizontal="true"android:src="@drawable/img_compass" /></RelativeLayout>
源代码下载
您可以在此处下载此示例项目: CompassApp.zip
一些注意事项
我的应用方向锁定为纵向模式。 清单文件中没有特殊权限。
进一步阅读
- Android SensorManager
- Android RotateAnimation
- Android运动传感器
翻译自: https://www.javacodegeeks.com/2013/09/android-compass-code-example.html
Android指南针代码示例相关推荐
- android应用示例代码_Android指南针代码示例
android应用示例代码 今天,我将分享一个有效的代码,为您的android设备制作一个非常简单的罗盘应用程序. 某些Android设备(例如Huawei Y300和Lenovo P700i)不完全 ...
- 【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
文章目录 前言 一.从 Android 应用跳转到 Google Play 代码 二.Google Play 页面的链接格式 三.Google Play 免安装体验 前言 本博客参考资料 链接到 Go ...
- 【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )
文章目录 一.ARM 架构下的插桩拦截 二.完整代码示例 一.ARM 架构下的插桩拦截 ARM 架构下的跳转指令 : 下面的二进制数都是十六进制数 ; 323232 位指令 ; 04 F0 1F E5 ...
- 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入代码示例 )
文章目录 总结 一.Android 事件依赖注入示例 1.创建依赖注入库 2.声明注解 (1).修饰注解的注解 (2).修饰方法的注解 3.Activity 基类 4.动态代理类调用处理程序 5.依赖 ...
- 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )
文章目录 总结 一.Android 视图依赖注入步骤 二.Android 布局依赖注入示例 1.创建依赖注入库 2.声明注解 3.Activity 基类 4.依赖注入工具类 5.客户端 Activit ...
- 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...
- 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
文章目录 一.创建支持 Kotlin 的 NDK 项目 二.Kotlin 语言中使用 NDK 要点 1.加载动态库 2.声明 ndk 方法 3.Project 下的 build.gradle 配置 4 ...
- 【Android 异步操作】HandlerThread 示例 ( 初始化并执行 | 获取Looper | 获取 Handler | 获取消息队列 | 设置空闲队列 | 代码示例 )
文章目录 一.HandlerThread 初始化 二.HandlerThread 获取Looper 三.HandlerThread 获取消息队列 MessageQueue 四.HandlerThrea ...
- 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )
文章目录 一.自定义线程池使用流程 二.自定义任务拒绝处理策略 三.完整代码示例 在博客 [Android 异步操作]线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTas ...
最新文章
- Kubernetes基本概念之Name和NameSpace
- httpclient 设置短连接_HTTP长连接、短连接使用及测试
- Spring MVC之表单标签
- BSTR、char* 和 CString 之间的转换 (转)
- iOS不同版本适配问题
- javamail发送邮件(转)
- logitech鼠标接收器配对
- Adobe flash player10安装失败的解决方法
- 88个塑胶模具设计中常用的知识点
- 情人节程序员用HTML网页表白【表白对话】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 2年工作经验杂谈(java开发)
- 【HUSTOJ】1049: 字符图形5-星号梯形
- JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,respon 区别
- ubuntu 查询uuid_ubuntu
- 客户体验模型|客户体验分析的四个关键要素
- 如何用html5做个人中心,个人中心页面从思考到设计全过程
- Android中的EditText属性说明
- Ureport2导出内容加入PDF文件
- ueditor统计字数中文_UEditor编辑器 字符数统计和字符数限制 问题
- 向 iOS 越狱彻底说再见!