[原创]android学习之传感器--方向传感器
这里需要说明的是,如果手机上有支持方向传感器的硬件的话,应该可以,如果没有,此功能就不能实现:此功能基本上实现了一个指南针的效果1.布局文件的配置:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/south"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/compass"
/>
</LinearLayout>2.activity程序功能的实现:
package com.example.compass_test;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView iv;
private SensorManager sensorManager;
private Sensor sensor;
private MySensorEventListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.iv = (ImageView) this.findViewById(R.id.south);
this.iv.setKeepScreenOn(true);//保持屏幕的高亮
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
listener = new MySensorEventListener();
//获取传感器的管理者
sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
//方向传感器
sensor = this.sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
//注册监听
sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_GAME);
super.onResume();
}
private class MySensorEventListener implements SensorEventListener
{
float predergee = 0;
//当传感器的精度变化时
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
//当传感器发生改变的时候
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float[] values = event.values;
float degree = values;//表示正北方向夹角的度数
System.out.println("与长辈方向的夹角: " + degree);
/**
* RotateAnimation 是旋转动画:
* 参数:
* predergee:旋转的开始角度
* -degree:旋转的结束角度
* Animation.RELATIVE_TO_SELFX轴的伸缩模式
* 0.5fX轴的伸缩值
* Animation.RELATIVE_TO_SELFY轴的伸缩模式
* 0.5fY轴的伸缩值
*/
RotateAnimation rotateAnimation = new RotateAnimation(predergee,
-degree,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation.setDuration(200);//设置动画的持续时间
iv.startAnimation(rotateAnimation);//开始时间
predergee = -degree;
}
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
sensorManager.unregisterListener(listener);
super.onStop();
}
}
大大这是什么语言????
Java????
好腻害的说{:9_240:} 小人 发表于 2014-11-22 18:45
大大这是什么语言????
Java????
好腻害的说
恩恩! 是安卓应用程序开发!{:5_109:} 青玄 发表于 2014-11-22 11:04
恩恩! 是安卓应用程序开发!
不会Java哎 小人 发表于 2014-11-22 20:10
不会Java哎
不会可以学嘛!{:5_109:} 小人 发表于 2014-11-22 20:10
不会Java哎
不会可以学嘛!{:5_109:} 青玄 发表于 2014-11-22 12:40
不会可以学嘛!
目前学c ,发现c得学的东西好多{:9_240:}
人太笨学c感到困难 小人 发表于 2014-11-22 20:57
目前学c ,发现c得学的东西好多
人太笨学c感到困难
呵呵! 看来老兄刚学编程不久,别急,慢慢来! 青玄 发表于 2014-11-22 13:52
呵呵! 看来老兄刚学编程不久,别急,慢慢来!
额额{:9_240:}
小菜鸟一个,正在学习中
页:
[1]