Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Finally i got solution and find camera preview surface view following code:</p> <pre><code>import java.io.IOException; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.hardware.Camera; import android.os.Build; import android.util.Log; import android.view.Display; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private Camera mCamera; private static boolean DEBUGGING = true; private static final String LOG_TAG = "CameraPreviewSample"; private static final String CAMERA_PARAM_ORIENTATION = "orientation"; private static final String CAMERA_PARAM_LANDSCAPE = "landscape"; private static final String CAMERA_PARAM_PORTRAIT = "portrait"; protected Activity mActivity; protected List&lt;Camera.Size&gt; mPreviewSizeList; protected List&lt;Camera.Size&gt; mPictureSizeList; protected Camera.Size mPreviewSize; protected Camera.Size mPictureSize; public CameraPreview(Context context, Camera camera) { super(context); mActivity=(Activity)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("CameraView", "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 { Camera.Parameters cameraParams = mCamera.getParameters(); boolean portrait = isPortrait(); configureCameraParameters(cameraParams, portrait); mCamera.setPreviewDisplay(mHolder); mCamera.startPreview(); } catch (Exception e){ Log.d("CameraView", "Error starting camera preview: " + e.getMessage()); } } public void onPause() { mCamera.release(); mCamera = null; } protected void configureCameraParameters(Camera.Parameters cameraParams, boolean portrait) { if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.FROYO) { // for 2.1 and before if (portrait) { cameraParams.set(CAMERA_PARAM_ORIENTATION, CAMERA_PARAM_PORTRAIT); } else { cameraParams.set(CAMERA_PARAM_ORIENTATION, CAMERA_PARAM_LANDSCAPE); } } else { // for 2.2 and later int angle; Display display = mActivity.getWindowManager().getDefaultDisplay(); switch (display.getRotation()) { case Surface.ROTATION_0: // This is display orientation angle = 90; // This is camera orientation break; case Surface.ROTATION_90: angle = 0; break; case Surface.ROTATION_180: angle = 270; break; case Surface.ROTATION_270: angle = 180; break; default: angle = 90; break; } Log.v(LOG_TAG, "angle: " + angle); mCamera.setDisplayOrientation(angle); } cameraParams.setPreviewSize(mPreviewSize.width, mPreviewSize.height); cameraParams.setPictureSize(mPictureSize.width, mPictureSize.height); if (DEBUGGING) { Log.v(LOG_TAG, "Preview Actual Size - w: " + mPreviewSize.width + ", h: " + mPreviewSize.height); Log.v(LOG_TAG, "Picture Actual Size - w: " + mPictureSize.width + ", h: " + mPictureSize.height); } mCamera.setParameters(cameraParams); } public boolean isPortrait() { return (mActivity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT); } } </code></pre> <p><strong>It's need minimum sdk 2.3 or higher</strong></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload