不用传感器的指南针android app,传感器使用-指南针 - 维特的烦恼的个人空间 - OSCHINA - 中文开源技术交流社区...

package com.pas.classic.compass;

import com.pas.compass.R;

import cn.waps.AdInfo;

import cn.waps.AppConnect;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

import android.os.Bundle;

import android.provider.ContactsContract.AggregationExceptions;

import android.app.Activity;

import android.view.Menu;

import android.view.animation.Animation;

import android.view.animation.RotateAnimation;

import android.widget.AdapterViewFlipper;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

private SensorManager sm;

private ImageView iv_compass;

MyListener listener;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

sm = (SensorManager) getSystemService(SENSOR_SERVICE);

iv_compass = (ImageView) findViewById(R.id.iv_compass);

// 得到方向传感器

Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);

if (sensor == null) {

Toast.makeText(this, "您的手机没有方向感应器,即将退出", Toast.LENGTH_LONG).show();

finish();

return;

}

listener = new MyListener();

sm.registerListener(listener, sensor,

SensorManager.SENSOR_DELAY_FASTEST);

}

private class MyListener implements SensorEventListener {

float startangle = 0f;

/**

* 传感器数据变化执行

*/

@Override

public void onSensorChanged(SensorEvent event) {

/**

* 方向传感器时 此值代表与正北的角度

*/

float angle = Math.round(event.values[0]);

rotate(angle);

startangle = -angle;

}

private void rotate(float angle) {

RotateAnimation animation = new RotateAnimation(startangle, angle,

Animation.RELATIVE_TO_SELF, 0.5f,

Animation.RELATIVE_TO_SELF, 0.5f);

animation.setDuration(3000);

animation.setFillAfter(true);

iv_compass.startAnimation(animation);

}

/**

* 精确度发生变化 比如进入强磁场区收到干扰

*/

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

// TODO Auto-generated method stub

}

}

@Override

protected void onDestroy() {

sm.unregisterListener(listener);

super.onDestroy();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值