2

我正在使用我的Mac摄像头模拟模拟器中的Android前置摄像头。不幸的是,相机似乎在横向 - screenshot,即使仿真器是肖像之一。Android模拟器摄像头 - 摄像头方向

请注意,相机在真实设备上的行为正常(即其具有纵向)。

我的模拟器配置: 的Nexus 5X,Android的牛轧糖7.1.1,API等级25,启动定位:肖像,前置摄像头:webcam0,背部摄像头:仿真的

我如何使用网络摄像头与适当的方向?

+1

您正在使用哪种类型的仿真器? –

+0

Nexus 5X,Android Nougat 7.1.1 x86,启动方向:纵向,API级别25,摄像头:前端:webcam0,后端:仿真 –

+1

您是否尝试添加到相机应用camera.setDisplayOrientation(90); ? –

回答

0

最终,我通过检测解决了这个,如果我在模拟器中运行:

public static boolean isEmulator() { 
    return Build.FINGERPRINT.startsWith("generic") 
    || Build.FINGERPRINT.startsWith("unknown") 
    || Build.MODEL.contains("google_sdk") 
    || Build.MODEL.contains("Emulator") 
    || Build.MODEL.contains("Android SDK built for x86") 
    || Build.MANUFACTURER.contains("Genymotion") 
    || (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")) 
    || "google_sdk".equals(Build.PRODUCT); 
} 

然后将变换应用于预览质地:

Matrix matrix = new Matrix(); 
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
Display display = windowManager.getDefaultDisplay(); 
Point displaySize = new Point(); 
display.getRealSize(size); 
RectF viewRect = new RectF(0, 0, mCameraPreview.getWidth(), mCameraPreview.getHeight()); 
float centerX = viewRect.centerX(); 
float centerY = viewRect.centerY(); 
float scale = (float) mCameraPreview.getWidth()/(float) displaySize.x; 
matrix.postScale(scale, scale, centerX, centerY); 
matrix.postRotate(270, centerX, centerY); 
mCameraPreview.setTransform(matrix);