《Android程序設(shè)計(jì)及實(shí)踐》課件第8章 Android特色開(kāi)發(fā)_第1頁(yè)
《Android程序設(shè)計(jì)及實(shí)踐》課件第8章 Android特色開(kāi)發(fā)_第2頁(yè)
《Android程序設(shè)計(jì)及實(shí)踐》課件第8章 Android特色開(kāi)發(fā)_第3頁(yè)
《Android程序設(shè)計(jì)及實(shí)踐》課件第8章 Android特色開(kāi)發(fā)_第4頁(yè)
《Android程序設(shè)計(jì)及實(shí)踐》課件第8章 Android特色開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

-1-傳感器的使用地圖定位Activity當(dāng)作AlertDialog顯示Fragment的使用為ActionBar添加Tabs本章目標(biāo)傳感器的使用傳感器能夠探測(cè)、感受外界的信號(hào)、物理?xiàng)l件(如光、熱、濕度)或化學(xué)組成(如煙霧),并將探知的信息按照一定規(guī)律變換成為電信號(hào)或其他所需形式的信息輸出,滿(mǎn)足對(duì)信息的傳輸、處理、存儲(chǔ)、顯示、記錄和控制等要求,傳感器是實(shí)現(xiàn)自動(dòng)檢測(cè)和自動(dòng)控制的首要環(huán)節(jié)。Sensor類(lèi)用于描述每個(gè)硬件傳感器的屬性-2-類(lèi)型常量功能描述Sensor.TYPE_ACCELEROMETER加速傳感器,它沿著三個(gè)坐標(biāo)軸返回當(dāng)前的加速度Sensor.TYPE_GYROSCOPE陀螺儀傳感器,在三個(gè)坐標(biāo)軸上以角度為單位返回當(dāng)前設(shè)備方向Sensor.TYPE_LIGHT亮度傳感器,以lux(勒克斯)為單位返回單個(gè)值的環(huán)境光傳感器,描述了環(huán)境光強(qiáng)度,用于動(dòng)態(tài)控制屏幕亮度Sensor.TYPE_MAGNETIC_FIELD地磁傳感器,沿著三個(gè)坐標(biāo)軸確定當(dāng)前的磁場(chǎng)Sensor.TYPE_ORIENTATION方向傳感器,返回設(shè)備的方向Sensor.TYPE_PRESSURE壓力傳感器,以kilopascals(千帕斯卡)為單位返回單個(gè)值的壓力傳感器,該值表示了在當(dāng)前設(shè)備上所施加的壓力Sensor.TYPE_PROXIMITY近程傳感器,以米為單位指示設(shè)備與目標(biāo)對(duì)象之間距離的鄰近距離傳感器,如何選擇目標(biāo)對(duì)象以及支持的距離,將取決于鄰近距離探測(cè)器的硬件實(shí)現(xiàn)。鄰近距離傳感器的一個(gè)典型的用法是在用戶(hù)的耳朵承受該設(shè)備時(shí)進(jìn)行檢測(cè)并自動(dòng)調(diào)整屏幕的亮度或者初始化一個(gè)語(yǔ)音命令Sensor.TYPE_TEMPERATURE溫度傳感器,以攝氏度為單位返回溫度的溫度計(jì),所返回的溫度可以是周?chē)块g溫度、設(shè)備電池溫度或者遠(yuǎn)程傳感器溫度SensorManagerSensorManager是傳感器的一個(gè)綜合管理類(lèi)。-3-方法功能描述getSensorList()獲得指定傳感器類(lèi)型的所有可用的傳感器列表registerListener()注冊(cè)一個(gè)傳感器監(jiān)聽(tīng)器unregisterListener()注銷(xiāo)一個(gè)傳感器監(jiān)聽(tīng)器getDefaultSensor()獲得默認(rèn)的傳感器對(duì)象getInclination()得到地磁傳感器傾斜角的弧度值getOrientation()得到設(shè)備旋轉(zhuǎn)的方向常量.功能描述SENSOR_DELAY_FASTEST以最快速的更新速率SENSOR_DELAY_GAME選擇一個(gè)適合在控制游戲中使用的更新速率SENSOR_DELAY_NORMAL默認(rèn)更新速率SENSOR_DELAY_UI指定一個(gè)適于更新UI功能的速率SENSOR_STATUS_ACCURACY_LOW傳感器的精確度很低并且需要校準(zhǔn)SENSOR_STATUS_ACCURACY_MEDIUM傳感器的數(shù)據(jù)具有平均精確度,校準(zhǔn)可能會(huì)改善閱讀效果SENSOR_STATUS_ACCURACY_HIGH傳感器使用的是最高精確度SENSOR_STATUS_UNRELIABLE傳感器數(shù)據(jù)不可靠,需要校準(zhǔn)傳感器且當(dāng)前不能讀取數(shù)據(jù)SensorManagersm=(SensorManager)getSystemService(SENSOR_SERVICE);List<Sensor>sensors=sm.getSensorList(Sensor.TYPE_ORIENTATION);List<Sensor>sensors=sm.getSensorList(Sensor.TYPE_ALL);SensorEventListenerSensorEventListener是傳感器監(jiān)聽(tīng)接口,包括兩個(gè)方法onSensorChanged(SensorEventevent)方法:監(jiān)控傳感器值的改變,該方法的參數(shù)是一個(gè)SensorEvent對(duì)象,該對(duì)象具有sensor(傳感器對(duì)象)、accuracy(精確度)、values(新值)、timestamp(事件)4個(gè)描述傳感器事件的屬性。onAccuracyChanged(Sensorsensor,intaccuracy)方法:響應(yīng)傳感器精準(zhǔn)度的變化,該方法具有兩個(gè)參數(shù):第1個(gè)參數(shù)表示傳感器;第2個(gè)參數(shù)是傳感器精準(zhǔn)度的反饋值。-4-//注冊(cè)一個(gè)傳感器監(jiān)聽(tīng)器sm.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);//注銷(xiāo)傳感器監(jiān)聽(tīng)器sm.unregisterListener(this);描述8.1地圖定位-百度地圖SDK由于傳統(tǒng)GPS定位具有啟動(dòng)時(shí)間長(zhǎng)、室內(nèi)可能無(wú)法定位等弊端,因此為了使用戶(hù)得到更好的體驗(yàn),實(shí)際開(kāi)發(fā)中應(yīng)盡量避免使用傳統(tǒng)GPS定位方法。本節(jié)將介紹如何使用百度地圖SDK實(shí)現(xiàn)定位功能。-5-百度地圖SDK介紹地圖:提供地圖(2D、3D)的展示和縮放、平移、旋轉(zhuǎn)、改變視角等地圖操作;地理編碼:提供地理坐標(biāo)和地址之間相互轉(zhuǎn)換的能力;線路規(guī)劃:支持公交信息查詢(xún)、公交換乘查詢(xún)、駕車(chē)線路規(guī)劃和步行路徑檢索;覆蓋物:提供多種地圖覆蓋物(自定義標(biāo)注、幾何圖形、文字繪制、地形圖圖層、熱力圖圖層等),滿(mǎn)足開(kāi)發(fā)者的各種需求;定位:采用多種定位模式,使用定位SDK獲取位置信息,使用地圖SDK我的位置圖層進(jìn)行位置展示;導(dǎo)航:支持調(diào)啟百度地圖導(dǎo)航和Web導(dǎo)航來(lái)滿(mǎn)足用戶(hù)對(duì)導(dǎo)航功能的需求除此之外,還有POI檢索、LBS云檢索、離線地圖和其他功能等。地圖定位-百度地圖SDK開(kāi)發(fā)百度地圖SDK的準(zhǔn)備工作:登錄百度地圖開(kāi)放平臺(tái)注冊(cè)百度開(kāi)發(fā)者帳號(hào)(/map/index.php)申請(qǐng)開(kāi)發(fā)百度地圖SDK所使用的密鑰獲取SDK開(kāi)發(fā)文檔與支持參考開(kāi)發(fā)文檔與百度地圖官方提供的DEMO進(jìn)行開(kāi)發(fā)-6-注意:在測(cè)試百度地圖時(shí),模擬器可能無(wú)法顯示地圖,請(qǐng)使用真機(jī)進(jìn)行測(cè)試;直接運(yùn)行此項(xiàng)目會(huì)無(wú)法顯示地圖,這是因?yàn)樯暾?qǐng)密鑰時(shí)填寫(xiě)的安全碼組成方式為“數(shù)字簽名+;+包名”,數(shù)字簽名可能不同,因此還是建議自行申請(qǐng)密鑰。特殊的對(duì)話框有時(shí)我們希望能夠展示更加復(fù)雜的Dialog,并且能夠?qū)ζ渲械目丶M(jìn)行靈活的事件處理等操作,雖然使用AlertDialog同樣能夠?qū)崿F(xiàn),但是相對(duì)于Activity的靈活性來(lái)說(shuō),還是有所不足。本節(jié)主要介紹如何將Activity作為Dialog顯示。-7-將Activity作為Dialog顯示,主要分為以下幾個(gè)步驟:編寫(xiě)主題樣式(為了保留Android4.0主題樣式,需要編寫(xiě)此文件,否則可省略)在AndroidManifest.xml中對(duì)此Activity定義主題樣式獲取SDK開(kāi)發(fā)文檔與支持為Activity編寫(xiě)layout布局文件Fragment簡(jiǎn)介1-8-Fragment(碎片)是Android3.0時(shí)添加的新控件,F(xiàn)ragment和Activity十分相似,甚至可以通過(guò)簡(jiǎn)單的修改Activity的父類(lèi)和部分生命周期方法即可輕松地將Activity轉(zhuǎn)為Fragment。Fragment還提供了靈活的頁(yè)面布局方式,可以將多個(gè)Fragmen合并放到同一個(gè)Activity中,也可以同一個(gè)Fragment重用到多個(gè)Activity中,F(xiàn)ragment和Activity非常相似,具有自己的生命周期,可以接收自己的事件,并且允許用戶(hù)動(dòng)態(tài)的對(duì)其進(jìn)行添加、刪除和替換操作。Fragment不能單獨(dú)顯示,需要依附一個(gè)Activity才能顯示,而且他的生命周期直接受到所依附的Activity生命周期影響。Fragment簡(jiǎn)介2-9-一個(gè)新聞應(yīng)用,主要有兩個(gè)頁(yè)面,分別為FragmentA和FragmentB,F(xiàn)ragmentA是新聞列表頁(yè)面,F(xiàn)ragmentB是新聞詳情頁(yè),點(diǎn)擊FragmentA中的條目,內(nèi)容會(huì)在FragmentB中展示。如果在平板電腦上應(yīng)用,那么我們可以將這兩個(gè)Fragment同時(shí)顯示到一個(gè)Activity中,從而使頁(yè)面更加豐富,而且用戶(hù)體驗(yàn)簡(jiǎn)單方便;如果是應(yīng)用到更小屏幕的手機(jī),那么就需要兩個(gè)頁(yè)面分別來(lái)展示列表和內(nèi)容。Fragment生命周期-10-Activity中添加Fragment-11-向Activity添加Fragment有兩種方式通過(guò)activity的layout布局文件添加<fragmentandroid:id="@+id/fragmenta"android:name="com.dh.ch08_8d4.MyFragmentA"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"/>通過(guò)代碼動(dòng)態(tài)添加FragmentMyFragmentAfragmentA=newMyFragmentA();MyFragmentBfragmentB=newMyFragmentB();FragmentManagermanager=getFragmentManager();FragmentTransactiontransaction=manager.beginTransaction();transaction.add(R.id.fl_fragmenta_activity,fragmentA);transaction.add(R.id.fl_fragmentb_activity,fragmentB);mit();ActionBar擴(kuò)展-Tabs-12-目前各種各樣的Tabs(選項(xiàng)卡)應(yīng)用非常廣泛,它最大的用途就是實(shí)現(xiàn)多個(gè)頁(yè)面來(lái)回切換,使用起來(lái)非常便捷,ActionBar提供了一個(gè)更加智能,更加統(tǒng)一的Tabs,他可以實(shí)現(xiàn)自動(dòng)匹配屏幕大小,因此,也是官方推薦的一種展示方式。ActionBar擴(kuò)展-Tabs-13-在ActionBar的Tabs中,每個(gè)Tab對(duì)應(yīng)一個(gè)Fragment,因此首先需要?jiǎng)?chuàng)建3個(gè)FragmentprotectedclassMyTabListenerimplementsTabListener{ ... publicMyTabListener(Activityact,Stringtag,Class<?>fragmentCls){…} //Tab被選中時(shí)調(diào)用

@Override publicvoidonTabSelected(Tabarg0,FragmentTransactionft){…} //Tab取消選中

@Override publicvoidonTabUnselected(Tabarg0,FragmentTransactionft){…} //Tab被重新選中

@Override publicvoidonTabReselected(Tabarg0,FragmentTransactionft){…}}在MyActionBarActivity.java中添加內(nèi)部類(lèi)MyTabListener用作監(jiān)聽(tīng)Tabs點(diǎn)擊事件ActionBar擴(kuò)展-Tabs-14-//顯示ActionBarTabsactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//向Tabs中添加Fragment并進(jìn)行監(jiān)聽(tīng)Tabtab=actionBar.newTab().setText("AFragment").setTabListener( newMyTabListener(this,"a",AFragment.class));actionBar.addTab(tab);在MyActionBarActivity.java的onCreate()中添加Tab-15-小結(jié):Android對(duì)每個(gè)設(shè)備的傳感器實(shí)現(xiàn)進(jìn)行了抽象,Sensor類(lèi)用于描述每個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論