2

私は、Macのウェブカメラを使用して、エミュレータでAndroidのフロントカメラをシミュレートしています。残念ながら、エミュレータがポートレートのものであっても、カメラは横向き(screenshot)に見えます。Androidエミュレータカメラ - ウェブカメラの向き

カメラは実際のデバイスで正しく動作します(つまり、縦向きです)。

私のエミュレータの設定: ネクサス5X、Androidのヌガー7.1.1、APIレベル25、スタートアップオリエンテーション:肖像画、フロントカメラ:webcam0、バックカメラ:エミュレート

がどのように適切にウェブカメラを使用することができますオリエンテーション?

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

そして、プレビューテクスチャに変換を適用:

+1

どのような種類を使用していますか? –

+0

Nexus 5X、Android Nougat 7.1.1 x86、スタートアップオリエンテーション:ポートレート、APIレベル25、カメラ:フロント:webcam0、バック:エミュレート –

+1

カメラアプリに追加しようとしましたか?camera.setDisplayOrientation(90); ? –

答えて

0

は最終的に私はエミュレータで実行しているかどうかを検出することでこれを解決しますが、エミュレータの

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); 
関連する問題