方向感測器的使用:
sensor sensor = sensormanager.getdefaultsensor(sensor.type_orientation);
可以通過以上的方法獲取方向感測器,可以安卓早就廢棄了這個感測器型別,雖然**還是有效的,但已經不再推薦這麼寫了。
事實上,android獲取手機旋轉的方向和角度是通過加速度感測器和地磁感測器共同計算得出的,這也是 android 目
前推薦使用的方式。
將加速度感測器與地磁感測器的資料轉化為方向資料的關鍵:
1.得到乙個包含旋轉矩陣的r陣列
sensormanager.getrotationmatrix(r, null, accevalues, magneticvalues);
2.將r的結果傳入,獲取方向結果
sensormanager.getorientation(r, values);//計算手機的旋轉資料
values是乙個長度為 3 的 float 陣列,手機在各個方向上的旋轉資料都會被存放到這個陣列當中。
注意這裡計算出的資料都是以弧度為單位的,因此如果你想將它們轉換成角度還需要調
用如下方法:math.todegrees(values[0]);
values[0]的取值範圍是:180 度到 180 度,
其中±180 度表示正南方向,0 度表示正北方向,90 度表示正西方向,90 度表示正東方向。
**如下:
//通過加速度感測器與地磁感測器獲取方向
public
class orientationdemo extends
activity
private sensoreventlistener listener=new
sensoreventlistener() else
if(event.sensor.gettype()==sensor.type_magnetic_field)
//注意在賦值的時候一定要呼叫一下 values 陣列的 clone()方法,不
//然 accevalues和 magneticvalues將會指向同乙個引用。
float r=new
float[9];//
getrotationmatrix()方法計算出的旋轉資料賦值到這個陣列當中
float values=new
float[3];//
存放旋轉的方向資料
sensormanager.getrotationmatrix(r, null
, accevalues, magneticvalues);
sensormanager.getorientation(r, values);
//獲取手機的旋轉資料
tv.settext("方向繞z軸:"+values[0]+"幅度 "+math.todegrees(values[0])+"°"
+"\n方向繞x軸:"+values[1]+"幅度 "+math.todegrees(values[1])+"度"
+"\n方向繞y軸:"+values[2]+"幅度 "+math.todegrees(values[2])+"°");
/*todegrees方法的作用為將幅度轉換成角度,values[0]的取值範圍是:180 度到-180度,也代表手機螢幕上方與正北方向的夾角
其中±180度表示正南方向,0 度表示正北方向,-90度表示正西方向,90度表示正東方向。指南**見下
.........放入指南***/}
將該顯示到螢幕上,北朝著手機螢幕上方,並且假設這時的北所指方向為實際的北,那麼當手機順時針旋轉了90度後北就指到了東的位置,那麼想要將北指向北,就需要這張逆時針旋轉90度,定義指南的**如下:
//將計算出的旋轉角度取反,用於旋轉指南針背景圖
float rotatedegree = -(float) math.todegrees(values[0]);
if (math.abs(rotatedegree - lastrotatedegree) > 1)
lastrotatedegree需要在該方法外面定義方向感測器
方向感測器是加速度感測器 gsensor 的廉價替代品,能完成gsensor的一些功能。下面根據網上資料介紹其原理。rohm四方向感測器rpi 1031簡介 工作原理 1.通過光學原理實現 內部有發光二極體乙個,光敏接收三極體兩個 另外有一顆圓柱型的遮光物 如圖所示 對應的電路圖如下 2.通過圓柱型...
Android開發之方向感測器的
android開發之方向感測器的使用 東風破 android中的方向感測器在生活中是乙個很好的應用,典型的例子是指南針的使用,我們先來簡單介紹一下感測器中三個引數x,y,z的含義,以一幅圖來說明。圖 1 補充說明 圖中的座標軸x,y,z和感測器中的x,y,z沒有任何聯絡 如上圖所示,綠色部分表示乙個...
2 感測器 動作感測器
動作感測器概述 android平台支援一些用於監視裝置動作的感測器 這樣的感測器共有5個 其中兩個 加速感測器和陀螺儀感測器 是純的硬體感測器。另外三個 重力感測器 線性加速感測器和旋轉向量感測器 可能是硬體感測器,也可能是軟體感測器。例如,在一些android裝置中,這些基於軟體的感測器會從加速和...