Pada postingan Cara Membuat Aplikasi Kamera dengan Android Studio ini kita akan membuat aplikasi yang nantinya dapat mengakses perangkat keras android yaitu kamera. Hasil dari aplikasi yang dibuat nantinya akan tampak seperti gambar di bawah.
Aplikasi kamera yang akan dibuat akan sangat sederhana. Hanya akan menampilkan tampilan kamera, dan belum bisa melakukan jepretan gambar. Fungsi jepretan gambar akan di tambahkan pada postingan selanjutnya.
Buat terlebih dahulu project baru dengan format seperti dibawah.
Baca : Cara Membuat Project Baru di Android Studio
Langsung saja untuk membuat aplikasi kamera silahkan ikuti langkah-langkah di bawah ini:
Langkah 1 : Tambah izin menggunakan camera di AndroidManifest.xml
...
<uses-permission android:name="android.permission.CAMERA"/>
...
Langkah 2 : Edit activity_main.xml seperti berikut.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fr_kamera"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />
Langkah 3 : Edit class MainActivity seperti berikut.
public class MainActivity extends AppCompatActivity {
private FrameLayout fr_kamera;
private SurfaceView sv;
private SurfaceHolder sh;
private Camera cm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fr_kamera = findViewById(R.id.fr_kamera);
sv = new SurfaceView(this);
sh = sv.getHolder();
sh.addCallback(new SurfaceHolderCallback());
fr_kamera.addView(sv);
}
private class SurfaceHolderCallback implements SurfaceHolder.Callback {
@Override
public void surfaceCreated(SurfaceHolder holder) {
cm = Camera.open();
Camera.Parameters parameters = cm.getParameters();
List<Camera.Size> ss = parameters.getSupportedPreviewSizes();
Camera.Size pictSize = ss.get(0);
parameters.setPictureSize(pictSize.width, pictSize.height);
cm.setParameters(parameters);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
try {
cm.setDisplayOrientation(90);
cm.setPreviewDisplay(sv.getHolder());
Camera.Parameters parameters = cm.getParameters();
List<Camera.Size> previewSize = cm.getParameters().getSupportedPreviewSizes();
Camera.Size pre = previewSize.get(0);
parameters.setPreviewSize(pre.width, pre.height);
ViewGroup.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
sv.setLayoutParams(lp);
cm.setParameters(parameters);
cm.startPreview();
}catch (Exception e){}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
cm.stopPreview();
cm.release();
}
}
}
Jika camera anda orientasinya tidak sesuai dengan yang diharapkan silahkan rubah pada bagian cm.setDisplayOrientation(90); anda bisa menggantinya misalnya 0, 90, 180. Pada bagian tersebut jika tidak sesuai bisa jadi hp anda tegakkan ke atas, tetapi gambar yang tampil malah memanjang ke samping.
Selanjutka kita akan membuat tombol untuk menangkap tangkapan kamera, lanjut di postingan Cara Membuat Aplikasi Kamera Bagian Kedua - Capture Image.
0 comments:
Post a Comment