2016-06-13 5 views
0

私のSamsung Galaxy S4では、ネイティブカメラが写真の撮影中に画面の周りに白い枠を描きます。 SurfaceViewでどうすればいいですか?カメラのプレビューの周りに白い枠を描いて写真を撮る方法は?

public void surfaceCreated(SurfaceHolder holder) { 
    hasSurface = true; 
    openCamera(); 
    setWillNotDraw(false); 
} 

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

} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    hasSurface = false; 
    closeCamera(); 
} 

public void takePicture(Camera.ShutterCallback cameraShutterCallback, 
         Camera.PictureCallback rawCallback, 
         Camera.PictureCallback postviewCallback, 
         Camera.PictureCallback pictureTakenCallback) { 
    try { 
     isPreviewStarted = false; 
     camera.takePicture(cameraShutterCallback, 
       rawCallback, 
       postviewCallback, 
       pictureTakenCallback); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new RuntimeException("Failed to take picture"); 
    } 
} 

private void closeCamera() { 
    if (camera != null) { 
     pausePreview(); 
     camera.release(); 
     camera = null; 
    } 
} 
+0

あなたはいけない、' SurfaceView'を残す – pskink

+0

大丈夫ですが、どのように描くのですか?写真を撮る際にどのように表示させるのですか? –

答えて

0

、それがあるとその親 `View`であなたのフレームを作るよう

previewContainer.setForeground(null); 
0

私はあなたの親は、メインフラグメントはなくSurfaceViewフラグメントだろうフラグメントにカスタムSurfaceViewを示している場合は、あなたがそれを行うことができたとします。画像を撮影した後

private void showWhiteFrameAroundPreview() { 
    GradientDrawable border = new GradientDrawable(); 
    border.setShape(GradientDrawable.RECTANGLE); 
    border.setColor(Color.TRANSPARENT); 
    border.setStroke(5, Color.WHITE); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     previewContainer.setForeground(border); 
    } 
} 

:画像を撮影する前に

関連する問題