小米开发平台 MIX前置摄像头适配说明

由于MIX系列手机的前置摄像头在屏幕右下角,使用前置摄像头需要将手机倒过来,所以需要应用开发者在用到前置相机的页面把相机画面和UI都倒转过来。

小米开发平台 MIX前置摄像头适配说明

1. 背景

由于MIX系列手机的前置摄像头在屏幕右下角,使用前置摄像头需要将手机倒过来,所以需要应用开发者在用到前置相机的页面把相机画面和UI都倒转过来。

2. Activity适配方法

MIX系列手机支持页面180度方向倒转,只需配置sensorPortrait属性即可。

2.1. 直接在AndroidManifest.xml里面配置

示例如下:AndroidManifest配置

<activity android:name=".MainActivity"    android:screenOrientation="sensorPortrait">    <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />    </intent-filter></activity>

2.2. 在代码里面配置

代码示例如下:代码配置方法

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);    setContentView(R.layout.activity_main);}

3. Camera Device适配方法

3.1. UI上给用户以适当的提示,引导用户倒置手机

小米开发平台 MIX前置摄像头适配说明

3.2. 结合屏幕显示方向来设置Camera的显示方向

主要是调用Camera中的setDisplayOrientation接口代码配置方法

final void setDisplayOrientation(int degrees);// Set the clockwise rotation of preview display in degrees.

示例:

代码配置方法

public static void setCameraDisplayOrientation(Activity activity,                        int cameraId, android.hardware.Camera camera) {    android.hardware.Camera.CameraInfo info =        new android.hardware.Camera.CameraInfo();    android.hardware.Camera.getCameraInfo(cameraId, info);    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();    int degrees = 0;    switch (rotation) {        case Surface.ROTATION_0: degrees = 0break;        case Surface.ROTATION_90: degrees = 90break;        case Surface.ROTATION_180: degrees = 180break;        case Surface.ROTATION_270: degrees = 270break;    }    int result;    if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {        result = (info.orientation + degrees) % 360;        result = (360 - result) % 360// compensate the mirror    else // back-facing        result = (info.orientation - degrees + 360) % 360;    }    camera.setDisplayOrientation(result);}


可以在OrientationListener.onOrientationChanged(int orientation)回调中进行check,如果display的rotation与之前不同,则执行上述操作,重新设置Camera的显示方向。

Jpeg拍照方向(通过Camera的Parameters.setRotation设置的rotation)与屏幕是否翻转显示无关,维持原有逻辑即可。

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/12618/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月24日 下午2:53
下一篇 2022年11月24日 下午2:55

相关推荐