調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題

調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題

ID:42856386

大?。?2.50 KB

頁數(shù):7頁

時間:2019-09-22

調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題_第1頁
調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題_第2頁
調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題_第3頁
調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題_第4頁
調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題_第5頁
資源描述:

《調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、調(diào)用系統(tǒng)相機時出現(xiàn)的Android碎片化問題文/騰訊優(yōu)測李忠丞我們知道,手機中的很多應(yīng)用者0要用到拍照功能。其中,最低碳的方法就是調(diào)用手機中已有的相機程序來完成這個需求,Android也提供了非常方便的實現(xiàn)://創(chuàng)建—個Action為HediaStore?ACTION_IMAGE_CAPTURE的Intentjlntentintent=[皿皿IntQnt(MediaSto2?ACTI0N_IMAGE_CAPTURE);i//指對白照后照片的存儲路徑/#錠照片的質(zhì)童[intent.putExtra(P1ediaStO2?EXTRAVIDE0QUALITYj//啟動系統(tǒng)相機IstartActiv

2、ityForResultfintent^RESULTCA/4ERA);

3、然后在Activity的onActivityResult方法中處理拍照后的事情(?OverrideprotectQcflvoid

4、onActivityResulT^]int[requestCode,jint]resultCodjIntent]Idata){

5、supeonActivityResult(reqiiQ5tCode,resultCodjdata);[if

6、(resultCode^=RESULTOK){Iswitch

7、(requestcode){

8、easelRESULTCAMERA:!//拍照后點擊保存后,走這里b

9、reakj^^你能相信這短短10幾行代碼會有好幾種機型問題?這時一款優(yōu)質(zhì)的云測試平臺可以幫助開發(fā)團隊解決眾多適配問題,真機租用可以解決費用不足但又想測試機型的尷尬。目前我們已知的問題都跟一句代碼有關(guān):〃指定拍照后照片的存儲路徑intent.putExtra(MediaStore.EXTRA_OUTPUT,picFile);其實這句代碼并不是必填項,如果我們不指定照片的存儲路徑,那么拍照后的相片會以所調(diào)用的相機規(guī)定命名方式命名并存儲到相機默認的存儲路徑中。Android標(biāo)準(zhǔn)的默認存儲路徑為:/mnt/sdcard/dcim/camera這里就會有一個機型問題,極少數(shù)手機的系統(tǒng)相機存儲路徑不是標(biāo)

10、準(zhǔn)的路徑,但這個問題的影響范圍不是很大,因為我們可以通過onActivityResult方法中回調(diào)的Intentdata來獲取到照片。然而事實上,絕大多數(shù)產(chǎn)品在調(diào)用相機的時候還是會指定照片的存儲路徑這樣做的好處有很多:L將自己產(chǎn)品的照片單獨管理,目錄清晰可控;2.可以自己定義照片的命名規(guī)則;3.可以對這些照片更輕松的管理,如加密,隱藏等等;既然有這么多好處,我們就要面對其帶來的問題:l.onActivityResult方法中的data為空如果指定的照片的存儲路徑,那么onActivityResult方法中返回的Intentdata有可能為Null,所以如果我們指定了路徑,就不要使用data來

11、獲取照片,起碼在使用前要做空判斷;2.照片無法獲取如果我們使用自己走義的路徑來獲取照片是不是就沒有問題了?很多手機還是無法取到想要的照片,原因不用我說大家也會想得到:1)照片有,但是名字不對如果路徑中帶有空格,如:file:///mnt/sdcard/123l.jpg,由于Uri的fromFile方法會將路徑中的空格使用"%20"取代,所以當(dāng)我們打印岀處理后的Uri的時候是這個樣子:picFilo=newFil?(ToolUtil.grtStorcPothC1-),':/丘了1.jpg**);t(MlowryM,M===========Uri.fro?Pile(picFiWri./romfi

12、teCpicFile).toStringO);?????e——=Uri?fromFile(picFile)=—==file:///mnt/sdcard/122(%201?jpg其實對于大多數(shù)的手機這都不算事,因為第三方手機在解析存儲路徑的時候都會將"%20"再替換為空格。這樣最終的照片名字還是我們當(dāng)初指定的名字:123l.jpg,這樣我們再通過picFile的路徑是可以準(zhǔn)確地讀取到照片的。遺憾的是個別手機系統(tǒng)自帶的相機沒有將"%20"讀成空格,這樣拍照后的照片名字是123%201.jpg,這時候我們用路徑/

13、

14、123%201Jpg所以我們自定義照片名稱的時候就不要加空格了,這個空格真的有必要嗎??2)照片無法存儲如果自定義存儲路徑是/mnt/sdcard/lowry/,而在拍照前,手機SD卡下沒有名為lowry的文件夾,那么部分手機拍照后圖片不會保存,導(dǎo)致我們無法獲得照片。大多數(shù)手機的相機遇到文件夾不存在的情況都會自己創(chuàng)建出不存在的文件夾,而個別手機卻不會創(chuàng)建。針對這個問題,解決方法就是在指定存儲路徑前先判斷路徑

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。