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);