前言
在看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代碼,這裏希望我有空完成吧,