0,Camera的前置与后置的确定,比较主流的是通过CameraInfo这个类里面的变量来指示的。CameraInfo是Camera.java(frameworks/base/core/java/android/hardware/)的内部类,里面有变量来标志前置与后置:
很简单,与screen face front是前置,相反为后置。
APP可以通过Camera这个类来处理获取back/front,但6.0的做法除了CameraInfo这个类之外,还有另外一种,即通过cameraId。这里走一下调用流程,为Camera Hal层的porting提供些思路。
1,先介绍第一种:通过CameraInfo这个类;
在camera2 apk 的 settings界面显示为back camera:
以下来自packages/app/Camera2/
=>”Back camera photo”字符串来自:strings.xml
Back camera photo
=>camera_preferences.xml
=>这个ListPreference对应的key为:pref_camera_picturesize_back_key
Camera2/src/com/android/camera/settings/Keys.java:39: public static final String KEY_PICTURE_SIZE_BACK= “pref_camera_picturesize_back_key”;
=>这个KEY_PICTURE_SIZE_BACK在CameraSettingsActivity.java有使用,分别是用于显示这个list,而其中下面个函数是决定Back/Front
=>mPictureSizes.backCameraSizes.isEmpty()这里判断Back/Front
=>computeSizesForCamera()@PictureSizeLoader.java
int cameraId = SettingsUtil.getCameraId(mCameraDeviceInfo, facingSelector);
mCameraDeviceInfo就包含了前后置的信息
=>mCameraDeviceInfo在PictureSizeLoader类实例化的时候赋值
=>
以下来自fremaworks/ex/camera2/portability/src/com/android/ex/camera2/portability/
getAndroidCameraAgent()@CameraAgentFactory.java
sAndroidCameraAgent = new AndroidCameraAgentImpl();
=>AndroidCameraAgentImpl.java的getCameraDeviceInfo()函数如下:
=》
public static AndroidCameraDeviceInfo create() {
…
Camera.getCameraInf