久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2898|回復: 0
打印 上一主題 下一主題
收起左側

android Sensor

[復制鏈接]
跳轉到指定樓層
樓主
ID:104287 發表于 2016-1-31 02:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 /*********************************************

Android傳感器:

2015-03-04 16:17:19

*******************************************/

STEP:

Step1:為MainAvtivy extern 添加Senser接口:

 

public class RemotetempActivity extends Activity implements SensorEventListener{ ……………

 

 

Step2:添加兩個全局類型如下,一個為管理器類型一個傳感器類型:

 

 private SensorManager mSensorManager;   

 private Sensor mOrientation;

 

 

Step3:初始化管理器并打開傳感器(OnCreate)

 

mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

mOrientation=mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); 

 

Step4OnResume()中注冊傳感器事件

 

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

//注冊傳感器事件

mSensorManager.registerListener(this,mOrientation,SensorManager.SENSOR_DELAY_NORMAL);

}

 

 

Step5onSensorChanged()中捕獲傳感器變化。這個函數是在Step1Implements時自動添加的

@Override

public void onSensorChanged(SensorEvent arg0) {

// TODO Auto-generated method stub

 float azimuth_angle = arg0.values[0]; 

 float pitch_angle = arg0.values[1];

         String tt=Float.toString(azimuth_angle);

         //Toast.makeText(RemotetempActivity.this,tt,Toast.LENGTH_SHORT).show();

        // tt=""

         tv.setText(tt);

}

 

Step6:在OnStop()中范注冊傳感器

 

 @Override

protected void onStop() {

// TODO Auto-generated method stub

         mSensorManager.unregisterListener(this);//反注冊傳感器

super.onStop();

}

 

資料:

 

 

 

1.android 的坐標系是如何定義x, y z 軸的。

 

x軸的方向是沿著屏幕的水平方向從左向右,如果手機不是正方形的話,較短的邊需要水平放置,較長的邊需要垂直放置。

Y軸的方向是從屏幕的左下角開始沿著屏幕的的垂直方向指向屏幕的頂端。

將手機放在桌子上,z軸的方向是從手機指向天空。

 

2.方向傳感器
           在方向傳感器中values變量的3個值都表示度數,它們的含義如下:
          values[0]:該值表示方位,也就是手機繞著Z軸旋轉的角度。0表示北(North);90表示東(East);180表示南(South);270表示西(West)。如果values[0]的值正好是這4個值,并且手機是水平放置,表示手機的正前方就是這4個方向。可以利用這個特性來實現電子羅盤,實例76將詳細介紹電子羅盤的實現過程。
      values[1]:該值表示傾斜度,或手機翹起的程度。當手機繞著X軸傾斜時該值發生變化。values[1]的取值范圍是-180≤values[1]≤180。

假設將手機屏幕朝上水平放在桌子上,這時如果桌子是完全水平的,values[1]的值應該是0(由于很少有桌子是絕對水平的,因此,該值很可能不為0,但一般都是-5和5之間的某個值)。這時從手機頂部開始抬起,直到將手機沿X軸旋轉180度(屏幕向下水平放在桌面上)。在這個旋轉過程中,values[1]會在0到-180之間變化,也就是說,從手機頂部抬起時,values[1]的值會逐漸變小,直到等于-180。如果從手機底部開始抬起,直到將手機沿X軸旋轉180度,這時values[1]會在0到180之間變化。也就是values[1]的值會逐漸增大,直到等于180。可以利用values[1]和下面要介紹的values[2]來測量桌子等物體的傾斜度。
          values[2]:表示手機沿著Y軸的滾動角度。取值范圍是-90≤values[2]≤90。假設將手機屏幕朝上水平放在桌面上,這時如果桌面是平的,values[2]的值應為0。將手機左側逐漸抬起時,values[2]的值逐漸變小,直到手機垂直于桌面放置,這時values[2]的值是-90。將手機右側逐漸抬起時,values[2]的值逐漸增大,直到手機垂直于桌面放置,這時values[2]的值是90。在垂直位置時繼續向右或向左滾動,values[2]的值會繼續在-90至90之間變化。

3.加速傳感器
    該傳感器的values變量的3個元素值分別表示X、Y、Z軸的加速值。例如,水平放在桌面上的手機從左側向右側移動,values[0]為負值;從右向左移動,values[0]為正值。

4.重力感應器
加速度傳感器的類型常量是Sensor.TYPE_GRAVITY。重力傳感器與加速度傳感器使用同一套坐標系。values數組中三個元素分別表示了X、Y、Z軸的重力大小。

5.陀螺儀傳感器
   陀螺儀傳感器的類型常量是Sensor.TYPE_GYROSCOPE。values數組的三個元素表示的含義如下:

values[0]:延X軸旋轉的角速度。
values[1]:延Y軸旋轉的角速度。
values[2]:延Z軸旋轉的角速度。
當手機逆時針旋轉時,角速度為正值,順時針旋轉時,角速度為負值。陀螺儀傳感器經常被用來計算手機已轉動的角度。
 
近程傳感器(Sensor.TYPE_PROXIMITY)
 
線性加速度傳感器(Sensor.TYPE_LINEAR_ACCELERATION)

旋轉向量傳感器(Sensor.TYPE_ROTATION_VECTOR)
磁場傳感器(Sensor.TYPE_MAGNETIC_FIELD)
壓力傳感器(Sensor.TYPE_PRESSURE)
溫度傳感器(Sensor.TYPE_TEMPERATURE)

======================================

陀螺儀的強項在于測量設備自身的旋轉運動。對設備自身運動更擅長。但不能確定設備的方位。
      加速計的強項在于測量設備的受力情況。對設備相對外部參考物(比如,地面)的運動更擅長。但用來測量設備相對于地面的擺放姿勢,則精確度不高。
      磁力計的強項在于定位設備的方位。可以測量出當前設備與東南西北四個方向上的夾角。


舉幾個例子:
陀螺儀對設備旋轉角度的檢測是瞬時的而且是非常精確的,能滿足一些需要高分辨率和快速反應的應用比如FPS游戲的瞄準。而且陀螺儀配合加速計可以在沒有衛星 和網絡的情況下進行導航,這是陀螺儀的經典應用。加速度計可用于有固定的重力參考坐標系、存在線性或傾斜運動但旋轉運動被限制在一定范圍內的應用。同時處 理直線運動和旋轉運動時,就需要把加速度和陀螺儀計結合起來使用。如果還想設備在運動時不至于迷失方向,就再加上磁力計。


對于一個發射出去的導彈來說,要想精確追蹤并調整導彈的軌道的話,下面幾組數據必不可少:
GPS定位它的位置
加速計測量當前加速度
磁力計確定導彈頭的方向(只能知道東南西北四個方向上的夾角),陀螺儀知道導彈的角速度。這兩個儀器結合才能確定導彈的準確的立體運動方向。


加速計得到的結果就是XYZ三個值,分別代表三個方向的加速度。關于XYZ三值的介紹,可以看這里:
android 重力感應和屏幕旋轉關系
http://blog.csdn.net/lzx_bupt/archive/2010/04/20/5507165.aspx

采用重力加速度感應控制屏幕旋轉最為理想。

不方便作圖,簡單說:重力加速度感應可以想象成一個小球在坐標系中,三個方向上的加速度。永遠以手機屏幕為準,不以外界為準作圖,手機水平放置,向上是y軸正向,向右是x軸正向,向外是z軸正向。這和高數坐標系一樣。

注意:你移動手機反映在坐標系上你移動的是坐標系遠點(旋轉)

 

1. Accelrator的x,y,z軸的正負向變化:

    手機屏幕向上水平放置時: (x,y,z) = (0, 0, -9.81)

    當手機頂部抬起時: y減小,且為負值

    當手機底部抬起時: y增加,且為正值

    當手機右側抬起時: x減小,且為負值

    當手機左側抬起時: x增加,且為正值

2. Accelrator的z軸的變化:

   手機屏幕向上水平放置時,z= -9.81

   手機屏幕豎直放置時,      z=  0

   手機屏幕向下水平放置時,z=  9.81

3. 系統默認屏幕橫豎切換

   當y變為-5時, 手機畫面切換為豎向
   當x變為-5時, 手機畫面切換為橫向

 

4.根據需要你可以設定你想要的旋轉閾值

=====================================
用加速計和磁力計可以計算出orientation(方位計),orientation涉及到了三個概念:
Roll:左右傾斜角度,也叫滾轉角 http://baike.baidu.com/view/1769672.htm
Pitch:前后傾斜,也叫俯仰角 http://baike.baidu.com/view/3832041.htm
Yaw:左右搖擺,也叫偏航角 http://baike.baidu.com/view/1769448.htm

 

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩91| 在线 丝袜 欧美 日韩 制服 | 国产日韩欧美 | 久久亚洲国产精品 | 日本黄色高清视频 | 日韩电影一区二区三区 | 午夜影院网站 | 久久综合888 | 成人永久免费视频 | 91激情视频| 日本涩涩视频 | 国产精品一区二区三区在线 | 日韩精品a在线观看图片 | 色综合一区二区三区 | 精品久久精品 | 日本一区二区三区免费观看 | 99久久精品免费看国产四区 | 精品免费国产视频 | 欧美视频精品 | 91在线视频在线观看 | 成人免费大片黄在线播放 | 曰批视频在线观看 | 综合久久av | 精品视频在线播放 | 国产成人精品免费视频大全最热 | 久久国产美女视频 | 欧美精品乱码久久久久久按摩 | 福利视频一区二区 | 欧美啪啪网站 | 91精品一区 | 日韩精品一二三区 | 国产精品福利视频 | 欧美aaaaaaaaaa | 国产片侵犯亲女视频播放 | 日产精品久久久一区二区福利 | 狠狠干综合视频 | 国产精品国产精品国产专区不卡 | 国产色网 | 在线观看成年视频 | 成人免费视频观看 | 日韩欧美不卡 |