真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android原生相機(jī),安卓原相機(jī)app

Android 系統(tǒng)原生相機(jī)API角度原理與適配

雖然Camera作為第一代原生android所提供的相機(jī)類一直被開發(fā)者甚至Google官方開發(fā)人員所詬病,但為了兼容和適配Android版本5.0以下的App應(yīng)用,我們別無選擇。因此,有了本篇文檔詳細(xì)闡述1.0版的Camera 是如何使用的。本篇使用的是SurfaceView與Camera類。

站在用戶的角度思考問題,與客戶深入溝通,找到阿瓦提網(wǎng)站設(shè)計(jì)與阿瓦提網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋阿瓦提地區(qū)。

文檔下文會(huì)在拍照流程中的不同的階段應(yīng)用到上述四個(gè)角度,而“終端自然方向”貫穿整個(gè)流程當(dāng)中。這一個(gè)方向、四個(gè)角度非常重要,缺一不可,是支撐相機(jī)Camera 系列API的關(guān)鍵。在設(shè)計(jì)NXDesign的相機(jī)項(xiàng)目中,經(jīng)過對(duì)官方文檔的研讀和各路資料的調(diào)研之后發(fā)現(xiàn),我們?cè)诰W(wǎng)絡(luò)上查到的博客類相關(guān)資料有80%的實(shí)現(xiàn)方式是存在問題的,當(dāng)然,這也可以歸咎于該API其本身確實(shí)不好用,如果不對(duì)源碼注釋進(jìn)行仔細(xì)研究,很容易對(duì)開發(fā)者產(chǎn)生誤導(dǎo)。

更加準(zhǔn)確的說,相機(jī)的生命周期是依托于SurfaceView的創(chuàng)建和銷毀來完成的。SurfaceView的作用是提供相機(jī)內(nèi)容的實(shí)時(shí)預(yù)覽。我們需要在surfaceview創(chuàng)建好之后打開相機(jī)使用相機(jī)資源,在surfaceview被銷毀后釋放相機(jī)資源。

surfaceview 提供了holder機(jī)制向調(diào)用方通知surfaceview的變化時(shí)機(jī),為了在不同的時(shí)機(jī)對(duì)相機(jī)資源做不同的事情,需要調(diào)用SurfaceHolder.addCallback()方法。

現(xiàn)在的Android手機(jī)一般會(huì)有多個(gè)攝像頭,但根據(jù)其方向可以歸為兩類: CAMERA_FACING_BACK 和 CAMERA_FACING_FRONT 。在打開攝像頭之前,首先需要獲取相機(jī)資源,判斷相機(jī)個(gè)數(shù) Camera.getNumberOfCameras() 。每個(gè)相機(jī)對(duì)應(yīng)一個(gè)CameraInfo,它的定義如下:

這里涉及到一個(gè)重要概念:相機(jī)圖像傳感器(camera sensor),想要理解上述注釋的含義,就需要先理解下圖內(nèi)容。

左圖是通常情況下,我們對(duì)view的x y方向的認(rèn)知,以屏幕的左上角為原點(diǎn)向右為x正方向,向下為y正方向;但是,右圖描述的是絕大多數(shù)情況下, 相機(jī)圖像傳感器 的起始位置和方向判定。與view不同的是,傳感器以手機(jī)屏幕在自然方向上的右上角為原點(diǎn),向下為x正方向,向左為y正方向。因此,我們理解上述注釋就不難了。如果相機(jī)自帶的傳感器頂部與終端自然方向(手機(jī)屏幕的硬件方向,一般手機(jī)都是豎直方向,也就是文檔中說的naturally tall screen)的右邊緣一致,則這個(gè)值就是90度。如果前置攝像頭傳感器的頂部與手機(jī)自然方向一致,則這個(gè)值就是270度。

當(dāng)我們定義startCamera()方法時(shí),要做5件事情,1.遍歷攝像頭cameraId,找到想要打開的攝像頭(前置還是后置);2.獲取攝像頭信息,主要獲取orientation;3. 設(shè)置相機(jī)DisplayOrientation 4.設(shè)置相機(jī)參數(shù),主要是寬高比、對(duì)焦模式、圖片格式、setRotation等。5. 向camera設(shè)置surfaceview.viewholder,并且startPreview。主要邏輯如下:

拿到cameraInfo.orientation之后,要調(diào)用camera.setDisplayOrientation設(shè)置進(jìn)去,保證通過surfaceview預(yù)覽到的取景跟當(dāng)前的手機(jī)方向保持一致,但是,setDisplayOrientation設(shè)置的其實(shí)是經(jīng)過兩個(gè)角度計(jì)算之后的復(fù)合角度,而并不單純是cameraInfo.orientation。正確的做法是這樣的:先獲取手機(jī)屏幕的旋轉(zhuǎn)方向,然后與cameraInfo.orientation加和得到最終角度。通常情況下,如果我們?cè)O(shè)置相機(jī)為portrait,則不用考慮rotation。這也是為什么絕大部分網(wǎng)絡(luò)資料中都會(huì)粗暴的寫入一個(gè)90度完事兒而并沒有解釋這么做的道理。

調(diào)用camera.takePicture(null, null, pictureCallback)

這里需要做的僅僅是將callback中返回的data存儲(chǔ)為File。需要注意的是,data中會(huì)包含setRotation()方法中的角度信息,因此如果直接使用Bitmap工具類生成bitmap,再進(jìn)行存儲(chǔ)或者展示,生成出來的圖像其實(shí)是缺失了旋轉(zhuǎn)角度的原始方向,這十有八九會(huì)發(fā)生圖像展示角度錯(cuò)誤的情況。因此,需要直接保存,再通過Exif工具類讀取File中的角度信息(當(dāng)然Exif工具類就是為了讀取File中的各種信息而生的,比如拍照時(shí)間、經(jīng)緯度等等)。

基于Camera API,

surfaceview的預(yù)覽需要setDisplayOrientation(),入?yún)⒔嵌扰cCameraInfo.orientation(傳感器偏角)和WindowManager.default.displayOrientation(屏幕旋轉(zhuǎn)角度)兩個(gè)角度有關(guān)。

相機(jī)拍照前需要setRotation(),入?yún)⒔嵌扰cCameraInfo.orientation(傳感器偏角)和OrientationEventListener返回的orientation(終端自然角度偏角)有關(guān),二者的換算結(jié)果就是圖像寫入偏角,該偏角意味著圖像被順時(shí)針旋轉(zhuǎn)該角度就能夠回正展示。

Android webview調(diào)取安卓原生相機(jī)和相冊(cè)上傳圖片

適配安卓10方式:

返回URI即可

手機(jī)上加載webview,網(wǎng)頁(yè)上上傳圖片調(diào)用原生相機(jī)和相冊(cè)上傳圖片

先設(shè)置好webview的加載以及websetting,這里就不多說了。

主要是setWebChromeClient方法的實(shí)現(xiàn)

這個(gè)方法分幾個(gè)版本的適配3.0以下的設(shè)備,3.0到4.1的設(shè)備,4.1到5.0的設(shè)備,以及5.0以上的設(shè)備,每個(gè)方法參數(shù)不一樣適配時(shí)請(qǐng)注意。5.0以下的參數(shù)都是 ValueCallbackUri ,以上的設(shè)備需要 ValueCallbackUri[] ,回傳數(shù)據(jù)的時(shí)候也是對(duì)應(yīng)的不要弄錯(cuò)了。

最后的效果如下:

[img]

想學(xué)手機(jī)攝影,手?jǐn)z的專業(yè)攝影軟件有哪些???Android的

剪映。

為大家整理了一份個(gè)人知識(shí)提升的學(xué)習(xí)資源,包括這兩年很火的短視頻直播帶貨運(yùn)營(yíng),各大渠道引流,視頻剪輯和有聲書等資源,每個(gè)分表格都是不同的類目,需要什么切換即可。后面會(huì)不斷匯聚更多優(yōu)秀學(xué)習(xí)資源,供大家交流分享學(xué)習(xí),需要的可以先收藏轉(zhuǎn)存,有時(shí)間慢慢看~

手機(jī)剪輯學(xué)習(xí)實(shí)時(shí)更新

鏈接:

?pwd=2D72

提取碼:2D72


網(wǎng)站標(biāo)題:android原生相機(jī),安卓原相機(jī)app
網(wǎng)站URL:http://weahome.cn/article/dsopisd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部