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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android -- 传感器使用示例, 用方向传感器做指南针

發(fā)布時間:2023/12/14 Android 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android -- 传感器使用示例, 用方向传感器做指南针 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.

傳感器類型:方向、加速度(重力)、光線、磁場、距離(臨近性)、溫度等。

? 方向傳感器:?? Sensor.TYPE_ORIENTATION

? 加速度(重力)傳感器: Sensor.TYPE_ACCELEROMETER

? 光線傳感器:??? Sensor.TYPE_LIGHT

? 磁場傳感器:?? Sensor.TYPE_MAGNETIC_FIELD

? 距離(臨近性)傳感器: Sensor.TYPE_PROXIMITY

? 溫度傳感器:?? Sensor.TYPE_TEMPERATURE

//獲取某種類型的感應(yīng)器

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

//注冊監(jiān)聽,獲取傳感器變化值

sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);

上面第三個參數(shù)為采樣率:最快、游戲、普通、用戶界面。當(dāng)應(yīng)用程序請求特定的采樣率時,其實只是對傳感器子系統(tǒng)的一個建議,不保證特定的采樣率可用。

最快: SensorManager.SENSOR_DELAY_FASTEST

最低延遲,一般不是特別敏感的處理不推薦使用,該種模式可能造成手機電力大量消耗,由于傳遞的為原始數(shù)據(jù),算法不處理好將會影響游戲邏輯和UI的性能。

游戲: SensorManager.SENSOR_DELAY_GAME

游戲延遲,一般絕大多數(shù)的實時性較高的游戲都使用該級別。

普通: SensorManager.SENSOR_DELAY_NORMAL

標(biāo)準(zhǔn)延遲,對于一般的益智類或EASY級別的游戲可以使用,但過低的采樣率可能對一些賽車類游戲有跳幀現(xiàn)象。

用戶界面: SensorManager.SENSOR_DELAY_UI

一般對于屏幕方向自動旋轉(zhuǎn)使用,相對節(jié)省電能和邏輯處理,一般游戲開發(fā)中我們不使用。

?

2. 示例 方向傳感器做指南針

方向傳感器 x y z 值的含義

/*x該值表示方位,0代表北(North);90代表東(East);180代表南(South);270代表西(West

? ? 如果x值正好是這4個值之一,并且手機是水平放置,手機的頂部對準(zhǔn)的方向就是該值代表的方向。

?

? y值表示傾斜度,或手機翹起的程度。當(dāng)手機繞著X軸傾斜時該值發(fā)生變化。y值的取值范圍是-180≤y值 ≤180。

? 假設(shè)將手機屏幕朝上水平放在桌子上,這時如果桌子是完全水平的,y值應(yīng)該是0(由于很少有桌子是絕對水平的,

? 因此,該值很可能不為0,但一般都是-55之間的某個值)。這時從手機頂部開始抬起,直到將手機沿X軸旋轉(zhuǎn)180度(屏幕向下水平放在桌面上)。

? 在這個旋轉(zhuǎn)過程中,y值會在0-180之間變化,也就是說,從手機頂部抬起時,y的值會逐漸變小,

? 直到等于-180。如果從手機底部開始抬起,直到將手機沿X軸旋轉(zhuǎn)180度,這時y值會在0180之間變化。

? 也就是y值會逐漸增大,直到等于180??梢岳?/span>y值和z值來測量桌子等物體的傾斜度。

?

? z值表示手機沿著Y軸的滾動角度。表示手機沿著Y軸的滾動角度。取值范圍是-90≤z值≤90。

? 假設(shè)將手機屏幕朝上水平放在桌面上,這時如果桌面是平的,z值應(yīng)為0。將手機左側(cè)逐漸抬起時,

? z值逐漸變小,直到手機垂直于桌面放置,這時z值是-90。將手機右側(cè)逐漸抬起時,z值逐漸增大,

? 直到手機垂直于桌面放置,這時z值是90。在垂直位置時繼續(xù)向右或向左滾動,z值會繼續(xù)在-9090之間變化。

? */

示例代碼

public class MainActivity extends Activity {private ImageView iv;private SensorManager sensorManager;private MyListener listener;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv = (ImageView) findViewById(R.id.iv);sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);// 獲取系統(tǒng)的方向傳感器Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);// sensorManager.getOrientation(R, values)listener = new MyListener();sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_GAME);}private class MyListener implements SensorEventListener {float endAngle = 0;@Overridepublic void onSensorChanged(SensorEvent event) {float startAngle = event.values[0];System.out.println("角度:"+startAngle);RotateAnimation ra = new RotateAnimation(-endAngle, startAngle, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);iv.startAnimation(ra);endAngle = startAngle; //旋轉(zhuǎn)后 的角度}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}}@Overrideprotected void onDestroy() {sensorManager.unregisterListener(listener);listener = null;super.onDestroy();} }


?

?

總結(jié)

以上是生活随笔為你收集整理的Android -- 传感器使用示例, 用方向传感器做指南针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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