900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Android 利用方向传感器实现指南针具体步骤

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

时间:2022-09-24 03:53:58

相关推荐

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

想不想get新技能酷炫一下,今天小编就跟大家分享个简单的Android 利用方向传感器实现指南针具体步骤教程,一起来看看吧!超容易上手~

step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中

step2:设计应用的UI界面,main.xml

代码如下:

SPANSTRONG?xml version="1.0" encoding="utf-8"?

LinearLayout ""

""

""

""

""

ImageView

""

""

""

"+"

/

/LinearLayout/STRONG/SPAN

step3:

代码如下:

import ;

import ;

import ;

import Event;

import EventListener;

import Manager;

import ;

import ;

import ;

import ;

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

代码如下:

SPANSTRONG?xml version="1.0" encoding="utf-8"?

manifest ""

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。