Kemampuan Akhir Yang Direncanakan
- Mahasiwa mampu membuat aplikasi yang memanfaatkan hardware kamera pada mobile Phone.
- Mahasiswa mampu mengambil foto dari kamera pada mobile phone dan menyimpannya ke SD card.
Modul
Pada modul ini akan membahas tentang camera api, dengan tujuan agar mahasiswa:
- Mengetahui cara untuk mengakses Camera pada perangkat android
- Dapat mengimplementasikan Camera API untuk membuat aplikasi android
Android mendukung penggunaan kamera dan fitur kamera yang tersedia pada perangkat mobile/handheld, sehingga kita dapat mengambil gambar atau video melalui aplikasi yang dikembangkan. Pada modul ini akan dibahas cara untuk mengambil gambar.
Ada beberapa hal yang perlu diperhatikan sebelum membuat aplikasi yang menggunakan Camera API, antara lain:
- Ketersediaan Camera -> karena kita akan menggunakan kamera pada perangkat mobile yang menggunakan aplikasi yang kita kembangkan, maka kita pastikan aplikasi terinstal pada perangkat mobile yang memiliki kamera. Dengan cara mendeklarasikannya di android manifest, dengan cara
Camera Permission | |
---|---|
<uses-permission android:name="android.permission.CAMERA" /> |
Jika aplikasi yang dikembangkan akan menggunakan Camera pada Android Device maka harus menulis permission ini pada manifest. |
Camera Feature | |
---|---|
<uses-feature android:name="android.hardware.camera" /> |
Aplikasi menggunakan kamera harus menulis camera feature pada persmission. Untuk feature dari kamera lebih detail dapat dilihat pada link (https://developer.android.com/guide/topics/manifest/usesfeature-element.html#hw-features). Salah satu feature camera yang dapat digunakan adalah autofocus, penggunaan flash pada kamera. |
Storage Permission | |
---|---|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
Jika aplikasi kita akan menyimpan gambar atau video pada SDCard (External Storage), harus menulis permission ini pada manifest |
- Hal kedua yang harus diperhatikan ketika mengembangkan aplikasi menggunakan Camera API adalah apakah aplikasi yang dikembangkan hanya berguna untuk mengambil gambar atau aplikasi yang dikembangkan menggunakan fitur atau tampilan yang telah kita custom. Jika akan mengcustom fitur pada android dapat dilihat pada link (https://developer.android.com/guide/topics/media/camera.html#custom-camera)
Praktikum Camera API untuk Mengambil Gambar
- Buat project baru dengan nama "Camera API"
- Pada AndroidManifest.xml tambahkan 2 code seperti dibawah
<uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- Buat tampilannya pada activity_main.xml dengan menambahkan tommbol dan image view, tambahkan code seperti dibawah
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Take Picture" android:id="@+id/take_picture" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/captured_photo" android:layout_above="@id/take_picture" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:contentDescription="captured image" android:layout_alignParentStart="true" /> </RelativeLayout>
Langkah terakhir buka MainActiviy.java dan masukan code di bawah ini
import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private ImageView imageHolder; private final int requestCode = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageHolder = (ImageView)findViewById(R.id.captured_photo); Button capturedImageButton = (Button)findViewById(R.id.take_picture); capturedImageButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(photoCaptureIntent, requestCode); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(this.requestCode == requestCode && resultCode == RESULT_OK){ Bitmap bitmap = (Bitmap)data.getExtras().get("data"); imageHolder.setImageBitmap(bitmap); } } }
Tugas
Lakukan praktikum di atas!
- Buatlah hasil capture bisa tersimpan ke sd card!