日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android指南针程序的实现

發(fā)布時間:2023/12/29 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android指南针程序的实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Android中,指南針功能是依靠Android手機內(nèi)置的方向傳感器實現(xiàn)的。并且Android系統(tǒng)也已經(jīng)封裝好了針對這些傳感器的所需操作,不用我們從底層去了解,因此編程變得相當簡單。下面介紹如何實現(xiàn)指南針功能。

1、新建一個Activity,使其實現(xiàn)SensorEventListener接口。如下所示:

public class compassActivity extends Activity implements SensorEventListener { @Overridepublic void onAccuracyChanged(Sensor arg0, int arg1) {// TODO Auto-generated method stub}@Overridepublic void onSensorChanged(SensorEvent arg0) { } }

可以看到,SensorEventListener接口提供兩個重載方法,在這里我們只去復寫onSensorChanged方法,當傳感器的值發(fā)生變化時會觸發(fā)這個方法。我們就在這個方法中改變指南針的方向。


2、在介紹業(yè)務代碼之前,先來看一下Activity的布局:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><EditTextandroid:id="@+id/orientationEditText"android:layout_margin="10dp"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="orientation"/><ImageViewandroid:id="@+id/compassImage"android:layout_margin="10dp"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/orientationEditText"android:scaleType="fitCenter"android:src="@drawable/compass"/> </RelativeLayout>
其中EditText用來顯示傳感器角度變化值,ImageView則直觀的顯示這種變化。

2、業(yè)務實現(xiàn):

package com.gan.compass;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.EditText; import android.widget.ImageView;public class compassActivity extends Activity implements SensorEventListener {private EditText orientationEditText;private SensorManager SM;private ImageView compassImage;private float currentDegree = 0f;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_compass);orientationEditText = (EditText) findViewById(R.id.orientationEditText);compassImage = (ImageView) findViewById(R.id.compassImage);}@SuppressWarnings("deprecation")@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();SM = (SensorManager) getSystemService(SENSOR_SERVICE);SM.registerListener(compassActivity.this,SM.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onPause() {SM.unregisterListener(compassActivity.this);super.onPause();}@Overrideprotected void onStop() {SM.unregisterListener(compassActivity.this);super.onStop();}@Overridepublic void onAccuracyChanged(Sensor arg0, int arg1) {// TODO Auto-generated method stub}@Overridepublic void onSensorChanged(SensorEvent arg0) {int sensorType = arg0.sensor.getType();switch (sensorType) {case Sensor.TYPE_ORIENTATION:StringBuilder sb = new StringBuilder();sb.append("繞Z軸轉過的角度:");sb.append(arg0.values[0]);sb.append("\n繞X軸轉過的角度:");sb.append(arg0.values[1]);sb.append("\n繞Y軸轉過的角度:");sb.append(arg0.values[2]);orientationEditText.setText(sb.toString());//獲取手機繞Z軸轉過的角度float degree = arg0.values[0];//創(chuàng)建旋轉動畫,反向轉過degree度RotateAnimation ra = new RotateAnimation(currentDegree,-degree,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//設置動畫的持續(xù)時間ra.setDuration(200);//運行動畫compassImage.startAnimation(ra);currentDegree = -degree;break;}} }
以上代碼顯示,當傳感器的值發(fā)生變化時,我們就讓ImageView中的圖片發(fā)生相應的轉動,以指示方向。

效果如圖所示:




如需要下載工程源文件,請點擊:http://download.csdn.net/detail/ganzi1991/7125385






總結

以上是生活随笔為你收集整理的Android指南针程序的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。