新聞中心
Android 使用系統(tǒng)相機拍照和讀取相冊照片
1.拍照 (對于7.0以上的版本,不在允許直接訪問uri)
創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元達州做網(wǎng)站,已為上家服務(wù),為達州各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
`
若不指定輸出路徑intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通過
`
可以拿到uri,但獲得的圖片是被壓縮過的。若指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);輸出路徑,則此處的intent為null,但可以使用我們存的uri讀取照片,此時的照片沒有被壓縮。
2.從相冊中讀取照片, 方法:
`
`
即使設(shè)置 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity));輸出路徑,仍然不能從此路徑中讀取,只能在onActivityForResult()中通過event.uri = intent.getData();方式獲得圖片uri。
此種現(xiàn)象也好理解,拍照時產(chǎn)生新的圖片,自然可根據(jù)設(shè)置的uri進行圖片保存,而讀取相冊時,圖片已經(jīng)在目錄中不能轉(zhuǎn)移到自己設(shè)定的uri中。
Androidmanifest.xml中
`
在 res/xml/provider_paths.xml
`
?xml version="1.0" encoding="utf-8"?
paths
external-path name="JDTobs" path=""/
files-path name="name" path="path" /
cache-path name="name" path="path" / external-path name="name" path="path" /
external-files-path name="name" path="path" /
external-cache-path name="name" path="path" / /paths `
讀取uri
Android調(diào)用系統(tǒng)相機實現(xiàn)拍照和視頻錄制
(1)申請權(quán)限
(2)設(shè)置布局
這里做了一個簡單的布局:添加了一個按鈕和一個ImageView控件用于顯示拍攝的圖像。
(3)為按鈕添加點擊事件監(jiān)聽
點擊按鈕時,調(diào)用系統(tǒng)相機進行拍照,并在確定后將圖像顯示在ImageView控件中。
(1)申請權(quán)限
(2)設(shè)置布局
添加了一個按鈕和一個VideoView控件用于顯示錄制的視頻。
(3)為按鈕添加點擊事件監(jiān)聽
同前面一樣,點擊按鈕后調(diào)用系統(tǒng)相機進行錄制視頻,錄制完成后點擊確定即可將錄制的視頻顯示在VideoView控件中。
對于Android11.0的版本,在調(diào)用系統(tǒng)相近進行視頻錄制的時候,即使在AndroidMenifest.xml中申請了CAMERA權(quán)限,還是會在程序運行時報錯: Permission? Denial , ? . .... ....? with revoked permission android.permission.CAMERA
解決方法是在程序中動態(tài)申請權(quán)限:
寫在最后:文章是在學習過程中做的學習筆記,同時與志同道合者分享,文章內(nèi)容均經(jīng)過我自己實驗證實可行,如有問題歡迎留言,很高興一起交流討論,共同進步!
Android調(diào)用手機相機拍照,保存圖片會出現(xiàn)2張解決辦法。
最近項目中使用系統(tǒng)相機拍照,保存圖片,發(fā)現(xiàn)一些問題。
??讀取圖片旋轉(zhuǎn)角度,然后再旋轉(zhuǎn)回去。
?? 使用BitmapFactory.Options,能更準確的獲取圖片格式,
???判斷地址末尾 .gif 有時候會不準確(不推薦)
??上傳服務(wù)器,一般使用地址,但是用戶手動刪除圖片后,地址是無效的。為了防止地址無效,可以對需要上傳圖片地址做保存,但又希望系統(tǒng)讀取不到,可以對保存地址進行修改。
??讀取圖片地址api
??我們可以去系統(tǒng)相冊查看兩張圖片,會發(fā)現(xiàn)兩張圖片的地址是不一樣的,而且兩張圖片的大小也不同。
出現(xiàn)2張的原因是:
?(1)調(diào)用系統(tǒng)相機,拍照完成我們會生成一個保存地址,而這個地址是: /storage/android/data/包名/Picture/ ,這張是我們保存的拍照圖片。
?(2)相同的一張圖片在哪?這個地址是:/storage/Pictures/ ,這張圖片是系統(tǒng)復(fù)制的App目錄下Pictures中的圖片。
??所以就會出現(xiàn)在系統(tǒng)相冊兩張圖片,但兩張圖片大小不一致,地址不同。
??調(diào)用系統(tǒng)api,只能讀取到一張,是系統(tǒng)復(fù)制的那張,也就是 /storage/Pictures/ 目錄下的這張,但是/storage/android/data/包名/Picture/ 目錄下的沒有讀取到。
??知道了問題,就有解決辦法,可分為三種方法:
?(1)第一種方法:
?????保存圖片的時候,修改下地址(可參照標題 3 ,這樣讓系統(tǒng)無法識別出這張圖片),結(jié)果就是,我讀取不到,系統(tǒng)也別想讀取不到,在系統(tǒng)相冊里也就看不到這張圖片。
?(2)第二種方法:
?????因為api無法讀取到,那我們就直接再讀取/storage/android/data/包名/Picture/ 下的文件,把圖片一塊加入到同一個集合中用于展示,這樣所有的圖片都有了,但是系統(tǒng)相冊中還是有兩張圖片,為解決這個問題。
?(3)第三種方法:( )
?????在我們保存圖片的時候,直接保存到 /storage/Pictures/ 這個目錄下,也不用系統(tǒng)幫我們復(fù)制了,這樣就只會出現(xiàn)一張,而且我們也能調(diào)用api直接讀取到,兩個問題全都解決了,完美!
?
?
(如果以上有錯誤或者有更優(yōu)美的方式,感謝指出并改之,與君共勉)
這是我項目中出現(xiàn)的問題,希望能夠幫助到你,Thanks,Bye!
本文標題:android調(diào)用系統(tǒng)相機,Android調(diào)用系統(tǒng)相機美顏
路徑分享:http://www.dlmjj.cn/article/phigjp.html