Android 利用方向传感器实现指南针具体步骤

fengbop

fengbop

2016-02-19 09:36

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的Android 利用方向传感器实现指南针具体步骤教程,一起来看看吧!超容易上手~
step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中
 
step2:设计应用的UI界面,main.xml
代码如下:

SPAN style="FONT-SIZE: 18px"STRONG?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"

ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/compass"
android:id="@+id/imageView"
/
/LinearLayout/STRONG/SPAN

step3:MainActivity.java
代码如下:

import android.app.Activity;
import android.content.Context;
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 ImageView imageView;
/** 传感器管理器 */
private SensorManager manager;
private SensorListener listener = new SensorListener();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView) this.findViewById(R.id.imageView);
imageView.setKeepScreenOn(true);//屏幕高亮
//获取系统服务(SENSOR_SERVICE)返回一个SensorManager 对象
manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
/**
* 获取方向传感器
* 通过SensorManager对象获取相应的Sensor类型的对象
*/
Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
//应用在前台时候注册监听器
manager.registerListener(listener, sensor,
SensorManager.SENSOR_DELAY_GAME);
super.onResume();
}
@Override
protected void onPause() {
//应用不在前台时候销毁掉监听器
manager.unregisterListener(listener);
super.onPause();
}
private final class SensorListener implements SensorEventListener {
private float predegree = 0;
@Override
public void onSensorChanged(SensorEvent event) {
/**
* values[0]: x-axis 方向加速度
   values[1]: y-axis 方向加速度
   values[2]: z-axis 方向加速度
*/
float degree = event.values[0];// 存放了方向值
/**动画效果*/
RotateAnimation animation = new RotateAnimation(predegree, degree,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
animation.setDuration(200);
imageView.startAnimation(animation);
predegree=-degree;

/**
float x=event.values[SensorManager.DATA_X];
float y=event.values[SensorManager.DATA_Y];
float z=event.values[SensorManager.DATA_Z];
Log.i("XYZ", "x="+(int)x+",y="+(int)y+",z="+(int)z);
*/
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
}

step4:AndroidManifest.xml
代码如下:

SPAN style="FONT-SIZE: 18px"STRONG?xml version="1.0" encoding="utf-8"?
manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.roco.sensor"
android:versionCode="1"
android:versionName="1.0"
uses-sdk android:minSdkVersion="8" /
application android:icon="@drawable/icon" android:label="@string/app_name"
activity android:name="MainActivity"
android:label="@string/app_name"
intent-filter
action android:name="android.intent.action.MAIN" /
category android:name="android.intent.category.LAUNCHER" /
/intent-filter
/activity
/application
/manifest/STRONG/SPAN
展开更多 50%)
分享

猜你喜欢

Android 利用方向传感器实现指南针具体步骤

编程语言 网络编程
Android 利用方向传感器实现指南针具体步骤

Android利用方向传感器获得手机的相对角度实例说明

编程语言 网络编程
Android利用方向传感器获得手机的相对角度实例说明

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

手机指南针怎么使用

手机软件 应用软件
手机指南针怎么使用

指南针简笔画画法步骤图解

简笔画 儿童简笔画 手工制作
指南针简笔画画法步骤图解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

iphone指南针的使用

iphone iPhone 5s iPhone 6 iphone刷机
iphone指南针的使用

iphone指南针使用教程

iphone iPhone 5s iPhone 6 iphone刷机
iphone指南针使用教程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java 项目生成静态页面的代码

Java 项目生成静态页面的代码

U盘"扩容"的方法

U盘"扩容"的方法
下拉加载更多内容 ↓