私のSDカードにはいくつかのフレームがあります。Androidでカメラプレビューをフレームする方法は?
私の活動にはフレームのリストがあります。
ユーザーがフレームをクリックすると、そのフレームにカメラプレビューが表示されます。
画像をご覧ください。
どのように私は、この機能をアーカイブすることができますか?
これについて検索しましたが、適切な例はありませんでした。
私のSDカードにはいくつかのフレームがあります。Androidでカメラプレビューをフレームする方法は?
私の活動にはフレームのリストがあります。
ユーザーがフレームをクリックすると、そのフレームにカメラプレビューが表示されます。
画像をご覧ください。
どのように私は、この機能をアーカイブすることができますか?
これについて検索しましたが、適切な例はありませんでした。
SurfaceViewクラスを拡張して独自のプレビューを作成する必要があります。
以下のリンクを参考にしてください。
あなたはSurfaceView
を使用してカメラを開き、あなたがそれに応じxml
でその大きさを調整することができCustomView
を作成することができ
今、あなたはあなたの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>
をこのカスタムビューを追加することができ
内部
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);
}
}
というクラスを作成します。
今すぐ出力をお楽しみください。
リプレイに感謝します。私はこのソリューションを統合し、戻ってきます。 –
プレビューにframelayoutを使用して画像を設定することができます – raj