camera2中的CameraCharacteristics的原理

前言

在看Android中camera2的時候,忽然遇到一個camera的配置的數據類型,總是感覺好奇怪,這個東西比較簡單但是如果不細看,貌似確實還是比較複雜,這裏稍微解釋下吧,並且發一篇博客

正文

這個特奇怪,特別是關於數據結構,總是讓人比較迷茫,搞得自己特難受,這裏好好分析下,CameraCharacteristics這個僅僅是一個native的封裝,裏面封裝了什麼呢?我們很容易找到幾個接口。

public <T> T get(Key<T> key) {
    return mProperties.get(key);
}

因爲這個是對native的封裝,我們應該知道這些參數都是從c++層上來的,所以裏面的set 方法都是從底層設置的,這裏我們不用關係,那麼我們之關係這個key 是什麼,這個東西看到源代碼後,也是很簡單的一個一個native的封裝,我們很容易知道這個是一個泛型,在底層構造的時候,也傳遞一個類型,這裏當然是對應一個cpp層的模板類,這裏我還是不要找cpp代碼,最近只要研究一下Java代碼就好了,這裏僅僅是可以創建幾種類型,這裏舉幾個例子,

    public static final Key<Integer> LENS_FACING =
            new Key<Integer>("android.lens.facing", int.class);

    public static final Key<float[]> LENS_POSE_ROTATION =
            new Key<float[]>("android.lens.poseRotation", float[].class);

很簡單對吧,其實這些東西,完全類似一個map,但是map對應的值只是一種特定的值,這裏實現了兩次封裝後,我們可以通過一個特定的key找到唯一對應的一種特定類型的值,

後記

我去,這個竟然搞定了,有機會我在研究下底層的cpp代碼,這裏希望我有空完成吧,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章