自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對(duì)Android應(yīng)用開發(fā)實(shí)踐說(shuō)明

移動(dòng)開發(fā) Android
谷歌在開放手機(jī)聯(lián)盟共同的開發(fā)了 Android這款手機(jī)操作系統(tǒng),這個(gè)聯(lián)盟由中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)電和 T-Mobile 等共同組成。

下面文章介紹下什么是Android應(yīng)用開發(fā),再介紹Android應(yīng)用開發(fā)的之前,首先先讓大家了解下什么是Android應(yīng)用開發(fā),Android在未公開之前常被傳聞為Google電話或GPhone。

為了實(shí)現(xiàn)我們的增強(qiáng)現(xiàn)實(shí)引擎,***還需要用到加速度傳感器數(shù)據(jù)。不過(guò),Android應(yīng)用開發(fā)已經(jīng)為我們簡(jiǎn)化了這些數(shù)據(jù)的收集工作。在上一篇介紹增強(qiáng)現(xiàn)實(shí)技術(shù)的文章中,我們的示例程序可以請(qǐng)求手機(jī)的方位,并調(diào)用位置管理器對(duì)象中的registerListener來(lái)檢索指南針數(shù)據(jù)。

我們也可以使用同樣的技術(shù)來(lái)請(qǐng)求加速度傳感器數(shù)據(jù),我們用來(lái)請(qǐng)求加速度傳感器數(shù)據(jù)的代碼如下所示:

  1. sensorMan = (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE);  
  2. sensorMan.registerListener(listener,  
  3.    sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),  
  4.    SensorManager.SENSOR_DELAY_FASTEST); 

我們調(diào)用了上下文對(duì)象(上述代碼中為ctx)的getSystemService方法。下面是用于方向監(jiān)聽器與加速度傳感器監(jiān)聽器的完整代碼。

  1. private SensorEventListener listener = new SensorEventListener(){  
  2.    public static volatile float direction = (float) 0;  
  3.    public static volatile float inclination;  
  4.    public static volatile float rollingZ = (float)0;  
  5.  
  6.    public static volatile float kFilteringFactor = (float)0.05;  
  7.    public static float aboveOrBelow = (float)0;  
  8.  
  9.    public void onAccuracyChanged(Sensor arg0, int arg1){}  
  10.  
  11.    public void onSensorChanged(SensorEvent evt)  
  12.    {  
  13.       float vals[] = evt.values;  
  14.         
  15.       if(evt.sensor.getType() == Sensor.TYPE_ORIENTATION)  
  16.       {  
  17.          float rawDirection = vals[0];  
  18.  
  19.          direction =(float) ((rawDirection * kFilteringFactor) +   
  20.             (direction * (1.0 - kFilteringFactor)));  
  21.  
  22.           inclination =   
  23.             (float) ((vals[2] * kFilteringFactor) +   
  24.             (inclination * (1.0 - kFilteringFactor)));  
  25.  
  26.                   
  27.           if(aboveOrBelow > 0)  
  28.              inclinationinclination = inclination * -1;  
  29.             
  30.          if(evt.sensor.getType() == Sensor.TYPE_ACCELEROMETER)  
  31.          {  
  32.             aboveOrBelow =  
  33.                (float) ((vals[2] * kFilteringFactor) +   
  34.                (aboveOrBelow * (1.0 - kFilteringFactor)));  
  35.          }  
  36.       }  
  37.    }  
  38. }; 

呵呵,這里的代碼稍微有點(diǎn)多,下面我們來(lái)了解一下。首先,要為監(jiān)聽器設(shè)置所有的值。這意味著,您可以隨時(shí)可以向監(jiān)聽器查詢指南針?lè)轿慌c手機(jī)傾角。這些值會(huì)隨著您請(qǐng)求的更新的類型的不同而有所變化。

然后,我們會(huì)收到傳感器信息,這時(shí)需要確定出兩種主要信息:
1. 手機(jī)指向
2. 屏幕相對(duì)于水平面的傾角

***種信息稱為方位角;第二種信息稱為傾角。為了確定這些值,***個(gè)計(jì)算任務(wù)就是過(guò)濾出攝像頭的指南針運(yùn)動(dòng)。這稱為翻轉(zhuǎn)過(guò)濾器(rolling filter)。變量direction用于指出手機(jī)頂部指向哪里,而非攝像頭本身指向哪里,所以我們需要進(jìn)行一些校正。

第二個(gè)數(shù)學(xué)計(jì)算任務(wù)是利用翻轉(zhuǎn)過(guò)濾器對(duì)斜度進(jìn)行處理,從而得到一個(gè)以度為單位的度量值,其中水平的度量值為90,向上或向下半傾的度量值為45,垂直向上或垂直向下的度量值為0。注意,當(dāng)?shù)脭?shù)為45的時(shí)候,我們無(wú)法確定手機(jī)到底是向上傾斜,還是向下傾斜。 這時(shí)加速度傳感器就派上用場(chǎng)了。

它能夠確定出傾角的正負(fù),正值表示從水平線向上,復(fù)制表示從水平線向下。簡(jiǎn)言之,我們需要的東西都能從加速度傳感器那里得到。到目前為止,打造自己增強(qiáng)現(xiàn)實(shí)技術(shù)引擎所需的工具我們已經(jīng)全部介紹過(guò)了,您還需要的就是少許數(shù)學(xué)知識(shí)、一些Android應(yīng)用開發(fā)和大量的精力了。

如果您對(duì)打造增強(qiáng)現(xiàn)實(shí)應(yīng)用程序的興趣遠(yuǎn)勝于打造增強(qiáng)現(xiàn)實(shí)引擎本身的話,可以關(guān)注我當(dāng)前正在為Android開發(fā)的一個(gè)開源的增強(qiáng)現(xiàn)實(shí)技術(shù)引擎。為了獲得更多的進(jìn)展情況,可以在Twitter上跟隨twitter.com/androidarkit。雖然我喜歡盡可能把所有的數(shù)學(xué)和繪圖代碼放在一起,并將三種信息統(tǒng)一疊放到攝像頭上。

但是這些已經(jīng)超出了本文的討論范圍。然而,本文加上上一篇文章,已經(jīng)構(gòu)成了對(duì)Android的指南針、攝像頭預(yù)覽、加速度傳感器與GPS子系統(tǒng)進(jìn)行了全面的介紹?,F(xiàn)在,您已經(jīng)具備了創(chuàng)建大型增強(qiáng)現(xiàn)實(shí)技術(shù)應(yīng)用程序所需的全部構(gòu)件。

【編輯推薦】

  1. 新一代的Android手機(jī)介紹
  2. 深度剖析Android SDK版本介紹
  3. 谷歌Android手機(jī)能否站穩(wěn)中國(guó)
  4. PythonAndroid深度剖析Android應(yīng)用程序的四種構(gòu) 造塊
  5. 探秘與眾不同的Android系統(tǒng)?
責(zé)任編輯:chenqingxiang 來(lái)源: 51CTO.com
相關(guān)推薦

2010-03-01 13:13:02

Python應(yīng)用線程

2010-02-26 10:55:53

Python系統(tǒng)程序

2022-08-04 10:12:49

桌面技術(shù)

2010-03-03 16:14:56

Android系統(tǒng)市場(chǎng)

2010-03-03 14:06:38

2009-02-20 19:46:58

AndroidGoogle收費(fèi)

2010-02-22 14:54:47

Python應(yīng)用程序

2012-12-13 09:47:50

2020-12-04 09:52:22

鴻蒙OS

2020-12-18 10:42:14

鴻蒙開發(fā)應(yīng)用

2020-12-03 10:05:07

鴻蒙OS

2020-12-08 09:45:33

鴻蒙OS應(yīng)用開發(fā)

2022-07-15 12:58:02

鴻蒙攜程華為

2010-02-04 14:01:44

Android應(yīng)用

2010-02-06 17:43:51

Android應(yīng)用

2010-03-05 15:11:49

Android開發(fā)類

2010-03-02 13:51:05

Android開發(fā)平臺(tái)

2023-02-23 15:56:51

2012-09-17 11:19:49

IBMdw

2010-03-03 17:56:44

Android應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)