2016-06-16 1 views
1

У меня есть несколько кадров на моей SD-карте.Как сделать предварительный просмотр камеры в Android?

В моей деятельности есть список фреймов.

Теперь, когда пользователь нажимает на кадр, предварительный просмотр камеры будет отображаться через этот кадр.

См. Изображение.

enter image description here

Как я могу заархивировать эту функцию?

Я искал об этом, но не получил надлежащего примера.

+1

вы можете использовать framelayout над предварительным просмотром и установить любое изображение – raj

ответ

3

Вы должны создать свой собственный Предварительный просмотр, расширив класс SurfaceView.

См. Ниже ссылку, которая поможет вам.

Custom camera android

Возьмите FrameLayout с SurfaceView, как child.and настроить в соответствии с вашими потребностями

Вы можете использовать SurfaceView и создать CustomView, который откроет камеру, и вы можете настроить его размер в xml соответственно.

Создать класс, который extends SurfaceView и открытая камера внутри что

CustomPreview.java

public class CustomPreview extends SurfaceView implements SurfaceHolder.Callback{ 

    public static Bitmap mBitmap; 
    SurfaceHolder holder; 
    static Camera mCamera; 

    public CustomPreview(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     holder = getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    } 

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

     Camera.Parameters parameters = mCamera.getParameters(); 
     parameters.getSupportedPreviewSizes(); 
     mCamera.setParameters(parameters); 
     mCamera.startPreview(); 
    } 
    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 

     try { 
      mCamera = Camera.open(); 
      mCamera.setPreviewDisplay(holder); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     mCamera.stopPreview(); 
     mCamera.release(); 
    } 
    /*** 
    * 
    * Take a picture and and convert it from bytes[] to Bitmap. 
    * 
    */ 
    public static void takeAPicture(){ 

     Camera.PictureCallback mPictureCallback = new PictureCallback() { 
      @Override 
      public void onPictureTaken(byte[] data, Camera camera) { 

       BitmapFactory.Options options = new BitmapFactory.Options(); 
       mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options); 
      } 
     }; 
     mCamera.takePicture(null, null, mPictureCallback); 
    } 
} 

Теперь вы можете добавить настраиваемое представление в вашем XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <FrameLayout 
    android:id="@+id/mySurfaceView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <com.mjl.CustomPreview 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    </com.mjl.CustomPreview> 

    </FrameLayout> 

    <LinearLayout 
    android:layout_below="@id/mySurfaceView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:gravity="center"> 

    <ImageView android:id="@+id/myImageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/icon"/> 
    </LinearLayout> 

</RelativeLayout> 

Теперь наслаждайтесь выходом.

+0

Спасибо за повтор. Я интегрирую это решение и вернусь. –