Tutorial Android Camera

Jeffry Dane
temancatat
Published in
2 min readMar 21, 2018

Pada aplikasi android yang tim kami buat terdapat fitur tambah barang yang implementasinya sudah saya buat seperti ini:

Di sini hal yang ingin saya bahas bukan cara membuat layout seperti itu, namun tentang camera button. Rencana awal aplikasi ini terdapat fitur memasukan gambar dari kamera agar pengguna dapat mengenali barang melalui visualisasi gambar.

Tutorial yang saya gunakan untuk implementasi fitur kamera ini berasal dari DevAndroid yang secara garis besar aplikasi kamera sudah dapat bekerja jika kita hanya mengikuti tutorial pada bagian Save the full-size photo, namun ada beberapa hal yang perlu diperhatikan:

Pada method createImageFile() tedapat keterangan menggunakan getExternalFilesDir() atau getExternalStoragePublicDirectory(). Kedua hal tersebut berbeda pada aksesibilitas gambar yang diambil.

Pada res/xml/file_paths.xml perhatikan pada

<external-path name=”my_images” path=”Android/data/com.example.package.name/files/Pictures” />

Jika menggunakan getExternalFilesDir() ikuti contoh dan memastikan nilai dari path sama, tetapi menganti “com.example.package.name” dengan nama paket aplikasi Anda. Gambar akan tersimpan pada folder khusus APK anda dan hanya aplikasi anda yang dapat mengakses gambar tersebut

Jika menggunakan getExternalStoragePublicDirectory() cukup “/Pictures”. Sesuai namanya “Public” maka gambar akan tersimpan pada folder “Pictures” yang seharusnya default ada pada setiap HP Android untuk menyimpan gambar. Jika menggunakan ini jugalah gambar baru dapat disimpan ke gallery.

Bug

Ketika saya jalankan program dengan mengikuti setiap langkah tutorial, saya mendapat bug yaitu ketika saya menekan camera button lalu tidak jadi melakukan foto dengan melakukan back atau terminate aplikasi, maka akan terdapat file gambar dengan ukuran 0B dan kalau di buka akan diberitahu gambar rusak.

Menurut saya, hal ini dikarenakan method createImageFile() dipanggil yang kemudian terbuat suatu file temporary baru dijalankan intent kameranya yang file tersebut akan diisi foto kamera tersebut. Maka dari itu, file tersebut menjadi 0B ketika saya tidak melakukan foto apapun. File 0B ini bisa menumpuk banyak jika saya menekan camera button dan back berulang kali.

Ide

Melihat bagian Take a photo with the camera app saya muncul ide. Jadi, ketika camera button ditekan saya langsung menjalankan intent kamera dan belum melakukan pembentukan file apapun.

Dilanjutkan pada bagian Get the thumbnail terdapat method onActivityResult(), yaitu method yang dipanggil ketika sebuah intent selesai dijalankan dan terdapat kembalian dalam hal ini selesai melakukan foto dan mendapat result hasil jepretan.

Terakhir dengan bantuan stackOverflow untuk menyimpan file ke storage, munculah sebuah solusi.

Solusi

Pada method onActivityResult() pada bagian Get the thumbnail saya menambah implementasi menyimpan file ke storage karena jika method tersebut terpanggil maka pasti terdapat sebuah file yang dalam hal ini foto dan jika tidak maka tidak akan ada sehingga tidak ada akan file 0B.

Untuk gambaran lebih jelas bisa dilihat implementasi saya di gitlab

--

--