Android Camera Preview Rotation

ε祈祈猫儿з 提交于 2019-12-20 10:06:29

问题


According to Android Developer Site:

after android 2.2 there is the function

" setDisplayOrientation "

to adjust the camera preview rotation.

And also according to the Android Developer Site , we can find following source code.

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 ;

    }

However, i can not work with some kind of Devices. Like Samsung Galaxy Y S5360, S5660 , YP-G1, YP-G70, etc

Just part of machine not working, Galaxy Nexus, SII , or some high end device, it work fine.

Does setDisplayOrientation not support , or the devices firmware is not ready?

PS. All devices are Android 2.3.1 or above.

Help.


回答1:


The problem of setting the orientation display of camera doesn't work on operating system version of these devices that is basically the (gingerbread) but for the devices above this it works fine .

I tried this too on these devices the landscape mode works fine but portrait mode has the problem. In case to force to portrait just forced the camera orientation to 90 degrees through this in

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

camera.setDisplayOrientation(90);


}

as well as did post rotate the picture before displaying or saving it through in

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

HOPE THIS HELPS




回答2:


Try set orientation of your camera view's xml to landscape.



来源:https://stackoverflow.com/questions/10385147/android-camera-preview-rotation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!