2016-11-03 8 views
0

私はカメラから写真を撮りたいと思うが、写真を撮る新しい意図はしたくないが、カメラを開く私のレイアウトの中に入れて、写真を撮るためのボタンをクリックしてください。Android:カメラの意図を開始せずに自分のレイアウトで写真を撮る

enter image description here

だから、それはまた、私はトークン写真をトリミングするようにすることを好む、私はこのことについてどのressourcesを見つけることができませんでしたので、それを行うことは可能でしょうか?

+0

make imageViewをクリックして問題を解決することができます。 –

+0

カスタムカメラビュー:http://stackoverflow.com/questions/8543244/custom-camera-android。 サークルサーフェスの場合:http://stackoverflow.com/questions/31443911/creating-circle-in-surfaceview-on-button-click-android ほとんどすべてが既にStackOverflowにあります。ただそれを探してください。 –

+0

あなたは衣装カメラを作って、あなたの望みのやり方であなたのサーフェイスビューをデザインすることができます – Nivedh

答えて

0

カメラランタイムのアクセス許可を取得する必要があります。その後、カメラAPIに直接アクセスできます。

official documentationから)あなたのレイアウト構造のプレビュー画像が表示されます例えばこのSurfaceView

/** A basic Camera preview class */ 
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { 
    private SurfaceHolder mHolder; 
    private Camera mCamera; 

    public CameraPreview(Context context, Camera camera) { 
     super(context); 
     mCamera = camera; 

     // Install a SurfaceHolder.Callback so we get notified when the 
     // underlying surface is created and destroyed. 
     mHolder = getHolder(); 
     mHolder.addCallback(this); 
     // deprecated setting, but required on Android versions prior to 3.0 
     mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    } 

    public void surfaceCreated(SurfaceHolder holder) { 
     // The Surface has been created, now tell the camera where to draw the preview. 
     try { 
      mCamera.setPreviewDisplay(holder); 
      mCamera.startPreview(); 
     } catch (IOException e) { 
      Log.d(TAG, "Error setting camera preview: " + e.getMessage()); 
     } 
    } 

    public void surfaceDestroyed(SurfaceHolder holder) { 
     // empty. Take care of releasing the Camera preview in your activity. 
    } 

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
     // If your preview can change or rotate, take care of those events here. 
     // Make sure to stop the preview before resizing or reformatting it. 

     if (mHolder.getSurface() == null){ 
      // preview surface does not exist 
      return; 
     } 

     // stop preview before making changes 
     try { 
      mCamera.stopPreview(); 
     } catch (Exception e){ 
      // ignore: tried to stop a non-existent preview 
     } 

     // set preview size and make any resize, rotate or 
     // reformatting changes here 

     // start preview with new settings 
     try { 
      mCamera.setPreviewDisplay(mHolder); 
      mCamera.startPreview(); 

     } catch (Exception e){ 
      Log.d(TAG, "Error starting camera preview: " + e.getMessage()); 
     } 
    } 
} 

あなたはこのコードで Cameraインスタンスを取得:

/** A safe way to get an instance of the Camera object. */ 
public static Camera getCameraInstance(){ 
    Camera c = null; 
    try { 
     c = Camera.open(); // attempt to get a Camera instance 
    } 
    catch (Exception e){ 
     // Camera is not available (in use or does not exist) 
    } 
    return c; // returns null if camera is unavailable 
} 

そして、あなたはそれを表示しますActivityのように:

public class CameraActivity extends Activity { 

    private Camera mCamera; 
    private CameraPreview mPreview; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Create an instance of Camera 
     mCamera = getCameraInstance(); 

     // Create our Preview view and set it as the content of our activity. 
     mPreview = new CameraPreview(this, mCamera); 
     FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); 
     preview.addView(mPreview); 
    } 
} 

official documentationを参照してください。

関連する問題