Merekam video

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);
        }
    }