版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android5.0API的變化——開發(fā)人員注意
譯自
/intl/zh-cn/about/versions/android-5.0.html
——By
NashLegendSample示例在這里找:/googlesamples/原譯文在我的github上:/NashLegend/ProjectBabel/blob/master/Android%205.0%20APIs.md前排渣翻譯預(yù)警,如果你能提供更好更專業(yè)的翻譯或者提出修改意見就好了……APILevel:21Android5.0(LOLLIPOP)為用戶和開發(fā)人員提供了一些新特性,這篇文章將重點介紹一些值得注意的新增API。如果你已經(jīng)發(fā)布了一款app,請查看這里
Android5.0系統(tǒng)行為變化
以適配你的app.在Android5.0上,即使你沒有使用最新API或者新功能,這些新的系統(tǒng)行為仍可能會影響你的app。如果想看一些新平臺的更高級的特性,請看這里開始開發(fā)要為Android5.0開發(fā)app,請先使用SDKMnager下載最新的SDK和系統(tǒng)鏡像。升級你的targetAPI為使得你的app在Android獲得更好的表現(xiàn),請將你的targetSdkVersion設(shè)置成21。調(diào)用最新的Android5.0API的時候要注意在調(diào)用前判斷系統(tǒng)版本號以兼容之前的系統(tǒng)版本。不能使用低于minSdkVersion的API。詳見Android后向兼容性欲知更多有關(guān)API級別的事兒,看這里:啥是API級別用戶界面Materialdesign支持Android5.0新增了materialdesign樣式的支持.你可以通過materialdesign創(chuàng)建具有自然的動態(tài)效果和過渡風格的app.系統(tǒng)支持包括以下方面:系統(tǒng)自帶Materialdesign主題組件陰影RecyclerView組件以取代ListViewDrawable動畫和樣式效果。(這里應(yīng)該是指RippleDrawable之類)(Drawableanimationandstylingeffects)Materialdesign風格的動畫和activity過渡效果基于組件狀態(tài)的Animator。(Animatorsforviewpropertiesbasedonthestateoftheview)可定制的UI組件和工具欄(這里指的應(yīng)該是ToolBar)基于XML的矢量動畫和圖形(Animatedandnon-animateddrawables)欲知更多有關(guān)MaterialDesign的事兒,看這里。以及我翻譯的下面兩篇:在低版本Android上使用MaterialDesign。如何在你的App中應(yīng)用MaterialDesign設(shè)計風格?!白罱\行”界面上的多開的文檔和activity(相當于MFC等的多文檔)以前的版本中,“最近運行”界面對于一個app來說只能顯示用戶最近交互過的一個task?,F(xiàn)在你的應(yīng)用可以打開更多task以同時打開不同的文檔。這種新的多任務(wù)特性可以讓用戶在最近運行界面中快速在activity們和打開的文檔們之間任意切換。有可能使用這種并發(fā)任務(wù)的情景示例:瀏覽器標簽多開、看比賽多開、生產(chǎn)力工具(比如Word、PPT等)文檔多開、多窗口與多個妹子聊天等等。你的app可以通過ActivityManager.AppTask來管理這些task。要讓系統(tǒng)把你的activity當成一個新的task,在startActivity()的時候使用FLAG_ACTIVITY_NEW_DOCUMENT,你也可以在manifest文件中把activity的documentLaunchMode屬性設(shè)置成"intoExisting"
或者
"always"來實現(xiàn)這一點。為了避免“最近運行”界面太多太亂,你可以設(shè)置你的app可以顯示在此界面上的最大任務(wù)數(shù)量——設(shè)置manifest文件中的屬性android:maxRecents,目前的最大數(shù)量是每個用戶50個,RAM較小的手機則為25個。最近運行界面上的task可以設(shè)置為重啟時常駐(persistacrossreboots),可以設(shè)置android:persistableMode屬性以控制常駐行為。你也可以通過setTaskDescription()方法修改activity在最近運行界面上的顏色、標簽和圖標等可見元素。WebView更新Android5.0的WebView升級到了ChromiumM37,修復(fù)了諸多bug以及帶來了安全和穩(wěn)定性的加強,默認的user-agent也已經(jīng)升級到了。新的WebView引入了PermissionRequest類,可以允許你的app通過類似getUserMedia()賦予WebView攝像頭和麥克風的權(quán)限——當然前提是你的app也有相應(yīng)的權(quán)限。使用最新的onShowFileChooser()方法,你可以通過一個input選擇設(shè)備里的圖片和文件了。此外,新的WebView還帶來了對WebAudio,WebGL,WebRTC的支持。欲知更多WebView的新特性,請看這里。屏幕捕獲和分享Android5.0新增jection
API以讓你擁有捕獲和屏幕分享功能。舉個例子,如果你要在視頻會議app中添加屏幕分享功能的話,就可以使用這個功能。新的
createVirtualDisplay()
方法允許你的app將主屏幕內(nèi)容(thedefaultdisplay)捕獲到一個Surface對象上,這樣你的app就可以通過網(wǎng)絡(luò)對此進行分享。這個API只允許捕獲非敏感屏幕內(nèi)容,不能捕獲聲音。要進行屏幕捕獲,你的app必須要先發(fā)起一個對話框請求用戶同意,此請求通過發(fā)送createScreenCaptureIntent()
方法產(chǎn)生的Intent實現(xiàn)。你可以查看示例項目的MediaProjectionDemo來學習如何使用新的API。通知鎖屏通知從Android5.0開始可以在鎖屏界面上顯示通知。用戶可以通過設(shè)置選擇是否允許敏感通知內(nèi)容顯示在安全鎖屏界面(securelockscreen)上。你的應(yīng)用可以控制通知內(nèi)容的具體顯示級別,通過調(diào)用setVisibility()方法傳入下面值中的一個:VISIBILITY_PRIVATE:顯示基本信息,比如說icon,但是隱藏具體內(nèi)容。VISIBILITY_PUBLIC:顯示通知的所有內(nèi)容.VISIBILITY_SECRET:不顯示任何東西,icon也不顯示.如果你設(shè)置的是VISIBILITY_PRIVATE,你可以設(shè)置顯示敏感內(nèi)容的替代信息,比如“收到了3條QQ消息”,但是不顯示具體消息的聯(lián)系人。要提供這種顯示,首先用Notification.Builder創(chuàng)建一個替代通知。當創(chuàng)建private通知的時候,通過setPublicVersion()
方法將這個替代通知關(guān)聯(lián)到這個隱私通知上。Notifications元數(shù)據(jù)Android5.0通過關(guān)聯(lián)在你的通知上的元數(shù)據(jù)對通知進行智能排序。你可以通過Notification.Builder的下面這些方法設(shè)置這些元數(shù)據(jù):setCategory():告訴系統(tǒng)當設(shè)備處于優(yōu)先模式(比如這個通知表明來電、即時消息或者鬧鐘)時如何處理通知。setPriority():標記此通知的重要程度——是否比普通通知要高或者低。擁有PRIORITY_MAX
或者
PRIORITY_HIGH級別的通知在有聲音或者振動的情況下,會彈出一個浮動窗口。addPerson():允許你添加一個或者多個與此通知相關(guān)聯(lián)的人。這樣系統(tǒng)可以根據(jù)不同的人把通知分開,并按人物重要性排序。圖形對OpenGLES3.1的支持Android5.0為OpenGLES3.1增加java接口和native支持。3.1重要的新增功能包括:計算著色器(ComputeShaders)獨立的著色器對象間接呼叫指令多重采樣和模版紋理著色語言改進高級混合模式和調(diào)試擴展。對OpenGLES2.0和3.0和后向兼容性O(shè)penGLES3.1的java接口是GLES31。使用OpenGLES3.1的時候,請在manifest里面使用標簽及android:glEsVersion屬性聲明之,例如:<manifest>
<uses-feature
android:glEsVersion="0x00030001"
/>
...
</manifest>欲知更多OpenGLES的信息,包括設(shè)備對OpenGL支持的版本,請看OpenGLES指南。Android擴展包除了OpenGLES3.1,這個版本還提供了擁有java接口和native支持的擴展包以提供高級圖形功能。這個擴展包作為一個獨立的包發(fā)布擴展包支持:這塊兒不懂Guaranteedfragmentshadersupportforshaderstoragebuffers,p_w_picpaths,andatomics(FragmentshadersupportisoptionalinOpenGLES3.1.)TessellationandgeometryshadersASTC(LDR)texturecompressionformatPer-sampleinterpolationandshadingDifferentblendmodesforeachcolorp_w_uploadinaframebufferTheJavainterfacefortheextensionpackisprovidedwithGLES31Ext.Inyourappmanifest,youcandeclarethatyourappmustbeinstalledonlyondevicesthatsupporttheextensionpack.Forexample:<manifest>
<uses-feature
android:name=“android.hardware.opengles.aep”
android:required="true"
/>
...
</manifest>媒體高級相機功能的相機APIAndroid5.0引入了新的android.hardware.camera2
API以幫助fine-grain照片捕捉和圖像處理,你可以編程的方式通過調(diào)用getCameraIdList()
獲取系統(tǒng)的可用相機設(shè)備列表并通過。你可以通過
openCamera()
方法指定其中一個相機設(shè)備。要捕捉圖像,創(chuàng)建一個CameraCaptureSession并將捕獲到的圖像繪制到一個Surface對象上。CameraCaptureSession可設(shè)置為單拍或者一次性連拍多張(takesingleshotsormultiplep_w_picpathsinaburst)。需要繼承CameraCaptureSession.CaptureCallback類并設(shè)置到圖像捕獲請求里以獲得圖像捕獲完成事件。當系統(tǒng)完成圖像捕獲的時候,CameraCaptureSession.CaptureCallback將接到一個onCaptureCompleted()回調(diào),返回給你一個包含圖像元數(shù)據(jù)的
CaptureResult。CameraCharacteristics類可以讓你的app檢查此設(shè)備的相機支持哪些特性。此對象的INFO_SUPPORTED_HARDWARE_LEVEL屬性表示相機功能級別。所有的設(shè)備至少可達到INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY級別的硬件支持,此級別功能大致相當于已棄用的Camera
API(注:此API在API21開始棄用)。達到INFO_SUPPORTED_HARDWARE_LEVEL_FULL級別硬件支持的設(shè)備可以手動控制圖像的捕捉和后期處理以及以高幀頻捕獲高分辨率的圖像。要查看如何使用最新的camera2API,請查看SDK示例中的Camera2Basic
和
Camera2Video音頻回放此版本包含AudioTrack的以下變化:你的app現(xiàn)在可以用浮點格式(ENCODING_PCM_FLOAT)提供音頻數(shù)據(jù)??梢垣@得更大的動態(tài)范圍,moreconsistentprecision和greaterheadroom。浮點運算在中間值計算(intermediatecalculation)的時候尤其有用。Playbackendpointsuseintegerformatforaudiodata,andwithlowerbitdepth.(InAndroid5.0,portionsoftheinternalpipelinearenotyetfloatingpoint.)你現(xiàn)在可以ByteBuffer方式提供音頻數(shù)據(jù),就像提供給MediaCodec的數(shù)據(jù)一樣。WRITE_NON_BLOCKING模式可以幫助某些app簡化緩沖和多線程工作(simplifybufferingandmultithreading)。媒體播放控制使用新的通知和媒體API以確保系統(tǒng)UI知道你的媒體播放情況并提取和顯示專輯信息。使用新的MediaSession
和MediaController類可使得通過UI和service控制播放變得更加簡單。新的MediaSession類取代了已棄用的RemoteControlClient,它提供一套回調(diào)方法以處理各種播放行為(差不多這么翻譯吧,無非是快進快退暫停以及其他控制等等)
(transportcontrolsandmediabuttons)。如果你的app提供媒體播放功能并且運行在AndroidTV或者Wear平臺上,也可以通過MediaSession類使用相同的回調(diào)方法處理播放行為(transportcontrols)?,F(xiàn)在你可以使用MediaController類創(chuàng)建自己的媒體控制器app。這個類提供了一個線程安全的方式以在你的UI線程上監(jiān)控和控制媒體的播放行為。創(chuàng)建控制器的時候,指定一個MediaSession.Token對象以便與給定的MediaSession交互。通過使用MediaController.TransportControls方法,你可以傳達諸如
play(),
stop(),
skipToNext(),和
setRating()命令以控制MediaSession上的媒體播放。你也可以注冊一個MediaController.Callback回調(diào)對象以監(jiān)聽session上的元數(shù)據(jù)和狀態(tài)變化(metadataandstatechanges)。此外,你還可以通過最新的Notification.MediaStyle類創(chuàng)建richnotification以控制mediasession播放。媒體瀏覽Android5.0引入了新的android.media.browse
API,你的app可以使用此api瀏覽其他app的媒體庫。繼承MediaBrowserService類以對外暴露你的app的媒體內(nèi)容。你繼承的MediaBrowserService應(yīng)該提供MediaSession.Token的接入口以便其他應(yīng)用可以通過它播放你提供的媒體內(nèi)容。若要與媒體瀏覽服務(wù)交互,請使用MediaBrowser類。創(chuàng)建MediaBrowser實例時,請為MediaSession指定一個組件名。通過這個MediaBrowser實例,你的app可以連接到關(guān)聯(lián)的service并獲得一個暴露出來的MediaSession.Token對象。存儲目錄選擇Android5.0擴展了存儲框架(StorageAccessFramework),用戶可以借此將一個文件夾(包括其子文件和文件夾)的讀寫權(quán)限賦予一個app。要選擇一個文件夾,請發(fā)出一條OPEN_DOCUMENT_TREE
intent即可。系統(tǒng)會列出所有支持文件夾選擇的DocumentsProvider來讓用戶瀏覽并選擇一個文件夾,返回值是選中的文件夾的URI。然后你就可以使用buildChildDocumentsUriUsingTree()
、
buildDocumentUriUsingTree()
和
query()
瀏覽此文件夾的子目錄了。新的
createDocument()
方法使得你可以在上面選擇的文件夾及其子文件夾下面創(chuàng)建新文檔或者文件夾。要操作已經(jīng)存在的文件,請使用
renameDocument()
和
deleteDocument().調(diào)用這此方法之前先檢查
COLUMN_FLAGS
以確定provider對這些方法是否。分別是:FLAG_SUPPORTS_WRITE,F(xiàn)LAG_SUPPORTS_DELETE,F(xiàn)LAG_SUPPORTS_THUMBNAIL,F(xiàn)LAG_DIR_PREFERS_GRID,F(xiàn)LAG_DIR_PREFERS_LAST_MODIFIED)。如果你實現(xiàn)了一個DocumentsProvider并且想要支持子目錄選擇,請實現(xiàn)isChildDocument()方法并將FLAG_SUPPORTS_IS_CHILD放到COLUMN_FLAGS里。Android5.0同時也引入了新的共享存儲區(qū)上的package-specific目錄,你可以在為里存儲媒體文件,這些媒體文件可以被包含進MediaStore里,新的
getExternalMediaDirs()方法返回你的app在所有共享存儲設(shè)備上的媒體存儲目錄。像getExternalFilesDir()一樣不需要特殊權(quán)限。系統(tǒng)會定時掃描這些文件夾中的媒體內(nèi)容,當然你也可以使用MediaScannerConnection自行掃描新內(nèi)容。(大哥們不要把緩存的圖片放這兒啊,好想把那些將緩存圖片直接放到sd卡某個目錄下的人拉出來打一頓)無線連接多網(wǎng)絡(luò)連接(Multiplenetworkconnections)Android5.0支持新的多網(wǎng)絡(luò)連接API以使你的app可以根據(jù)特定功能(withspecificcapabilities)動態(tài)掃描可用的網(wǎng)絡(luò)并建立連接。當你的app需要指定網(wǎng)絡(luò)——SUPL(無線位置服務(wù)),彩信或者運營商計費網(wǎng)絡(luò)——才能用或者要通過一個特定的協(xié)議才能傳輸你的數(shù)據(jù)的時候,這個功能就派上用場了。你的app動態(tài)選擇并連接一個網(wǎng)絡(luò)連接的步驟如下:新建一個ConnectivityManager.使用NetworkRequest.Builder
類創(chuàng)建一個NetworkRequest對象并指定你的app需要的網(wǎng)絡(luò)特性和傳輸類型。要掃描合適的網(wǎng)絡(luò),請調(diào)用requestNetwork()
或者
registerNetworkCallback(),并將NetworkRequest對象和一個ConnectivityManager.NetworkCallback作為參數(shù)傳過去。如果你要在合適的網(wǎng)絡(luò)被掃描到之后就切換到這個網(wǎng)絡(luò),請調(diào)用用
requestNetwork()
方法如果僅僅接收掃描結(jié)果而不切換網(wǎng)絡(luò)的話,請使用registerNetworkCallback()
方法.當系統(tǒng)探測到一個合適的網(wǎng)絡(luò)時連接到這個網(wǎng)絡(luò)并調(diào)用onAvailable()方法。你可以使用這個方法傳進來的Network對象得到這個網(wǎng)絡(luò)更多的信息或者使用此網(wǎng)絡(luò)。低功耗藍牙(表示不懂……)Android4.3引入了對BluetoothLowEnergy(BluetoothLE)的平臺支持inthecentralrole(咋理解)。從Android5.0開始,Android設(shè)備可以像低功耗藍牙外設(shè)一樣了。應(yīng)用可以使用些功能使得附近的設(shè)備探測到你的存在。比如說,你可以創(chuàng)建一個計步器應(yīng)用或者健康狀況監(jiān)視應(yīng)用并與另外一個低功耗藍牙外設(shè)建立數(shù)據(jù)連接。使用新的android.bluetooth.le
API,你的app可以廣播廣告(broadcastadvertisements)、掃描響應(yīng)(scanforresponses)并與附近的低功耗藍牙設(shè)備連接。要使用新的廣播和掃描特性,請在manifest文件中添加BLUETOOTH_ADMIN權(quán)限。當用戶下載或者更新你的app時,會被請求允許這些權(quán)限。要開始BluetoothLEadvertising以便別的設(shè)備可以發(fā)現(xiàn)你的app,請調(diào)用startAdvertising()將一個AdvertiseCallback作為參數(shù)傳進去。這個callback對象會接收advertising功能或者失敗的消息。Android5.0引入了ScanFilter,這樣你的app就可以只搜索你需要的特定類型的設(shè)備。調(diào)用startScan()方法并傳遞進一個filter列表以掃描低功耗藍牙設(shè)備——你必須提供一個ScanCallback以在BluetoothLEadvertisement被發(fā)現(xiàn)后可以報告。()NFC增強Android5.0對NFC進行了以下增強以使其得以更廣泛和靈活的應(yīng)用:AndroidBeam可以在分享按鈕中使用了。你的應(yīng)用可以通過invokeBeam()調(diào)用AndroidBeam以分享數(shù)據(jù)。避免了用戶必須自己手動操作設(shè)備以來分享數(shù)據(jù)的麻煩。你現(xiàn)在可以使用createTextRecord()方法創(chuàng)建包含UTF-8文本格式數(shù)據(jù)的NDEF記錄。如果你在開發(fā)一款支付類應(yīng)用,你現(xiàn)在可以對過調(diào)用registerAidsForService()以動態(tài)地注冊一個NFC應(yīng)用ID(AID)。你也可以使用setPreferredService()方法用于在某個特定的acitivy處于前臺時指定一個偏好的CardEmulation服務(wù)。ProjectVolta除了新特性之外(?),Android5.0還重點突出了對電池壽命的提升(emphasizesimprovementsinbatterylife)。使用新的API和工具可以查看并優(yōu)化你的app的電量使用。SchedulingjobsAndroid5.0提供一個新的JobScheduler
API以讓你通過使系統(tǒng)推遲一些時間或者在特定條件下(比如充電中)異步執(zhí)行某些任務(wù)以優(yōu)化電池壽命。在下面情況下這很有用。應(yīng)用有可延后執(zhí)行的后臺任務(wù)。應(yīng)用有你想在充電時才執(zhí)行的任務(wù)。應(yīng)用有需要網(wǎng)絡(luò)或者WIFI才能執(zhí)行的任務(wù)。應(yīng)用有一些要定期統(tǒng)一執(zhí)行(runasabatchonaregularschedule)的任務(wù)。一批任務(wù)(Aunitofwork)同一個JobInfo對象封裝,這個對象指定了任務(wù)如何安排。使用JobInfo.Builder類來設(shè)置如何安排這些任務(wù)的運行時刻表,你可以安排任務(wù)在正面情況下運行,比如:設(shè)備充電時開始執(zhí)行。設(shè)備連接到非計費網(wǎng)絡(luò)時開始執(zhí)行。設(shè)置空閑時開始執(zhí)行。在某個deadline前或者某個delay后結(jié)束執(zhí)行。舉例,如果你想在設(shè)備連接到非計費網(wǎng)絡(luò)時執(zhí)行,可以這樣做:JobInfo
uploadTask
=
new
JobInfo.Builder(mJobId,
mServiceComponent
/*
JobService
component
*/)
.setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
.build();
JobScheduler
jobScheduler
=
(JobScheduler)
context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);如果設(shè)備有一個穩(wěn)定的電源(進入充電狀態(tài)超過兩分鐘并且電量處于健康水平),系統(tǒng)就會執(zhí)行被安排好的任務(wù),即使該任務(wù)的deadline還沒有過期(???evenifthejob’sdeadlinehasnotexpired)。要查看如何使用JobSchedulerAPI,請查看Sample中的JobSchedulerSample。電量使用開發(fā)工具新的dumpsysbatterystats命令可以返回你感興趣的按唯一的UID組織的電量使用數(shù)據(jù)。數(shù)據(jù)包括以下幾方面:電池相關(guān)事件歷史。設(shè)備的全局數(shù)據(jù)。每個UID和系統(tǒng)組件的粗略的電量使用。Per-appmobilemsperpacket系統(tǒng)UID總數(shù)據(jù)。應(yīng)用UID總數(shù)據(jù)。使用--help可以學習更多的參數(shù)選項以輸出你想要的數(shù)據(jù)。比如,要輸出上次充電后某個指定app的電量使用數(shù)據(jù),執(zhí)行如下命令:$
adb
shell
dumpsys
batterystats
--charged
<package-name>你可以對上面的命令的輸出數(shù)據(jù)使用BatteryHistorian工具來生成HTML頁面以方便查看。Android在辦公和教育中的應(yīng)用(不知所云,一片胡扯,譯者處于昏迷狀態(tài))ManagedprovisioningAndroid5.0為在辦公環(huán)境中運行的app提供了新的功能。如果用戶已經(jīng)在設(shè)備上有了一個個人賬戶,設(shè)備管理員可以啟動一個管理配置進程(managedprovisioningprocess)以再添加一個共存但是相互獨立的profile。受管理的profiles關(guān)聯(lián)的app與非受管理的app并列出現(xiàn)在Launcher、最近任務(wù)和通知里面。要啟動管理配置進程,發(fā)起一個ACTION_PROVISION_MANAGED_PROFILE
Intent。如果調(diào)用成功的話,系統(tǒng)回調(diào)onProfileProvisioningComplete()。然后你可以調(diào)用setProfileEnabled()
來啟動這個受管理的profile。默認情況下,在受管理的profile里面只有很少的app可用。你可以在受管理profile里面調(diào)用enableSystemApp()來使其他app在包含進profile中。如果你在開發(fā)一款Launcher程序,可以使用新的LauncherApps類來獲取可展示到Launcher上的的activity列表——當然只能是屬于當前用戶和相關(guān)的受管理的profiles的。你的Launcher可以通過加入一個工作標志來使得使受管理的app突出顯示出來,通過getUserBadgedIcon()方法可以取得這種帶標志的圖標。查看Sample中的BasicManagedProfile來學習如何使用這些新功能。設(shè)備所有者(Deviceowner)Android5.0引入了可以部署設(shè)備所有者app的能力,設(shè)備所有者是一個擁有創(chuàng)建和刪除子用戶以及配置全局設(shè)置的特殊類型的(specializedtype)設(shè)備管理員。你的所有者應(yīng)用可以使用DevicePolicyManager里面的方法的對設(shè)備配置、安全策略的應(yīng)用進行細粒度的控制(takefine-graincontrol)。一個設(shè)備在同一時間只能有一個活動的設(shè)備所有者。要部署并激活設(shè)備所有者,在設(shè)備的unprovisioned狀態(tài)下,進行從一個編程應(yīng)用(programmingapp)到設(shè)備NFC數(shù)據(jù)傳輸。傳輸?shù)臄?shù)據(jù)和上面剛剛提到的provisioningintent中的數(shù)據(jù)相同。屏幕固定Android5.0引入了新的屏幕固定API,可以讓用戶暫時限制在一個任務(wù)中無法離開,此時也不會被通知所干擾。如果你正在開發(fā)一款教育應(yīng)用以在Android支持高風險的評估要求或者目的單一的或者Kiosk應(yīng)用程序(aneducationapptosupporthighstakesassessmentrequirementsonAndroid,orasingle-purposeorkioskapplication——這啥意思,口吐白沫中)的時候,你就可以考慮使用這個API。一旦你的app啟動了屏幕固定,用戶就將看不到通知、打開其他app或者返回桌面,直到退出這種模式。有兩種方式啟動屏幕固定:手動固定:用戶可以拖動開啟屏幕固定。設(shè)置>安全>屏幕固定,然后選擇在最近任務(wù)界面選擇在固定的任務(wù)。編程固定:要通過編碼實現(xiàn)屏幕固定,在你的app中調(diào)用startLockTask()方法。如果請求的app不是設(shè)備所有者(deviceowner),用戶會被彈出一個詢問提示。設(shè)備所有者可以調(diào)用setLockTaskPackages()方法以使得某個app可以不經(jīng)過用戶確認就進步屏幕固定狀態(tài)。任務(wù)鎖定后,會:狀態(tài)欄變空,用戶通知和狀態(tài)信息被隱藏。主屏幕和最近任務(wù)按鈕被隱藏。其他app打不開新的activity。只要不開啟新的task,當前app可以打開新的activity。如果屏幕固定是由設(shè)備所有者啟動,用戶仍舊會鎖定在你的app下直到調(diào)用了stopLockTask()。如果屏幕固定由非設(shè)備所有者啟動或者由用戶手動啟動,用戶可以通過同時按住返回的最近任務(wù)按鈕退出(theusercanexitbyholdingboththeBackandRecentbuttons)打印框架以bitmap渲染PDF現(xiàn)在可以用新的PdfRenderer類將PDF頁面渲染成bitmap來渲染。必須指定一個可搜索(內(nèi)容可以隨機訪問)的ParcelFileDescriptor,系統(tǒng)會在它上面寫入可打印數(shù)據(jù)。通過調(diào)用openPage()方法,你的app可以得到一個待渲染頁面,然后調(diào)用render()以將打開的PdfRenderer.Page渲染到一個bitmap上。如果你想只轉(zhuǎn)換此文檔的一部分的話,要傳入額外的一些參數(shù)。要查看如何使用新的API,請查看Sample里面的PdfRendererBasic。系統(tǒng)應(yīng)用使用數(shù)據(jù)現(xiàn)在你可以使用android.app.usage
API獲取Android設(shè)備的app使用歷史。這個API提供了比已經(jīng)棄用的getRecentTasks()方法更詳細的使用數(shù)據(jù)。要使用這個API,首先要在manifest中添加android.permission.PACKAGE_USAGE_STATS權(quán)限,用戶可以通過Settings>Security>Apps賦予此app的讀取app使用數(shù)據(jù)的權(quán)限.系統(tǒng)按應(yīng)用分別收集使用數(shù)據(jù),并且按天、周、月、年整合數(shù)據(jù)。系統(tǒng)保存數(shù)據(jù)的最長時間如下:Dailydata:7天Weeklydata:4周Monthlydata:6個月Yearlydata:2年對于每個應(yīng)用,系統(tǒng)記錄如下數(shù)據(jù):應(yīng)用上次使用時間。對應(yīng)時間段內(nèi)應(yīng)用前臺運行總時間(byday,week,month,oryear)。一個組件(按包名和activity名區(qū)分)在一天內(nèi)被移動到前臺或者后臺的Timestampcapturing。設(shè)備設(shè)置改變(比如屏幕方向改變)的Timestam
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國學校家具行業(yè)發(fā)展現(xiàn)狀及前景規(guī)劃研究報告
- 2024-2030年中國嬰兒洗護用品市場運行動態(tài)及前景趨勢預(yù)測報告
- 2024-2030年中國女性洗液行業(yè)市場營銷模式及發(fā)展前景預(yù)測報告
- 2024-2030年中國多型腔熱流道管坯模具境外融資報告
- 2024年標準簡易個人魚塘承包合同模板版B版
- 梅河口康美職業(yè)技術(shù)學院《高級語言程序?qū)嵺`》2023-2024學年第一學期期末試卷
- 茂名職業(yè)技術(shù)學院《語文教學設(shè)計與實施》2023-2024學年第一學期期末試卷
- 微專題定量測定型實驗突破策略-2024高考化學一輪考點擊破
- 呂梁職業(yè)技術(shù)學院《生物學科專業(yè)導(dǎo)論》2023-2024學年第一學期期末試卷
- 2024年某科技公司與某航空公司關(guān)于機載娛樂系統(tǒng)的合同
- 2024年華潤電力投資有限公司招聘筆試參考題庫含答案解析
- 壟斷行為的定義與判斷準則
- 模具開發(fā)FMEA失效模式分析
- 聶榮臻將軍:中國人民解放軍的奠基人之一
- 材料化學專業(yè)大學生職業(yè)生涯規(guī)劃書
- 乳品加工工(中級)理論考試復(fù)習題庫(含答案)
- 《教材循環(huán)利用》課件
- 學生思想政治工作工作證明材料
- 2023水性環(huán)氧樹脂涂層鋼筋
- 國開《Windows網(wǎng)絡(luò)操作系統(tǒng)管理》形考任務(wù)2-配置本地帳戶與活動目錄域服務(wù)實訓(xùn)
- 環(huán)保設(shè)施安全風險評估報告
評論
0/150
提交評論