2012-04-30 15 views
9

Androidデベロッパーサイトによると:機能Androidのカメラのプレビューローテーション

カメラのプレビューの回転を調整するための "setDisplayOrientation"

があるアンドロイド2.2後

また、Androidデベロッパーサイトによれば、次のソースコードを見つけることができます。

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 ; 
     result = (360 - result) % 360 ; // compensate the mirror 
    } else { // back-facing 

     result = (info.orientation - degrees + 360) % 360 ; 

    } 

ただし、私は何らかの種類のデバイスでは動作しません。 Like Samsung Galaxy Y S5360、S5660、YP-G1、YP-G70など

ギャラクシーネクサス、SII、または一部のハイエンドデバイスの一部だけで正常に動作します。

setDisplayOrientationはサポートされていないか、デバイスのファームウェアが準備されていませんか?

PS。すべての端末はAndroid 2.3.1以上です。

ヘルプ。

+0

私のギャラクシーYについて同じ問題に直面しています。何かを見つけましたか?私はsetDisplayOrientationが成功したかどうかを知りたいと思っています。最後に –

+0

、解決されません。カメラの表面を水平に見せるだけです。 –

+0

このエラーが発生するデバイスのリストを持っている人はいますか? ご協力いただければ幸いです。 – patrickfdsouza

答えて

-3

カメラビューのxmlの向きを横に設定してみてください。

+1

OPが風景を邪魔しないなら、彼は最初に肖像画を取得する方法を尋ねませんでした本当に有用な答えではありません。 – Shirkrin

+0

@Shirkrin最初の場所で答えが奇妙に見えます。しかし、実際には、一部のデバイスでは、カメラのプレビューがランドスケープに固定されています。カメラプレビューのxmlを横長に調整すると、すべてのデバイスに適合します。次は、マトリックスを使ってカメラで撮影した画像を回転させることです。 – dumbfingers

+0

これは機能しません。 –

3

カメラの向きの表示を設定する問題は、基本的に(ジンジャーブレッド)であるこれらのデバイスのオペレーティングシステムのバージョンでは機能しませんが、上記のデバイスでは正常に動作します。

私はこれもこのデバイスで試しましたが、ランドスケープモードはうまく動作しますが、ポートレートモードには問題があります。肖像画に強制的に場合はちょうどこのHOPEを

public void surfaceChanged(SurfaceHolder holder, int format, int width, 
    int height) { 

camera.setDisplayOrientation(90); 


} 

に90度この貫通 にカメラの向きを強制的にだけでなく、ポストが

PictureCallback myPictureCallback_JPG = new PictureCallback(){ 


    public void onPictureTaken(byte[] arg0, Camera arg1) { 

    Bitmap bitmapPicture= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); 
     Matrix matrix = new Matrix(); 
    matrix.postRotate(90); 
    int height=bitmapPicture.getHeight(); 
    int width=bitmapPicture.getWidth(); 
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmapPicture,height,width, true); 
     Bitmap rotatedBitmap = Bitmap.createBitmap(scaledBitmap , 0, 0, scaledBitmap.getWidth(), scaledBitmap.getHeight(), matrix, true); 
} 
に を通してそれを表示したり、保存する前に画像を回転させませんでしたヘルプ