小米开发平台 MIX前置摄像头适配说明
1. 背景
由于MIX系列手机的前置摄像头在屏幕右下角,使用前置摄像头需要将手机倒过来,所以需要应用开发者在用到前置相机的页面把相APP自动生成平台机画面和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. 在代码里面配置
代码示例如下:代码配置方法
@Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); setContentView(R.layout.activity_main); } |
3. Camera Device适配方法
3.1. UI上给用户以适当的提示,引导用户倒置手机
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 = 0 ; break ; case Surface.ROTATION_90: degrees = 90 ; break ; case Surface.ROTATION_180: degrees = 180 ; break ; case Surface.ROTATION_270: degrees = 270 ; break ; } int result; if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { result = (info.orientation + degrees) % 360 ; &多功能app生成器nbsp; 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/
部分内容来自网络投稿,如有侵权联系立删