SlideShare a Scribd company logo
1 of 13
Download to read offline
PERTEMUAN 7:
CAMERA
A. TUJUAN PEMBELAJARAN
Adapun tujuan pembelajaran yang akan dicapai sebagai berikut:
7.1 Mengenal Fungsi Camera Dalam Aplikasi Android
7.2 Membuat Project Camera
B. URAIAN MATERI
Tujuan Pembelajaran 7.1:
Mengenal Fungsi Camera Dalam Aplikasi Android
Salah satu sisi Android yang berkembang paling pesat adalah kamera. Bukan hanya dari segi
hardware saja, tapi juga dari segi aplikasi kamera yang bertambah canggih. Kamera adalah
sensor yang paling terlihat dan paling sering digunakan dalam sebuah perangkat android.
Kamera adalah titik jual untuk sebagian besar pembeli, dan kemampuan kamera semakin
baik untuk tiap generasinya.
Aplikasi pengolahan citra biasanya bekerja pada sebuah citra setelah citra tersebut diambil,
namun aplikasi lainnya, seperti augmented reality, menggunakan kamera secara
langsung(real-time) dengan lapisan-lapisan aplikasi. Terdapat dua cara untuk mengakses
kamera dari sebuah aplikasi. Pertama dengan mendeklarasikan intent secara implisit. Intent
implisit meluncurkan interface kamera default:
a. Untuk mengambil gambar:
Intent ambilGambarIntent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(ambilGambarIntent, requestCode);
b. Untuk merekam video:
Intent ambilVideoIntent = new
Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(ambilVideoIntent, requestCode);
c. Untuk menampilkan galery:
Intent tampilkanGalleryIntent = new Intent(Intent.ACTION_PICK);
tampilkanGalleryIntent.setType("image/*");
startActivityForResult(tampilkanGalleryIntent, requestCode);
Cara berikutnya lebih mengangkat kelas Kamera, yang mana menyediakan lebih banyak
fleksibilitas dalam pengaturan. Cara ini membuat sebuah interface kamera yang sudah diubah,
yang mana menjadi fokus dalam contoh berikut. Untuk mengakses perangkat keras Kamera
membutuhkan permission eksplisit dalam file XML AndroidManifest:
​<uses-permission android:name="android.permission.CAMERA" />
Agar dapat membuat folder atau menyimpan ke media penyimpanan eksternal, maka perlu
menambahkan pernyataan permission berikut ini: ​
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Sedangkan untuk dapat merekam audio, perlu harus ditambahkan pernyataan permission di
bawah ini:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
bawah ini:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Tujuan Pembelajaran 7.2:
Membuat Project Camera
​
Untuk membuat project baru, klik menu File >> New >> Other... sehingga tampil kotak dialog
seperti gambar 7.1 berikut ini:
Gambar 7. 1 Kotak dialog membuat project baru
Pilih Android Application Project di dalam folder Android, kemudian klik tombol Next. Setelah
tampil kotak dialog pengaturan seperti gambar 7.2, beri nama aplikasi “MateriCamera”, dan
pada nama package ubah “example” menjadi “unpam”. Tentukan versi android SDK (Software
Development Kit) untuk aplikasi yang akan dibuat pada menu dropdown Build SDK, dan
minimum required SDK.
​
Gambar 7. 2 Kotak dialog pengaturan project
Setelah pengaturan nama aplikasi, nama project, nama package, dan SDK dari aplikasi, klik
tombol Next untuk melanjutkan sehingga tampil kotak dialog seperti gambar 7.3. Atur icon dari
aplikasi yang akan dibuat, bisa menggunakan image, clipart, maupun text. Atur bentuk dan
warna dari icon jika diperlukan, jika sudah selesai lanjutkan dengan mengklik tombol Next.
Gambar 7. 3 Pengaturan icon aplikasi
Gambar 7. 4 Memilih jenis Activity
Pilih Blank Activity untuk jenis Activity dari aplikasi yang akan dibuat. Lanjutkan dengan
mengklik tombol Next. Ubah judul (Title) aplikasi menjadi “Materi TabView”.
Gambar 7. 5 Mengatur nama dan judul activity
Klik tombol Finish untuk mengakhiri pengaturan pembuatan aplikasi. Tunggu beberapa saat
sampai tampil desain aplikasi seperti gambar 7.6. Jika jendela yang tampil tidak sama, dapat
diatur dari menu Window >> Show View dan pilih jendela yang ingin ditampilkan. Jika ingin
mengubah tampilan ke bentuk standar, dapat dilakukan melalui menu Window >> Reset
Perspective.
Gambar 7. 6 Tampilan IDE aplikasi android
Hapus TextView (teks “Hello Word!”), tambahkan HorizontalScrollView (dari grup Composite di
palette) di sudut kiri atas, kemudian di dalamnya tambahkan 5 Button dengan teks “Camera B”,
“Camera S”, “Video”, “Gallery”, dan “X”. Ubah nama button sesuai teksnya. Tambahkan
LinearLayout (Horizontal) lagi dan di dalamnya tambahkan ImageView dan VideoView dari grup
Images & Media. Atur desain tampilan menjadi seperti gambar 7.7 dan desain outline menjadi
seperti gambar 7.8.
Gambar 7. 7 Graphical layout activity_main.xml
Gambar 7. 8 Outline activity_main.xml
Desain activity dapat juga diatur melalui source code XML sebagai berikut:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/cameraBButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Camera B" />
<Button
android:id="@+id/cameraSButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Camera S" />
<Button
android:id="@+id/videoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Video" />
<Button
android:id="@+id/galleryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gallery" />
<Button
android:id="@+id/xButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X" />
</LinearLayout>
</HorizontalScrollView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/horizontalScrollView1"
android:orientation="vertical" >
android:layout_height="wrap_content"
android:layout_below="@+id/horizontalScrollView1"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="394dp"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher"
android:visibility="visible" />
<VideoView
android:id="@+id/videoView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="invisible" />
</LinearLayout>
</RelativeLayout>
Karena aplikasi ini mengakses perangkat keras kamera yang membutuhkan permission eksplisit
dalam file AndroidManifest.xml, maka tambahkan pernyataan di bawah ini di antara tag uses-sdk
dan application.
Permission untuk menggunakan kamera:
<uses-permission android:name="android.permission.CAMERA" />
Permission untuk menulis di penyimpanan eksternal:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Permission untuk merekam audio:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Setelah selesai mengatur desain activity, selanjutnya menambahkan source code java. Double
klik file MainActivity.java yang berada di project dalam folder src >>
com.unpam.materitabview, sehingga menjadi seperti berikut ini:
package com.unpam.matericamera;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat; import
java.util.Date;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore; import
android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import
android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView; import
android.widget.Toast;
import android.widget.VideoView;
public class MainActivity extends Activity implements OnClickListener{
private static final int AMBIL_FOTO_BESAR = 1;
private static final int AMBIL_FOTO_KECIL = 2; private
static final int AMBIL_VIDEO = 3; private static final
int TAMPILKAN_GALLERY = 4;
private static final int AMBIL_FOTO_KECIL = 2; private
static final int AMBIL_VIDEO = 3; private static final
int TAMPILKAN_GALLERY = 4;
​
​private static final String JPEG_FILE_PREFIX = "IMG_";
​private static final String JPEG_FILE_SUFFIX = ".jpg";
​
​private ImageView imageView; ​
private Bitmap bitmap; ​
private VideoView videoView;
​private Uri videoUri;
​
​private String mCurrentPhotoPath;
​
​private Intent ambilGambarIntent; ​private
Intent ambilVideoIntent; ​private Intent
tampilkanGalleryIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
videoView = (VideoView) findViewById(R.id.videoView);
findViewById(R.id.cameraBButton).setOnClickListener(this);
findViewById(R.id.cameraSButton).setOnClickListener(this);
findViewById(R.id.videoButton).setOnClickListener(this);
findViewById(R.id.galleryButton).setOnClickListener(this);
findViewById(R.id.xButton).setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu); return
true;
}
private File getAlbumDir() {
​ ​File storageDir = null;
​ ​final String namaDirektori = "/DCIM/CameraSample";
​ ​if
(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
{
​ ​ ​storageDir = new File
(Environment.getExternalStorageDirectory() + namaDirektori);
​ ​ ​if (storageDir != null) { ​
​ ​ ​if (!storageDir.mkdirs()) { ​
​ ​ ​ ​if (!storageDir.exists()){
​ ​ ​ ​ ​ ​Log.d("CameraSample", "Gagal
membuat direktori "+storageDir);
​ ​ ​ ​ ​ ​return null;
​ ​ ​ ​ ​}
​ ​ ​ ​}
​ ​ ​}
​ ​ ​
​ ​} else {
Log.v(getString(R.string.app_name), "Eksternal penyimpanan tidak diset
READ/WRITE");
​ ​} else {
Log.v(getString(R.string.app_name), "Eksternal penyimpanan tidak diset
READ/WRITE");
​ ​ ​}
​ ​ ​return storageDir;
​ ​}
private File createImageFile() throws IOException {
​ ​ ​String timeStamp = new
SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
​ ​ ​String imageFileName = JPEG_FILE_PREFIX + timeStamp;
​ ​
​ ​ ​File albumF = getAlbumDir();
​ ​ ​File imageF = File.createTempFile(imageFileName,
JPEG_FILE_SUFFIX, albumF);
​ ​
​ ​ ​return imageF;
​ ​}
​ ​private File setUpPhotoFile() throws IOException { ​
​
​ ​ ​File f = createImageFile();
​ ​
​ ​ ​mCurrentPhotoPath = f.getAbsolutePath();
​ ​ ​return f;
​ ​}
​ ​public void onClick(View v) {
switc
h
​ ​ ​// TODO Auto-generated method stub
​ ​ ​ (v.getId()){
​ ​ ​case R.id.cameraBButton:
​ ​ ​ ​ambilGambarIntent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
​ ​ ​
​ ​ ​ ​File f = null;
​ ​ ​
​ ​ ​ ​try {
​ ​ ​ ​ ​f = setUpPhotoFile();
​ ​ ​ ​ ​mCurrentPhotoPath = f.getAbsolutePath();
​ ​
​ ​ambilGambarIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(f));
​ ​ ​ ​} catch (IOException e) {
​ ​ ​
​e.printStackTrace(); ​ ​
​ ​f = null;
​ ​ ​ ​ ​mCurrentPhotoPath = null;
​ ​ ​ ​}
​ ​ ​
​ ​ ​ ​startActivityForResult(ambilGambarIntent,
AMBIL_FOTO_BESAR);
break;
case
R.id.cameraSButton:
break;
case
R.id.cameraSButton:
​ ​ambilGambarIntent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
​ ​ ​ ​startActivityForResult(ambilGambarIntent,
AMBIL_FOTO_KECIL);
break;
case R.id.videoButton:
​ ​ambilVideoIntent = new
Intent(MediaStore.ACTION_VIDEO_CAPTURE); ​ ​
​startActivityForResult(ambilVideoIntent, AMBIL_VIDEO);
​ ​ ​break;
​ ​case R.id.galleryButton:
tampilkanGalleryIntent = new
Intent(Intent.ACTION_PICK);
​ ​ ​tampilkanGalleryIntent.setType("image/*");
​ ​ ​startActivityForResult(tampilkanGalleryIntent,
TAMPILKAN_GALLERY);
​ ​
​break; ​
​case R.id.xButton:
​ ​
​System.exit(0);
​ ​
​break; ​
​default:
​ ​}
​}
​
​protected void onActivityResult(int requestCode, int
resultCode,
Intent data) {
​ ​switch
(requestCode) { ​
​case AMBIL_FOTO_BESAR:
​ ​ ​if (resultCode == RESULT_OK) {
​ ​ ​ ​handleBigCameraPhoto();
​ ​ ​}
​ ​ ​break;
​ ​case
AMBIL_FOTO_KECIL:
​ ​ ​if (resultCode == RESULT_OK) {
​ ​ ​ ​handleSmallCameraPhoto(data);
​ ​ ​}
​ ​
​break; ​
​case
AMBIL_VIDEO:
​ ​ ​if (resultCode == RESULT_OK) { ​
​ ​ ​handleCameraVideo(data);
​ ​ ​}
​ ​ ​break;
​ ​case
TAMPILKAN_GALLERY:
​ ​ ​if (resultCode ==
​
​
​ ​case
TAMPILKAN_GALLERY:
​ ​ ​if (resultCode ==
RESULT_OK) { ​ ​ ​ ​Uri
photoUri = data.getData();
​ ​ ​ ​imageView.setImageURI(photoUri);
​ ​ ​ ​
​ ​ ​
​videoView.setVisibility(View.INVISIBLE);
​ ​ ​ ​imageView.setVisibility(View.VISIBLE);
​ ​ ​}
​ ​
​break;
​ ​}
​}
​
​private void handleBigCameraPhoto() {
​ ​ ​ ​if (mCurrentPhotoPath
!= null) {
​ ​ ​setPic();
​ ​ ​galleryAddPic();
​ ​ ​mCurrentPhotoPath = null;
​ ​}
​}
​private void handleSmallCameraPhoto(Intent
intent) { ​ ​Bundle extras =
intent.getExtras(); ​ ​bitmap =
(Bitmap) extras.get("data"); ​ ​
​ ​imageView.setImageBitmap(bitmap);
​ ​
​ ​String timeStamp = new
SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
​ ​String imageFileName = JPEG_FILE_PREFIX + timeStamp;
​ ​ private void
handleSmallCameraPhoto(Intent intent) { ​
​Bundle extras = intent.getExtras(); ​
​bitmap = (Bitmap) extras.get("data"); ​
​
​ ​imageView.setImageBitmap(bitmap);
​ ​
​ ​String timeStamp = new
SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
​ ​String imageFileName = JPEG_FILE_PREFIX + timeStamp;
​ ​if
(MediaStore.Images.Media.insertImage(getContentResolver(),
bitmap, imageFileName, null) != null){
​ ​ ​ ​Toast.makeText(this, "Saved",
Toast.LENGTH_SHORT).show();
​ ​ ​} else {
​ ​ ​ ​Toast.makeText(this, "Save Failed",
Toast.LENGTH_SHORT).show();
​ ​ ​}
​ ​ ​ ​Toast.makeText(this, "Save Failed",
Toast.LENGTH_SHORT).show();
​ ​ ​}
​ ​
​ ​ ​videoUri = null; ​
​ ​videoView.setVisibility(View.INVISIBLE); ​
​imageView.setVisibility(View.VISIBLE);
​ ​}
​ ​private void handleCameraVideo(Intent intent) {
​ ​ ​videoUri = intent.getData();
​ ​ ​videoView.setVideoURI(videoUri);
​ ​
​ ​ ​bitmap = null;
​ ​imageView.setVisibility(View.INVISIBLE); ​
​videoView.setVisibility(View.VISIBLE);
​ ​}
​
​private void setPic() { ​
​int targetW =
imageView.getWidth(); ​ ​int
targetH = imageView.getHeight();
​ ​ ​BitmapFactory.Options bmOptions = new
BitmapFactory.Options(); ​
​bmOptions.inJustDecodeBounds = true;
​ ​ ​BitmapFactory.decodeFile(mCurrentPhotoPath,
bmOptions);
​ ​ ​int photoW = bmOptions.outWidth;
​ ​ ​int photoH = bmOptions.outHeight;
​ ​
​ ​ ​int scaleFactor = 1;
​ ​if ((targetW > 0) || (targetH > 0)) { ​
​ ​scaleFactor = Math.min(photoW/targetW,
photoH/targetH);
​
​ ​ ​}
​ ​bmOptions.inJustDecodeBounds = false; ​
​bmOptions.inSampleSize = scaleFactor;
​ ​ ​bmOptions.inPurgeable = true;
​ ​
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath,
bmOptions);
​ ​
​
​imageView.setImageBitmap(bitmap);
​ ​videoUri = null;
imageView.setVisibility(View.VISIBLE); ​
​videoView.setVisibility(View.INVISIBLE); ​
​ ​}
​ ​private void galleryAddPic() {
​ ​ ​ Intent mediaScanIntent = new
Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
​ ​ ​File f = new
​ ​ ​ Intent mediaScanIntent = new
Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
​ ​ ​File f = new
File(mCurrentPhotoPath); ​ ​ Uri
contentUri = Uri.fromFile(f); ​ ​
mediaScanIntent.setData(contentUri); ​
​ this.sendBroadcast(mediaScanIntent);
​ ​}
​ ​ ​
Tampilan Aplikasi
Tampilan aplikasi yang telah dibuat pada AVD (Android Virtual Device) adalah sebagai
berikut:
Gambar 7. 9 Tampilan materi kamera di AVD
C. SOAL LATIHAN/TUGAS
Pada project diatas tambahkan menu untuk mengUpload hasil Gambar ke media social!
D. DAFTAR PUSTAKA
Allen, Grant. 2012. Beginning Android 4. New York : Apress.
Safaat, H. Nazruddin. 2015. ANDROID Pemrograman Aplikasi Mobile Smartphone dan Tablet
PC Berbasis Android. Bandung: Informatika
163

More Related Content

What's hot

Pertemuan 4 alert dan toast
Pertemuan 4 alert dan toastPertemuan 4 alert dan toast
Pertemuan 4 alert dan toastheriakj
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
MudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java DesktopMudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java DesktopMudafiq R. Pratama
 
Makalah Desain web menggunakan dreamweaver 8
Makalah Desain web menggunakan dreamweaver 8Makalah Desain web menggunakan dreamweaver 8
Makalah Desain web menggunakan dreamweaver 8Ichsan Smith
 
Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sqlLela Warni
 
Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)
Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)
Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)ntalim
 
Modul Tutorial Membuat Class pada Visual Studio 2010
Modul Tutorial Membuat Class pada Visual Studio 2010Modul Tutorial Membuat Class pada Visual Studio 2010
Modul Tutorial Membuat Class pada Visual Studio 2010Choi Melia
 
Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021
Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021
Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021Saprudin Eskom
 
Tugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digitalTugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digitalFauji Gabe
 
Validasi ide Menggunakan Javelin Board (Idea Validation)
Validasi ide Menggunakan Javelin Board (Idea Validation)Validasi ide Menggunakan Javelin Board (Idea Validation)
Validasi ide Menggunakan Javelin Board (Idea Validation)Adam Mukharil Bachtiar
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 

What's hot (20)

Mini Google Design Sprint
Mini Google Design SprintMini Google Design Sprint
Mini Google Design Sprint
 
Pertemuan 4 alert dan toast
Pertemuan 4 alert dan toastPertemuan 4 alert dan toast
Pertemuan 4 alert dan toast
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Laporan tugas struktur data
Laporan tugas struktur dataLaporan tugas struktur data
Laporan tugas struktur data
 
UML dan Use Case View
UML dan Use Case ViewUML dan Use Case View
UML dan Use Case View
 
MudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java DesktopMudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java Desktop
 
Modul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUIModul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUI
 
Use skenario
Use skenarioUse skenario
Use skenario
 
Makalah Desain web menggunakan dreamweaver 8
Makalah Desain web menggunakan dreamweaver 8Makalah Desain web menggunakan dreamweaver 8
Makalah Desain web menggunakan dreamweaver 8
 
Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sql
 
Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)
Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)
Laporan Aplikasi Kasir Sederhana (KOPERASI ABC)
 
Modul Tutorial Membuat Class pada Visual Studio 2010
Modul Tutorial Membuat Class pada Visual Studio 2010Modul Tutorial Membuat Class pada Visual Studio 2010
Modul Tutorial Membuat Class pada Visual Studio 2010
 
Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021
Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021
Soal uts/ pts semester genap mapel pbo kelas xi rpl tahun 2021
 
Definisi testing
Definisi testingDefinisi testing
Definisi testing
 
Tugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digitalTugas mandiri pengolahan citra digital
Tugas mandiri pengolahan citra digital
 
Validasi ide Menggunakan Javelin Board (Idea Validation)
Validasi ide Menggunakan Javelin Board (Idea Validation)Validasi ide Menggunakan Javelin Board (Idea Validation)
Validasi ide Menggunakan Javelin Board (Idea Validation)
 
Laporan tugas akhir daspro kelompok
Laporan tugas akhir daspro kelompok Laporan tugas akhir daspro kelompok
Laporan tugas akhir daspro kelompok
 
Percabangan
PercabanganPercabangan
Percabangan
 
Algoritma flowchart
Algoritma flowchartAlgoritma flowchart
Algoritma flowchart
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 

Similar to Pertemuan 7 camera

Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...Muhammad Yusuf
 
Live coding andorid
Live coding andoridLive coding andorid
Live coding andoridArif Huda
 
Pengembangan aplikasi mobile learning menggunakan Intel XDK
Pengembangan aplikasi mobile learning menggunakan Intel XDKPengembangan aplikasi mobile learning menggunakan Intel XDK
Pengembangan aplikasi mobile learning menggunakan Intel XDKGilang Aziz
 
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...Muhammad Yusuf
 
Introduction on Android programming Tutorial
Introduction on Android programming TutorialIntroduction on Android programming Tutorial
Introduction on Android programming TutorialDimas Prawira
 
Modul 5 pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2
Modul 5   pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2Modul 5   pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2
Modul 5 pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2Muhammad Yusuf
 
Integrasi aplikasi mobile dengan Facebook API menggunakan Intel XDK
Integrasi aplikasi mobile dengan Facebook API menggunakan Intel XDKIntegrasi aplikasi mobile dengan Facebook API menggunakan Intel XDK
Integrasi aplikasi mobile dengan Facebook API menggunakan Intel XDKGilang Aziz
 
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...Muhammad Yusuf
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukAgus Haryanto
 
Modul 7 integrasi aplikasi dengan facebook api menggunakan intel xdk
Modul 7   integrasi aplikasi dengan facebook api menggunakan intel xdkModul 7   integrasi aplikasi dengan facebook api menggunakan intel xdk
Modul 7 integrasi aplikasi dengan facebook api menggunakan intel xdkMuhammad Yusuf
 
Modul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android SudaryatnoModul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android SudaryatnoYatno Sudar
 
Modul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoModul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoYatno Sudar
 
Modul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoModul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoYatno Sudar
 
Membuat media pembelajaran berbasis android
Membuat media pembelajaran berbasis androidMembuat media pembelajaran berbasis android
Membuat media pembelajaran berbasis androidFunnys Rahman
 
Membuat installer by depandi enda
Membuat installer by depandi endaMembuat installer by depandi enda
Membuat installer by depandi endaDevandy Enda
 
Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4Renhard Manurung
 

Similar to Pertemuan 7 camera (20)

D0215610(muh ikram s)
D0215610(muh ikram s)D0215610(muh ikram s)
D0215610(muh ikram s)
 
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 8 - Men-submit Aplikasi ke...
 
Live coding andorid
Live coding andoridLive coding andorid
Live coding andorid
 
Pengembangan aplikasi mobile learning menggunakan Intel XDK
Pengembangan aplikasi mobile learning menggunakan Intel XDKPengembangan aplikasi mobile learning menggunakan Intel XDK
Pengembangan aplikasi mobile learning menggunakan Intel XDK
 
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 4 - Pengembangan Aplikasi ...
 
Introduction on Android programming Tutorial
Introduction on Android programming TutorialIntroduction on Android programming Tutorial
Introduction on Android programming Tutorial
 
Modul 5 pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2
Modul 5   pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2Modul 5   pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2
Modul 5 pengembangan aplikasi mobile learning menggunakan intel xdk sesi 2
 
Integrasi aplikasi mobile dengan Facebook API menggunakan Intel XDK
Integrasi aplikasi mobile dengan Facebook API menggunakan Intel XDKIntegrasi aplikasi mobile dengan Facebook API menggunakan Intel XDK
Integrasi aplikasi mobile dengan Facebook API menggunakan Intel XDK
 
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...
Modul Intel XDK Workshop ver 1.0 Sept 2013 - Modul 3 - Pengenalan Intel XDK D...
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog Produk
 
Modul 7 integrasi aplikasi dengan facebook api menggunakan intel xdk
Modul 7   integrasi aplikasi dengan facebook api menggunakan intel xdkModul 7   integrasi aplikasi dengan facebook api menggunakan intel xdk
Modul 7 integrasi aplikasi dengan facebook api menggunakan intel xdk
 
Modul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android SudaryatnoModul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android Sudaryatno
 
Live coding #1
Live coding #1Live coding #1
Live coding #1
 
Modul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoModul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android Sudaryatno
 
Modul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoModul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android Sudaryatno
 
Membuat media pembelajaran berbasis android
Membuat media pembelajaran berbasis androidMembuat media pembelajaran berbasis android
Membuat media pembelajaran berbasis android
 
Membuat installer by depandi enda
Membuat installer by depandi endaMembuat installer by depandi enda
Membuat installer by depandi enda
 
Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4
 
Visual basic 6
Visual basic 6Visual basic 6
Visual basic 6
 
Visual basic
Visual basicVisual basic
Visual basic
 

Recently uploaded

Bimbingan Teknis Penyusunan Soal Pilihan Berganda 2024.pptx
Bimbingan Teknis Penyusunan Soal Pilihan Berganda  2024.pptxBimbingan Teknis Penyusunan Soal Pilihan Berganda  2024.pptx
Bimbingan Teknis Penyusunan Soal Pilihan Berganda 2024.pptxjannenapitupulu18
 
contoh judul tesis untuk mahasiswa pascasarjana
contoh judul tesis untuk mahasiswa pascasarjanacontoh judul tesis untuk mahasiswa pascasarjana
contoh judul tesis untuk mahasiswa pascasarjanaNhasrul
 
PPT Kelompok 2 tantangan Manajemen Inovasi.pptx
PPT Kelompok 2 tantangan Manajemen Inovasi.pptxPPT Kelompok 2 tantangan Manajemen Inovasi.pptx
PPT Kelompok 2 tantangan Manajemen Inovasi.pptxAhmadArul1
 
Digital Onboarding (Bisnis Digital) Fase F
Digital Onboarding (Bisnis Digital) Fase FDigital Onboarding (Bisnis Digital) Fase F
Digital Onboarding (Bisnis Digital) Fase FSMKTarunaJaya
 
KISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdsh
KISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdshKISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdsh
KISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdshDosenBernard
 
PEMANTAUAN HEMODINAMIK.dalam keperawatan pptx
PEMANTAUAN HEMODINAMIK.dalam keperawatan pptxPEMANTAUAN HEMODINAMIK.dalam keperawatan pptx
PEMANTAUAN HEMODINAMIK.dalam keperawatan pptxZullaiqahNurhali2
 
Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...
Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...
Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...buktifisikskp23
 
KELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdf
KELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdfKELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdf
KELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdfInnesKana26
 
PPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptx
PPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptxPPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptx
PPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptxrisyadmaulana1
 
Menganalisis T Test dengan menggunakan SPSS
Menganalisis T Test dengan menggunakan SPSSMenganalisis T Test dengan menggunakan SPSS
Menganalisis T Test dengan menggunakan SPSStakasli
 
undang undang penataan ruang daerah kabupaten bogor
undang undang penataan ruang daerah kabupaten bogorundang undang penataan ruang daerah kabupaten bogor
undang undang penataan ruang daerah kabupaten bogorritch4
 
Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...
Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...
Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...HelmiatulHasanah
 
Jual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan KonsultasiJual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan Konsultasissupi412
 
Alur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdf
Alur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdfAlur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdf
Alur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdfPemdes Wonoyoso
 
materi konsep dan Model TRIASE Bencana.pptx
materi konsep dan Model TRIASE Bencana.pptxmateri konsep dan Model TRIASE Bencana.pptx
materi konsep dan Model TRIASE Bencana.pptxZullaiqahNurhali2
 
384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt
384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt
384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.pptsarassasha
 
Keracunan bahan kimia,ektasi,opiat,makanan.ppt
Keracunan bahan kimia,ektasi,opiat,makanan.pptKeracunan bahan kimia,ektasi,opiat,makanan.ppt
Keracunan bahan kimia,ektasi,opiat,makanan.pptDIGGIVIO2
 

Recently uploaded (20)

Bimbingan Teknis Penyusunan Soal Pilihan Berganda 2024.pptx
Bimbingan Teknis Penyusunan Soal Pilihan Berganda  2024.pptxBimbingan Teknis Penyusunan Soal Pilihan Berganda  2024.pptx
Bimbingan Teknis Penyusunan Soal Pilihan Berganda 2024.pptx
 
contoh judul tesis untuk mahasiswa pascasarjana
contoh judul tesis untuk mahasiswa pascasarjanacontoh judul tesis untuk mahasiswa pascasarjana
contoh judul tesis untuk mahasiswa pascasarjana
 
Jual Pil Penggugur Kandungan 085225524732 Obat Aborsi Cytotec Asli
Jual Pil Penggugur Kandungan 085225524732 Obat Aborsi Cytotec AsliJual Pil Penggugur Kandungan 085225524732 Obat Aborsi Cytotec Asli
Jual Pil Penggugur Kandungan 085225524732 Obat Aborsi Cytotec Asli
 
PPT Kelompok 2 tantangan Manajemen Inovasi.pptx
PPT Kelompok 2 tantangan Manajemen Inovasi.pptxPPT Kelompok 2 tantangan Manajemen Inovasi.pptx
PPT Kelompok 2 tantangan Manajemen Inovasi.pptx
 
Digital Onboarding (Bisnis Digital) Fase F
Digital Onboarding (Bisnis Digital) Fase FDigital Onboarding (Bisnis Digital) Fase F
Digital Onboarding (Bisnis Digital) Fase F
 
KISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdsh
KISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdshKISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdsh
KISI-KISI USEK PJOK TA 2023-2024 anans ajaja jaja hdsh
 
PEMANTAUAN HEMODINAMIK.dalam keperawatan pptx
PEMANTAUAN HEMODINAMIK.dalam keperawatan pptxPEMANTAUAN HEMODINAMIK.dalam keperawatan pptx
PEMANTAUAN HEMODINAMIK.dalam keperawatan pptx
 
Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...
Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...
Telaah Kurikulum dan Buku Teks Mata Pelajaran Bahasa Indonesia Sekolah Dasar ...
 
KELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdf
KELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdfKELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdf
KELOMPOK 6- DINAMIKA DAN TANTANGAN PANCASILA SEBAGAI IDEOLOGI.pdf
 
PPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptx
PPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptxPPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptx
PPT SEMINAR PROPOSAL KLASIFIKASI CNN.pptx
 
Menganalisis T Test dengan menggunakan SPSS
Menganalisis T Test dengan menggunakan SPSSMenganalisis T Test dengan menggunakan SPSS
Menganalisis T Test dengan menggunakan SPSS
 
undang undang penataan ruang daerah kabupaten bogor
undang undang penataan ruang daerah kabupaten bogorundang undang penataan ruang daerah kabupaten bogor
undang undang penataan ruang daerah kabupaten bogor
 
Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...
Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...
Katalog-Kurikulum-Non-Pendas-UT-2023-2024_SC-23-MEI-2023-revisi-171023_compre...
 
Jual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan KonsultasiJual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Majalengka Ori👗082322223014👗Pusat Peluntur Kandungan Konsultasi
 
Jual Obat Aborsi Tasikmalaya ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik J...
Jual Obat Aborsi Tasikmalaya ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik J...Jual Obat Aborsi Tasikmalaya ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik J...
Jual Obat Aborsi Tasikmalaya ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik J...
 
apotek jual obat aborsi Bogor Wa 082223109953 obat aborsi Cytotec Di Bogor
apotek jual obat aborsi Bogor Wa 082223109953 obat aborsi Cytotec Di Bogorapotek jual obat aborsi Bogor Wa 082223109953 obat aborsi Cytotec Di Bogor
apotek jual obat aborsi Bogor Wa 082223109953 obat aborsi Cytotec Di Bogor
 
Alur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdf
Alur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdfAlur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdf
Alur Pengajuan Surat Keterangan Pindah (Individu) lewat IKD.pdf
 
materi konsep dan Model TRIASE Bencana.pptx
materi konsep dan Model TRIASE Bencana.pptxmateri konsep dan Model TRIASE Bencana.pptx
materi konsep dan Model TRIASE Bencana.pptx
 
384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt
384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt
384986085-Bahaya-Narkoba-Bagi-Kesehatan-Jiwa-Remaja.ppt
 
Keracunan bahan kimia,ektasi,opiat,makanan.ppt
Keracunan bahan kimia,ektasi,opiat,makanan.pptKeracunan bahan kimia,ektasi,opiat,makanan.ppt
Keracunan bahan kimia,ektasi,opiat,makanan.ppt
 

Pertemuan 7 camera

  • 1. PERTEMUAN 7: CAMERA A. TUJUAN PEMBELAJARAN Adapun tujuan pembelajaran yang akan dicapai sebagai berikut: 7.1 Mengenal Fungsi Camera Dalam Aplikasi Android 7.2 Membuat Project Camera B. URAIAN MATERI Tujuan Pembelajaran 7.1: Mengenal Fungsi Camera Dalam Aplikasi Android Salah satu sisi Android yang berkembang paling pesat adalah kamera. Bukan hanya dari segi hardware saja, tapi juga dari segi aplikasi kamera yang bertambah canggih. Kamera adalah sensor yang paling terlihat dan paling sering digunakan dalam sebuah perangkat android. Kamera adalah titik jual untuk sebagian besar pembeli, dan kemampuan kamera semakin baik untuk tiap generasinya. Aplikasi pengolahan citra biasanya bekerja pada sebuah citra setelah citra tersebut diambil, namun aplikasi lainnya, seperti augmented reality, menggunakan kamera secara langsung(real-time) dengan lapisan-lapisan aplikasi. Terdapat dua cara untuk mengakses kamera dari sebuah aplikasi. Pertama dengan mendeklarasikan intent secara implisit. Intent implisit meluncurkan interface kamera default: a. Untuk mengambil gambar: Intent ambilGambarIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(ambilGambarIntent, requestCode); b. Untuk merekam video: Intent ambilVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(ambilVideoIntent, requestCode); c. Untuk menampilkan galery: Intent tampilkanGalleryIntent = new Intent(Intent.ACTION_PICK); tampilkanGalleryIntent.setType("image/*"); startActivityForResult(tampilkanGalleryIntent, requestCode); Cara berikutnya lebih mengangkat kelas Kamera, yang mana menyediakan lebih banyak fleksibilitas dalam pengaturan. Cara ini membuat sebuah interface kamera yang sudah diubah, yang mana menjadi fokus dalam contoh berikut. Untuk mengakses perangkat keras Kamera membutuhkan permission eksplisit dalam file XML AndroidManifest: ​<uses-permission android:name="android.permission.CAMERA" /> Agar dapat membuat folder atau menyimpan ke media penyimpanan eksternal, maka perlu menambahkan pernyataan permission berikut ini: ​ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> Sedangkan untuk dapat merekam audio, perlu harus ditambahkan pernyataan permission di bawah ini: <uses-permission android:name="android.permission.RECORD_AUDIO" />
  • 2. bawah ini: <uses-permission android:name="android.permission.RECORD_AUDIO" /> Tujuan Pembelajaran 7.2: Membuat Project Camera ​ Untuk membuat project baru, klik menu File >> New >> Other... sehingga tampil kotak dialog seperti gambar 7.1 berikut ini: Gambar 7. 1 Kotak dialog membuat project baru Pilih Android Application Project di dalam folder Android, kemudian klik tombol Next. Setelah tampil kotak dialog pengaturan seperti gambar 7.2, beri nama aplikasi “MateriCamera”, dan pada nama package ubah “example” menjadi “unpam”. Tentukan versi android SDK (Software Development Kit) untuk aplikasi yang akan dibuat pada menu dropdown Build SDK, dan minimum required SDK. ​
  • 3. Gambar 7. 2 Kotak dialog pengaturan project Setelah pengaturan nama aplikasi, nama project, nama package, dan SDK dari aplikasi, klik tombol Next untuk melanjutkan sehingga tampil kotak dialog seperti gambar 7.3. Atur icon dari aplikasi yang akan dibuat, bisa menggunakan image, clipart, maupun text. Atur bentuk dan warna dari icon jika diperlukan, jika sudah selesai lanjutkan dengan mengklik tombol Next. Gambar 7. 3 Pengaturan icon aplikasi
  • 4. Gambar 7. 4 Memilih jenis Activity Pilih Blank Activity untuk jenis Activity dari aplikasi yang akan dibuat. Lanjutkan dengan mengklik tombol Next. Ubah judul (Title) aplikasi menjadi “Materi TabView”. Gambar 7. 5 Mengatur nama dan judul activity Klik tombol Finish untuk mengakhiri pengaturan pembuatan aplikasi. Tunggu beberapa saat sampai tampil desain aplikasi seperti gambar 7.6. Jika jendela yang tampil tidak sama, dapat diatur dari menu Window >> Show View dan pilih jendela yang ingin ditampilkan. Jika ingin mengubah tampilan ke bentuk standar, dapat dilakukan melalui menu Window >> Reset Perspective.
  • 5. Gambar 7. 6 Tampilan IDE aplikasi android Hapus TextView (teks “Hello Word!”), tambahkan HorizontalScrollView (dari grup Composite di palette) di sudut kiri atas, kemudian di dalamnya tambahkan 5 Button dengan teks “Camera B”, “Camera S”, “Video”, “Gallery”, dan “X”. Ubah nama button sesuai teksnya. Tambahkan LinearLayout (Horizontal) lagi dan di dalamnya tambahkan ImageView dan VideoView dari grup Images & Media. Atur desain tampilan menjadi seperti gambar 7.7 dan desain outline menjadi seperti gambar 7.8. Gambar 7. 7 Graphical layout activity_main.xml
  • 6. Gambar 7. 8 Outline activity_main.xml Desain activity dapat juga diatur melalui source code XML sebagai berikut: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <HorizontalScrollView android:id="@+id/horizontalScrollView1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <Button android:id="@+id/cameraBButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Camera B" /> <Button android:id="@+id/cameraSButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Camera S" /> <Button android:id="@+id/videoButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Video" /> <Button android:id="@+id/galleryButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Gallery" /> <Button android:id="@+id/xButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="X" /> </LinearLayout> </HorizontalScrollView> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/horizontalScrollView1" android:orientation="vertical" >
  • 7. android:layout_height="wrap_content" android:layout_below="@+id/horizontalScrollView1" android:orientation="vertical" > <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="394dp" android:contentDescription="@string/app_name" android:src="@drawable/ic_launcher" android:visibility="visible" /> <VideoView android:id="@+id/videoView" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:visibility="invisible" /> </LinearLayout> </RelativeLayout> Karena aplikasi ini mengakses perangkat keras kamera yang membutuhkan permission eksplisit dalam file AndroidManifest.xml, maka tambahkan pernyataan di bawah ini di antara tag uses-sdk dan application. Permission untuk menggunakan kamera: <uses-permission android:name="android.permission.CAMERA" /> Permission untuk menulis di penyimpanan eksternal: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> Permission untuk merekam audio: <uses-permission android:name="android.permission.RECORD_AUDIO" /> Setelah selesai mengatur desain activity, selanjutnya menambahkan source code java. Double klik file MainActivity.java yang berada di project dalam folder src >> com.unpam.materitabview, sehingga menjadi seperti berikut ini: package com.unpam.matericamera; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.Toast; import android.widget.VideoView; public class MainActivity extends Activity implements OnClickListener{ private static final int AMBIL_FOTO_BESAR = 1; private static final int AMBIL_FOTO_KECIL = 2; private static final int AMBIL_VIDEO = 3; private static final int TAMPILKAN_GALLERY = 4;
  • 8. private static final int AMBIL_FOTO_KECIL = 2; private static final int AMBIL_VIDEO = 3; private static final int TAMPILKAN_GALLERY = 4; ​ ​private static final String JPEG_FILE_PREFIX = "IMG_"; ​private static final String JPEG_FILE_SUFFIX = ".jpg"; ​ ​private ImageView imageView; ​ private Bitmap bitmap; ​ private VideoView videoView; ​private Uri videoUri; ​ ​private String mCurrentPhotoPath; ​ ​private Intent ambilGambarIntent; ​private Intent ambilVideoIntent; ​private Intent tampilkanGalleryIntent; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageView); videoView = (VideoView) findViewById(R.id.videoView); findViewById(R.id.cameraBButton).setOnClickListener(this); findViewById(R.id.cameraSButton).setOnClickListener(this); findViewById(R.id.videoButton).setOnClickListener(this); findViewById(R.id.galleryButton).setOnClickListener(this); findViewById(R.id.xButton).setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } private File getAlbumDir() { ​ ​File storageDir = null; ​ ​final String namaDirektori = "/DCIM/CameraSample"; ​ ​if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { ​ ​ ​storageDir = new File (Environment.getExternalStorageDirectory() + namaDirektori); ​ ​ ​if (storageDir != null) { ​ ​ ​ ​if (!storageDir.mkdirs()) { ​ ​ ​ ​ ​if (!storageDir.exists()){ ​ ​ ​ ​ ​ ​Log.d("CameraSample", "Gagal membuat direktori "+storageDir); ​ ​ ​ ​ ​ ​return null; ​ ​ ​ ​ ​} ​ ​ ​ ​} ​ ​ ​} ​ ​ ​ ​ ​} else { Log.v(getString(R.string.app_name), "Eksternal penyimpanan tidak diset READ/WRITE");
  • 9. ​ ​} else { Log.v(getString(R.string.app_name), "Eksternal penyimpanan tidak diset READ/WRITE"); ​ ​ ​} ​ ​ ​return storageDir; ​ ​} private File createImageFile() throws IOException { ​ ​ ​String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); ​ ​ ​String imageFileName = JPEG_FILE_PREFIX + timeStamp; ​ ​ ​ ​ ​File albumF = getAlbumDir(); ​ ​ ​File imageF = File.createTempFile(imageFileName, JPEG_FILE_SUFFIX, albumF); ​ ​ ​ ​ ​return imageF; ​ ​} ​ ​private File setUpPhotoFile() throws IOException { ​ ​ ​ ​ ​File f = createImageFile(); ​ ​ ​ ​ ​mCurrentPhotoPath = f.getAbsolutePath(); ​ ​ ​return f; ​ ​} ​ ​public void onClick(View v) { switc h ​ ​ ​// TODO Auto-generated method stub ​ ​ ​ (v.getId()){ ​ ​ ​case R.id.cameraBButton: ​ ​ ​ ​ambilGambarIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ​ ​ ​ ​ ​ ​ ​File f = null; ​ ​ ​ ​ ​ ​ ​try { ​ ​ ​ ​ ​f = setUpPhotoFile(); ​ ​ ​ ​ ​mCurrentPhotoPath = f.getAbsolutePath(); ​ ​ ​ ​ambilGambarIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); ​ ​ ​ ​} catch (IOException e) { ​ ​ ​ ​e.printStackTrace(); ​ ​ ​ ​f = null; ​ ​ ​ ​ ​mCurrentPhotoPath = null; ​ ​ ​ ​} ​ ​ ​ ​ ​ ​ ​startActivityForResult(ambilGambarIntent, AMBIL_FOTO_BESAR); break; case R.id.cameraSButton:
  • 10. break; case R.id.cameraSButton: ​ ​ambilGambarIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ​ ​ ​ ​startActivityForResult(ambilGambarIntent, AMBIL_FOTO_KECIL); break; case R.id.videoButton: ​ ​ambilVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); ​ ​ ​startActivityForResult(ambilVideoIntent, AMBIL_VIDEO); ​ ​ ​break; ​ ​case R.id.galleryButton: tampilkanGalleryIntent = new Intent(Intent.ACTION_PICK); ​ ​ ​tampilkanGalleryIntent.setType("image/*"); ​ ​ ​startActivityForResult(tampilkanGalleryIntent, TAMPILKAN_GALLERY); ​ ​ ​break; ​ ​case R.id.xButton: ​ ​ ​System.exit(0); ​ ​ ​break; ​ ​default: ​ ​} ​} ​ ​protected void onActivityResult(int requestCode, int resultCode, Intent data) { ​ ​switch (requestCode) { ​ ​case AMBIL_FOTO_BESAR: ​ ​ ​if (resultCode == RESULT_OK) { ​ ​ ​ ​handleBigCameraPhoto(); ​ ​ ​} ​ ​ ​break; ​ ​case AMBIL_FOTO_KECIL: ​ ​ ​if (resultCode == RESULT_OK) { ​ ​ ​ ​handleSmallCameraPhoto(data); ​ ​ ​} ​ ​ ​break; ​ ​case AMBIL_VIDEO: ​ ​ ​if (resultCode == RESULT_OK) { ​ ​ ​ ​handleCameraVideo(data); ​ ​ ​} ​ ​ ​break; ​ ​case TAMPILKAN_GALLERY: ​ ​ ​if (resultCode == ​ ​
  • 11. ​ ​case TAMPILKAN_GALLERY: ​ ​ ​if (resultCode == RESULT_OK) { ​ ​ ​ ​Uri photoUri = data.getData(); ​ ​ ​ ​imageView.setImageURI(photoUri); ​ ​ ​ ​ ​ ​ ​ ​videoView.setVisibility(View.INVISIBLE); ​ ​ ​ ​imageView.setVisibility(View.VISIBLE); ​ ​ ​} ​ ​ ​break; ​ ​} ​} ​ ​private void handleBigCameraPhoto() { ​ ​ ​ ​if (mCurrentPhotoPath != null) { ​ ​ ​setPic(); ​ ​ ​galleryAddPic(); ​ ​ ​mCurrentPhotoPath = null; ​ ​} ​} ​private void handleSmallCameraPhoto(Intent intent) { ​ ​Bundle extras = intent.getExtras(); ​ ​bitmap = (Bitmap) extras.get("data"); ​ ​ ​ ​imageView.setImageBitmap(bitmap); ​ ​ ​ ​String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); ​ ​String imageFileName = JPEG_FILE_PREFIX + timeStamp; ​ ​ private void handleSmallCameraPhoto(Intent intent) { ​ ​Bundle extras = intent.getExtras(); ​ ​bitmap = (Bitmap) extras.get("data"); ​ ​ ​ ​imageView.setImageBitmap(bitmap); ​ ​ ​ ​String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); ​ ​String imageFileName = JPEG_FILE_PREFIX + timeStamp; ​ ​if (MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, imageFileName, null) != null){ ​ ​ ​ ​Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show(); ​ ​ ​} else { ​ ​ ​ ​Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); ​ ​ ​}
  • 12. ​ ​ ​ ​Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); ​ ​ ​} ​ ​ ​ ​ ​videoUri = null; ​ ​ ​videoView.setVisibility(View.INVISIBLE); ​ ​imageView.setVisibility(View.VISIBLE); ​ ​} ​ ​private void handleCameraVideo(Intent intent) { ​ ​ ​videoUri = intent.getData(); ​ ​ ​videoView.setVideoURI(videoUri); ​ ​ ​ ​ ​bitmap = null; ​ ​imageView.setVisibility(View.INVISIBLE); ​ ​videoView.setVisibility(View.VISIBLE); ​ ​} ​ ​private void setPic() { ​ ​int targetW = imageView.getWidth(); ​ ​int targetH = imageView.getHeight(); ​ ​ ​BitmapFactory.Options bmOptions = new BitmapFactory.Options(); ​ ​bmOptions.inJustDecodeBounds = true; ​ ​ ​BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); ​ ​ ​int photoW = bmOptions.outWidth; ​ ​ ​int photoH = bmOptions.outHeight; ​ ​ ​ ​ ​int scaleFactor = 1; ​ ​if ((targetW > 0) || (targetH > 0)) { ​ ​ ​scaleFactor = Math.min(photoW/targetW, photoH/targetH); ​ ​ ​ ​} ​ ​bmOptions.inJustDecodeBounds = false; ​ ​bmOptions.inSampleSize = scaleFactor; ​ ​ ​bmOptions.inPurgeable = true; ​ ​ Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); ​ ​ ​ ​imageView.setImageBitmap(bitmap); ​ ​videoUri = null; imageView.setVisibility(View.VISIBLE); ​ ​videoView.setVisibility(View.INVISIBLE); ​ ​ ​} ​ ​private void galleryAddPic() { ​ ​ ​ Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE"); ​ ​ ​File f = new
  • 13. ​ ​ ​ Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE"); ​ ​ ​File f = new File(mCurrentPhotoPath); ​ ​ Uri contentUri = Uri.fromFile(f); ​ ​ mediaScanIntent.setData(contentUri); ​ ​ this.sendBroadcast(mediaScanIntent); ​ ​} ​ ​ ​ Tampilan Aplikasi Tampilan aplikasi yang telah dibuat pada AVD (Android Virtual Device) adalah sebagai berikut: Gambar 7. 9 Tampilan materi kamera di AVD C. SOAL LATIHAN/TUGAS Pada project diatas tambahkan menu untuk mengUpload hasil Gambar ke media social! D. DAFTAR PUSTAKA Allen, Grant. 2012. Beginning Android 4. New York : Apress. Safaat, H. Nazruddin. 2015. ANDROID Pemrograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis Android. Bandung: Informatika 163