【实例简介】

【实例截图】

【核心代码】

package cn.icast.zhinanzhen;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Matrix;

import android.graphics.Paint;

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 MainActivity extends Activity {

/**获取传感器管理类*/

private SensorManager sensorManager;

/**最新方向值*/

private float degrees;

/**上一次方向值*/

private float lastdegress;

SensorEventListener sensorEventListener = new SensorEventListener() {

/**加速度传感器获取的值*/

float[] acceleValues = new float[3];

/**地磁传感器获取的值*/

float[] magneticValues = new float[3];

@Override

public void onSensorChanged(SensorEvent event) {

//判断当前传感器是否是加速度传感器

if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){

//赋值时需要调用clone()方法

acceleValues = event.values.clone();

}else if(event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){

magneticValues = event.values.clone();

}

float[] values = new float[3];

float[] R = new float[9];

SensorManager.getRotationMatrix(R, null, acceleValues, magneticValues);

SensorManager.getOrientation(R, values);

degrees = -(float)Math.toDegrees(values[0]);

updateImgv();

}

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

};

/**指南针出示图片*/

private Bitmap bitmap;

/**指南针图片*/

private ImageView mCompassImgv;

/**临摹一张与指南针图片设置一模一样的空白图片*/

private Bitmap createBitmap;

/**地磁传感器*/

private Sensor masensor;

/**加速度传感器*/

private Sensor accesensor;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

masensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

accesensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

//注册方向传感器

sensorManager.registerListener(sensorEventListener, masensor, SensorManager.SENSOR_DELAY_GAME);

sensorManager.registerListener(sensorEventListener, accesensor,SensorManager.SENSOR_DELAY_GAME);

initView();

}

/**初始化控件*/

private void initView() {

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.compass);

mCompassImgv = (ImageView) findViewById(R.id.imgv_compass);

mCompassImgv.setImageBitmap(bitmap);

}

/**更新图片位置*/

private void updateImgv(){

RotateAnimation animation = new RotateAnimation(lastdegress, degrees,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

animation.setDuration(200);

animation.setFillAfter(true);

mCompassImgv.startAnimation(animation);

lastdegress = degrees;

}

@Override

protected void onDestroy() {

super.onDestroy();

sensorManager.unregisterListener(sensorEventListener);

}

}

android指南针校准 代码_android 指南针app源码(亲测可用)相关推荐

  1. PHP服务器在线测速系统源码+亲测可用

    正文: PHP服务器在线测速系统源码+亲测可用,已经可以近乎准确地测试本地到服务端的上下行速度和延迟波动轻量化程式. 下载方式: lanzou.com/ivMJb02uthla

  2. 最新图片在线加水印网页源码+亲测可用

    正文: 最新图片在线加水印网页源码+亲测可用,专门用于给图片加水印打码的工具,完全基于浏览器本地API,无任何网络请求. 程序: wwuwe.lanzouq.com/i1W4508nyhjc 图片:

  3. 最新版开源 ThinkPHP6云梦卡社区系统源码 亲测可用

    源码简介: 全新云梦卡是一体式安装程序非三个程序,安装简单方便,UI大气美观,有兴趣的自行去安装体验吧,其它就没什么好介绍的了. 测试了一下,基本上没有什么问题 下载链接(不免费) 网盘源码   密码 ...

  4. 云开发谁是卧底线下小游戏发牌助手微信小程序源码-亲测可用

    云开发谁是卧底线下小游戏源码,发牌助手微信小程序源码. "谁是卧底OL"是一个非常有趣,风靡全国的比拼语言表述能力.知识面与想象力的游戏. 谁是卧底OL是一款由开发商北游科技倾力打 ...

  5. 红包封面发货平台卡密系统全新红包封面平台可搭建分站独立后台的源码-亲测可用

    红包封面发货平台 卡密系统 全新红包封面平台 可搭建分站 独立后台的源码下载 1.此款为红包封面发货平台源码 2.平台支持自定义分站 3.拥有独立后台,独立版权 4.兼容性强虚拟主机也可部署 5.20 ...

  6. 新版仿彩虹代刷网系统源码+亲测可用

    正文: ①将源码上传至虚拟机或者服务器并解压,访问域名/install/index.php安装. ②安装成功后登录后台,后台路径域名/admin,初始账号 admin,密码123456 ③:修改后台账 ...

  7. android指南针校准 代码_Android指南针app的实现原理总结

    要想实现指南针功能,其实主要就是获取手机的方位,通过对比前一刻方位和现在手机方位算出手机旋转的角度,然后根据手机实际旋转的角度去旋转指南针的imageview.关键在于如何获取手机实际方位. 那么如何 ...

  8. android指南针校准 代码_Android 指南针传感器

    [android]代码库public void onSensorChanged(int sensor, float[] values) { synchronized (this) { if (sens ...

  9. 新版盲盒商城V4.0完整系统源码+亲测可用

    正文: 盲盒商城4.0,完整无阉割版本,100%能搭建出来,不是论坛阉割版的那种,完善了各种体系. 程序: wwkrg.lanzouh.com/iTFWE09ks6ed 图片:  

最新文章

  1. jQuery中用来让元素显示和隐藏的函数
  2. 解决wget下载中文乱码的方法
  3. HP 打印机驱动安装Return code:1603解决办法
  4. 如何使用python画折线图-Python数据可视化:使用Python画柱状图和折线图
  5. MySql数据库安装修改密码开启远程连接图解
  6. Intel Edision开发工具简介
  7. Mac 登陆 去掉 其他用户
  8. 护卫神怎么增加php版本_护卫神php套件 php版本升级方法(php5.5.24)
  9. 字节跳动被爆商业化部门大量裁员
  10. Java常用类库-AutoCloseable
  11. android 通知 按钮,在自定义通知中添加按钮操作
  12. Eclipse-JAVA版本
  13. c++的set_unexpected不起作用
  14. DB2获取CHAR字段数据的数据长度方法
  15. GTK、Qt和wxWidgets
  16. pygame下载报错
  17. VMware 分布式交换机
  18. python查询电脑序列号 CPU、主板、硬盘、MAC、BIOS
  19. sd卡 格式化 命令 linux,在Linux命令行上格式化SD卡、USB驱动器、闪存驱动器的方法...
  20. go 注册登录 mysql_golang实现用户登录注册的方法

热门文章

  1. 成都众恒微拓科技:怎么降低退款率
  2. 全差分运放阻抗匹配计算(三)
  3. 《围城》读后感:你的心是一座城,愿你城中有幸福
  4. 解决Mscomctl.ocx丢失的问题
  5. Velocity模板引擎
  6. three.js贴图之CubeTextureLoader全景贴图
  7. Unity3D编辑器插件开发
  8. 概率论:3.3期望与方差
  9. html树状图在线画板,五款在线思维导图工具,总有一款适合你
  10. R语言并行计算RC~bray-curtis~距离