android 傳感器使用 Compass指南針的實現功能

以下是指南針通過方向傳感器而旋轉實現。

 

CompassDemo.java:

 

 

package com.example.activity;  
  
import android.app.Activity;  
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 CompassDemo extends Activity implements SensorEventListener {  
private ImageView imageView;  
SensorManager mSensorManager;  
private float currentDegree=0f;  
    @Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.compass);  
    imageView=(ImageView)findViewById(R.id.znzImage);  
    mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);  
}  
  
      
    @Override  
    protected void onResume() {  
        mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME);  
        super.onResume();  
    }  
      
      
    @Override  
    protected void onPause() {  
        mSensorManager.unregisterListener(this);  
        super.onPause();  
    }  
  
      
  
    @Override  
    protected void onStop() {  
        mSensorManager.unregisterListener(this);  
        super.onStop();  
    }  
  
  
    @Override  
    public void onAccuracyChanged(Sensor arg0, int arg1) {  
          
  
    }  
  
    @Override  
    public void onSensorChanged(SensorEvent event) {  
    int sensortype=event.sensor.getType();  
    switch(sensortype){  
    case Sensor.TYPE_ORIENTATION:  
        float degree=event.values[0];  
        RotateAnimation ra=new RotateAnimation(currentDegree,-degree,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);  
        ra.setDuration(200);  
        imageView.startAnimation(ra);  
        currentDegree=-degree;  
        break;  
    }  
  
    }  
  
}  

 

 

 

compass.xml:

 

<?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:background="#fff"  
    >  
<ImageView  
    android:id="@+id/znzImage"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:scaleType="fitCenter"  
    android:src="@drawable/znz" />  
</LinearLayout>  

 

 

 

在這裡給大傢分享一下指南針圖片znz:

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *