Seperti yang kamu tahu, kamera umumnya digunakan untuk menangkap gambar atau video. Umumnya disetiap jenis smartphone modern pasti memiliki fitur canggih ini. Tapi tahukah kamu bahwa kita sebagai programmer aplikasi juga bisa menerapkan tehnik serupa tetapi dalam aplikasi ?
Kita bisa mengendalikan kamera dengan menggunakan metode Camera API.
Android menyediakan fasilitas untuk membuat fitur tersebut dengan 2 cara :
- Melalui Camera Intent
- Melalui Camera API
Memahami Class Dasar Dari Camera Intent Dan Camera API
Pada dasarnya, terdapat 4 jenis class yang akan kita bahas disini, diantaranya :
1. Intent
Berkat bantuan dari 2 konstan class MediaStore, kita bisa menangkap gambar dan video tanpa menggunakan instance dari class Camera. Keduanya yaitu :
- ACTION_IMAGE_CAPTURE
- ACTION_VIDEO_CAPTURE
2. Camera
Ia Merupakan Class utama dari Camera API yang bisa digunakan untuk menangkap gambar maupun video.
3. SurfaceView
Ia mewakili pratinjau tampilan permukaan dari kamera langsung (Live)
4. MediaRecorder
Digunakan untuk merekam video melalui kamera. Ia juga bisa digunakan untuk merekam file audio.
Contoh Aplikasi Kamera Dengan Menggunakan Camera Intent
Dalam contoh ini, kami menulis kode sederhana untuk menangkap gambar menggunakan kamera dan menampilkan gambar menggunakan imageview.
activity_main.xml
Seret satu imageview dan satu tombol dari palet, sekarang file xml akan terlihat seperti ini :
File: activity_main.xml
<RelativeLayout xmlns:androclass=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.MainActivity” >
<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentBottom=”true”
android:layout_centerHorizontal=”true”
android:text=”Take a Photo” >
</Button>
<ImageView
android:id=”@+id/imageView1″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:layout_above=”@+id/button1″
android:layout_alignParentTop=”true”
android:src=”@drawable/ic_launcher” >
</ImageView>
</RelativeLayout>
Activity Class
Selanjutnya kita tinggal menulis kode untuk menangkap gambar dengan kamera dan menampilkannya pada Image View.
File : MainActivity.Java
package com.example.simplecamera;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private static final int CAMERA_REQUEST = 1888;
ImageView imageView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) this.findViewById(R.id.imageView1);
Button photoButton = (Button) this.findViewById(R.id.button1);
photoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get(“data”);
imageView.setImageBitmap(photo);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Output :