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

 更新时间:2013年06月02日 15:42:57   作者:  
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>

相关文章

  • Android实现图片阴影效果的方法

    Android实现图片阴影效果的方法

    这篇文章主要介绍了Android实现图片阴影效果的方法,是比较实用的功能,需要的朋友可以参考下
    2014-07-07
  • Kotlin WorkManager使用方法详解

    Kotlin WorkManager使用方法详解

    这篇文章主要介绍了Kotlin WorkManager使用方法,WorkManager是 安卓体系结构之一,也是Android JetPack的一部分。WorkManager用于可延期并需要保证执行的后台工作
    2023-01-01
  • Flutter Zone异常处理方法及基本原理

    Flutter Zone异常处理方法及基本原理

    这篇文章主要为大家介绍了Flutter Zone异常处理方法及基本原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android实现延迟的几种方法小结

    Android实现延迟的几种方法小结

    这篇文章主要介绍了Android实现延迟的几种方法,结合实例总结了Android实现延迟的几种常见技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-02-02
  • Android中RecyclerView实现商品分类功能

    Android中RecyclerView实现商品分类功能

    这篇文章主要为大家详细介绍了Android中RecyclerView实现商品分类功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Android自定义带动画效果的圆形ProgressBar

    Android自定义带动画效果的圆形ProgressBar

    这篇文章主要为大家详细介绍了Android自定义带动画效果的圆形ProgressBar,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • ExpandableListView实现简单二级列表

    ExpandableListView实现简单二级列表

    这篇文章主要为大家详细介绍了ExpandableListView实现简单二级列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Android编程实现根据不同日期计算天数差的方法

    Android编程实现根据不同日期计算天数差的方法

    这篇文章主要介绍了Android编程实现根据不同日期计算天数差的方法,涉及Android调用日期类Calendar实现时间运算的相关技巧,需要的朋友可以参考下
    2016-03-03
  • android获取图片尺寸的两种方式及bitmap的缩放操作

    android获取图片尺寸的两种方式及bitmap的缩放操作

    这篇文章主要介绍了android获取图片尺寸的两种方式及bitmap的缩放操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Android 动画实现几种方案

    Android 动画实现几种方案

    这篇文章主要介绍了Android 动画实现几种方案的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论