Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android Camera學習:花落知多少

Android Camera學習:花落知多少

編輯:Android開發教程

我對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的函數們。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved