1. 程式人生 > >Pro Android學習筆記(一五七):感測器(7):其他一些感測器

Pro Android學習筆記(一五七):感測器(7):其他一些感測器

Wei:本來想下面接著的是NFC,NFC是支援讀寫的,和其他感測器在程式設計上很不一樣,但是手頭上找不到支援NFC的手機,記得以前三星Galaxy系列支援,例如幾年前的S3,而國產手機要比較貴的才支援,P6和Z7 mini都不支援,有興趣可以閱讀http://blog.csdn.net/pku_android/article/details/7430788

重力感測器(Gravity Sensors)

重力感測器不是物理感測器,是在加速度感測器的基礎上,結合其他的硬體,例如陀螺儀,獲得更精確的資料。其讀數含義同加速度感測器。

線性加速度感測器(Linear Acceleration Sensors)

線性加速度感測器也不是物理感測器,是在加速度感測器的基礎上,結合其他的硬體,例如陀螺儀,獲得更精確的資料。線性加速度感測器的數值是加速度減去重力。對於靜止的物體,x,y,z為均為接近0的很小值。

旋轉向量感測器(Rotation Vector Sensors)

通過旋轉向量感測器將獲得四元數(quaternion),即[w,x,y,z],得到裝置的空間擺放情況,偉大的數學,不認識。大抵看用於3D遊戲等,在此只做讀取。利用旋轉向量感測器也可以獲得裝置的位置。下面是相關的程式碼:

public class VirtualJax extends Activity implements SensorEventListener{
    ....     
    private float[] rotVecValues = null;
    private float[] rotvecR = new float[9],rotQ = new float[4];
    private float[] rotvecOrientValues = new float[3];
   
    @Override


    public void onSensorChanged(SensorEvent event) {
        ... ...
        if(event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR){       
            if(rotVecValues == null){
                rotVecValues = new float[event.values.length];
            }
            for(int i = 0; i < rotVecValues.length; i++){
                rotVecValues[i] = event.values[i];
            }
   
            if(rotVecValues != null){
                SensorManager.getQuaternionFromVector(rotQ, rotVecValues);
                SensorManager.getRotationMatrixFromVector(rotvecR, rotVecValues);
                SensorManager.getOrientation(rotvecR, rotvecOrientValues);
            }
        }            
    }
   
    public void doUpdate(View v){
        ......
        if(rotvecOrientValues != null && mRotation == Surface.ROTATION_0){
            msg += String.format("Rotation Vector Sensor:\nazimuth %7.3f\npitch %7.3f\nroll %7.3f\nw,x,y,z %6.2f,%6.2f,%6.2f,%6.2f\n",
                    Math.toDegrees(rotvecOrientValues[0]),
                    Math.toDegrees(rotvecOrientValues[1]),
                    Math.toDegrees(rotvecOrientValues[2]),
                    rotQ[0],rotQ[1],rotQ[2],rotQ[3]);
        }   
        nowOne.setText(msg);
        ......
    }
   
}

執行情況如下:

相關推薦

Pro Android學習筆記 瞭解Intent 中

Intent的構成Intent可以帶有action,data(由URI表達),extra data(key/value map,鍵值對),指定的類名(成為component name)。一個intent至少攜帶上述的一個內容。Action。Action名,在上一筆記中已經給出兩種例子,一種是系統自帶的,如In

Pro Android學習筆記感測器7其他一些感測器

Wei:本來想下面接著的是NFC,NFC是支援讀寫的,和其他感測器在程式設計上很不一樣,但是手頭上找不到支援NFC的手機,記得以前三星Galaxy系列支援,例如幾年前的S3,而國產手機要比較貴的才支援,P6和Z7 mini都不支援,有興趣可以閱讀http://blog.csdn.net/pku_andro

Pro Android學習筆記 感測器5 磁場感測器和方位

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記三七Home Screen Widgets3配置Activity

map onclick widgets info xtra ces extends height appwidget 文章轉載僅僅能用於非商業性質,且不能帶有虛擬貨幣、積分、註冊等附加條件。轉載須註明出處http://blog.csdn.net/flowingfly

Pro Android學習筆記 Preferences 1 ListPreference

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記——ContentProvider

ContentProvider,Android四大元件之一。他是系統提供的一種抽象的資料服務。Android Developer對她的概述為:   大概意思就是說ContentProvider(內容提供者)就是為應用程式提供資料。他壓縮資料並通過ContentResol

Pro Android學習筆記六二聯絡人API5讀Raw Contacts

我們將讀取Raw Contacts的資訊。 Raw Contacts提供的資訊 程式碼和之前獲取整合聯絡人的表頭資訊類似,只是URI不同,Raw contacts的URI為ContactsContract.RawContacts.CONTENT_URI。 private void showHasWhat

Pro Android學習筆記六十聯絡人API3聯絡人資料

聯絡人資訊 檢視reference中android.provider.ContactsContract.CommonDataKinds可以知道該版本的Android API聯絡人中帶有哪些資訊。在API level 19中,我們看到有以下的資訊: 而各個資訊,例如Email,又有著他的結構,我們可以繼續

Pro Android學習筆記ActionBar3搜尋條

ActionBar中的搜尋條 我們同樣可以在Action Bar中嵌入搜尋條。在小例子中,我們在action bar中嵌入一個搜尋框的widget(稱為search view)。當我們輸入搜尋內容,能夠在指定的activity中開啟(稱為searchable activitiy),本例不做實質的搜尋,只是

Pro Android學習筆記六四聯絡人API7新增聯絡人

新增新的聯絡人,就要增添raw contacts,需要android.permission.WRITE_CONTACTS的許可權。下面是程式碼片段: //新增聯絡人的程式碼片段,入口為addContactTest()。showInfo()為在activity框中顯示資訊

Pro Android學習筆記使用者介面和控制13LinearLayout和TableLayout

佈局Layout Layout是容器,用於對所包含的view進行佈局。layout是view的子類,所以可以作為view嵌入到其他的layout中。Android的layout有LinearLayout、TableLayout,RelativeLayout、FrameLayout、GridLayout。 線

Pro Android學習筆記五四感測器4陀螺儀、加速感測器

陀螺儀 陀螺儀(Gyroscope sensor)測量裝置轉動的角速度。最早的陀螺儀發明在中國,科學應用則在西方,陀螺儀是為士大夫坐轎子看書是免收燭光搖曳發明的,這在很久之前一部西方拍的科教片看到,具體名字忘了。Pro Android 4.0中說陀螺儀的誤差會慢慢積累,因此通與加速感測器一致使用,通過Ka

Pro Android學習筆記Dialog2DialogFragment

DialogFragment的例項newInstance()已經在上一次學習筆記中實現。我們建立dialog的UI,可以通過重寫DialogFragment的兩個函式當中的一個來實現,這兩個函式是onCreateView()和onCreateDialog(),前者返回view,後者返回dialog,如同通過

Pro Android學習筆記 ActionBar1Home圖標區

ces tom 新的 方便 find rac vertica lba manifest ?? Pro Android學習筆記(四八):ActionBar(1):Home圖標區 2013年03月10日 ? 綜合 ? 共 3256字 ? 字號 小 中 大 ? 評論關閉

Pro Android學習筆記三十 Menu1 瞭解Menu

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記三四 Menu5 動態選單

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記十二 瞭解Intent

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記 十 ActionBar 3 搜尋條

ActionBar中的搜尋條我們同樣可以在Action Bar中嵌入搜尋條。在小例子中,我們在action bar中嵌入一個搜尋框的widget(稱為search view)。當我們輸入搜尋內容,能夠在指定的activity中開啟(稱為searchable activitiy),本例不做實質的搜尋,只是在指定

Pro Android學習筆記六十 Preferences4 MultiSelect List Preferen

ListPreference提供單選列表,我們可以通過CheckBoxPreference提供多選列表。此外,Android在3.0後提供MultiSelectListPreference,它的實現和ListPreference相似,不同的是還可以不選擇或者多個選擇。如圖所示。XML檔案在複合例子中加入相關的

Pro Android學習筆記五一 ActionBar4 標準和Tab模式

之前,我們學習的Action Bar是標準模式,Tab模式的如下圖所示。對於Tab,我們在Android學習筆記(二二): 多頁顯示-Tag的使用中學習過,但Action Bar的tab更適合fragment的使用。我們在之前實現的標準Action Bar的基礎上新增導航用的tab,程式碼如下:public