Pelajaran ini menjelaskan cara merekam video menggunakan aplikasi kamera yang ada.
Aplikasi Anda harus menyelesaikan sebuah tugas, dan mengintegrasikan video hanyalah sebagian kecil dari tugas itu. Anda ingin merekam video tanpa repot, bukan menemukan kembali teknologi perekam video. Untungnya, sebagian besar perangkat Android sudah disertai aplikasi kamera yang merekam video. Dalam pelajaran ini, Anda akan mempelajari bagaimana aplikasi tersebut merekam video untuk Anda.
Lihat resource terkait berikut:
Meminta fitur kamera
Untuk menyatakan bahwa aplikasi Anda bergantung pada ketersediaan kamera, tempatkan tag <uses-feature>
dalam file manifes:
<manifest ... > <uses-feature android:name="android.hardware.camera" android:required="true" /> ... </manifest>
Jika aplikasi Anda menggunakan kamera, tetapi tidak mengharuskan ketersediaan kamera agar dapat berfungsi, tetapkan android:required
ke false
. Dengan demikian, Google Play akan memungkinkan perangkat tanpa kamera untuk mendownload aplikasi Anda. Selanjutnya, Anda bertanggung jawab untuk memeriksa ketersediaan kamera saat aplikasi diluncurkan dengan memanggil hasSystemFeature(PackageManager.FEATURE_CAMERA)
.
Jika kamera tidak tersedia, Anda harus menonaktifkan fitur kamera.
Merekam video dengan aplikasi kamera
Cara Android mendelegasikan tindakan ke aplikasi lain adalah dengan memanggil Intent
yang menjelaskan tindakan yang ingin Anda lakukan. Proses ini terdiri dari tiga bagian: Intent
itu sendiri, panggilan untuk memulai Activity
eksternal, dan kode untuk menangani video saat fokus beralih kembali ke aktivitas Anda.
Berikut adalah fungsi yang memanggil intent untuk merekam video.
Kotlin
const val REQUEST_VIDEO_CAPTURE = 1 private fun dispatchTakeVideoIntent() { Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent -> takeVideoIntent.resolveActivity(packageManager)?.also { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE) } } }
Java
static final int REQUEST_VIDEO_CAPTURE = 1; private void dispatchTakeVideoIntent() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE); } }
Perhatikan bahwa metode startActivityForResult()
dilindungi oleh kondisi yang memanggil resolveActivity()
, yang menampilkan komponen aktivitas pertama yang dapat menangani intent. Pemeriksaan ini merupakan langkah penting karena jika Anda memanggil startActivityForResult()
menggunakan intent yang tidak dapat ditangani aplikasi mana pun, aplikasi Anda akan mengalami error. Jadi, selama hasilnya bukan null, intent tersebut aman digunakan.
Melihat video
Aplikasi Kamera Android menampilkan video dalam Intent
yang dikirim ke onActivityResult()
sebagai Uri
yang menunjuk ke lokasi video di penyimpanan. Kode berikut mengambil video ini dan menampilkannya di VideoView
.
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent) { if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) { val videoUri: Uri = intent.data videoView.setVideoURI(videoUri) } }
Java
@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) { Uri videoUri = intent.getData(); videoView.setVideoURI(videoUri); } }