Android Camera學習:花落知多少

來源:互聯網
上載者:User

我對Android Camera的認識,會陸續的全部寫下來,逐步完善大腦裡的Camera網路。

1.Android Camera的2個獨立進程

Android Camera 是C/S架構已經被說爛了,但是我還是要把這條記下來,因為我時常會腦袋短路,在client端做些無用的勞動希望來解決問題,那麼這個希望真的就是奢望了。

核心自然不用說,是service端。service進程一直負責接收底層Camera 驅動傳來的資料,然後傳給surface顯示出來。

Client端也不是吃乾飯的。Client進程雖然不曾擁有任何實質的Camera資料,但是service端為它提供了豐富的介面,它可以輕鬆的獲得Camera資料的地址,然後處理這些資料。

最後再補一句廢話,Client和Service是通過Binder通訊的。

2.Camera和ICamera

剛開始接觸Camera的時候,苦於理不清Camera的工作流程,當我看著看著Camera,摁著鍵盤Ctrl+】跳來跳去,跳到ICamera出現的時候,頓時心裡只有一種感覺,這不是坑爹麼!

其實,靜下心來,仔細分析一下,也不是很坑爹 >_< ...

ICamera,ICameraClient,ICameraService 全部都屬於Android Camera 的 Client端,他們的任務就是負責與Android Camera 的Service端通訊。

嗯…還得使下這個圖,請注意,我們一直活躍在Android Camera 的 Client端。

按照上圖的流程,一路哐哐哐下來,到了Camera.cpp,終於和ICamera扯上關係了。對於上層應用來說,Camera.cpp是最為直接的函數調用和實現。繼承於ICameraClient類,典型的Client端的介面執行個體。

千萬不要怕暈,事實是這樣的:    sp<Camera> camera = Camera::connect();

Camera類通過sp<ICamera> mCamera對象,調用函數。

達到的效果就是好像是在直接調用CameraService::Client的mClient的函數們。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.