600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > linux 股票指南针 Android 利用方向传感器实现 指南针

linux 股票指南针 Android 利用方向传感器实现 指南针

时间:2018-11-15 11:06:27

相关推荐

linux 股票指南针 Android 利用方向传感器实现 指南针

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

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

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/compass"

android:id="@+id/imageView"

/>

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

package="cn.roco.sensor"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

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