代码之家  ›  专栏  ›  技术社区  ›  Mathias Conradt

Android上的相机预览-三星Galaxy S上的奇怪

  •  5
  • Mathias Conradt  · 技术社区  · 15 年前

    camera preview on android - strange lines on 1.5 version of sdk 但那里的评论都无济于事。我试着用相机的参数来交换高度和宽度,但差别不大。

    我的SurfaceHolderCallback(活动中的相关内部类)的代码:

    class SurfaceHolderCallback implements SurfaceHolder.Callback {
        private static final int IMAGE_WIDTH = 512;
        private static final int IMAGE_HEIGHT = 384;
        private static final String ORIENTATION = "orientation";
        private static final String ROTATION = "rotation";
        private static final String PORTRAIT = "portrait";
        private static final String LANDSCAPE = "landscape";
    
        public void surfaceCreated(SurfaceHolder holder) {
            camera = Camera.open(); 
    
            //Surface.setOrientation(Display.DEFAULT_DISPLAY,Surface.ROTATION_90);            
            Parameters p = camera.getParameters();
            p.setPictureSize(IMAGE_WIDTH, IMAGE_HEIGHT);
            p.set(ORIENTATION, PORTRAIT);
            p.set(ROTATION, 90);
            // p.setPreviewSize(640, 480);
    
            Camera.Size s = p.getSupportedPreviewSizes().get(0);
            Log.d(APP, "preview params " + s.width +"/"+ s.height);            
            p.setPreviewSize( s.width,s.height );
    
            p.setPictureFormat(PixelFormat.JPEG);
            p.set("flash-mode", "auto");
            camera.setParameters(p);
    
            try {
                camera.setPreviewDisplay(surfaceHolder);
            } catch (Throwable ignored) {
                Log.e(APP, "set preview error.", ignored);
            }
        }
    
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                                   int height) {
    
            if (isPreviewRunning) {
                camera.stopPreview();
            }
            try {
                camera.startPreview();
            } catch(Exception e) {
                Log.d(APP, "Cannot start preview", e);    
            }
            isPreviewRunning = true;
        }
    
        ...
    

    alt text

    2 回复  |  直到 8 年前
        1
  •  6
  •   Mathias Conradt    15 年前

    p.set("orientation", "portrait");
    p.set("rotation", 90);
    

    在取消这些注释之后,看起来还可以。我只需要在之后手动旋转图像。

        2
  •  2
  •   SirBoss    15 年前