Sun. Aug 7th, 2022

Tutorial ini membahas membuat aplikasi berupa video. ada 2 cara untuk mengembed video ke dalam aplikasi: 1. dengan memasukkan videonya ke dalam source code dan 2. memanggil/ call to url. jika mengembed video ke dalam source berarti bisa dijalankan secara offline tanpa harus terhubung dengan internet berbeda jika menggunakan call url maka aplikasi harus terkoneksi dengan internet.

tutorial ini membahas menjalankan video dengan cara mengembeded video ke dalam source code.

sediakan video dengan format .Mp4 atau sejenisnya kemudian buat folder RAW dengan cara

klik res > klik kanan pilih New > Klik Android Resourse Directory > kemudian pada Resource Type pilih raw > Klik OK. setelah itu copy kan file video ke dalam folder raw.

buatlah desain layout XML yaitu VideoView

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <VideoView
        android:id="@+id/putarVideo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

kemudian buatlah code di MainActivity.kt yang menghubungkan dengan file video tersebut

putarVideo.setVideoURI(Uri.parse("android.resource://" + packageName + "/" + R.raw.film))

full source code:
package a.riki.cobahello
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.MediaController
import kotlinx.android.synthetic.main.video.*

class MainActivity : AppCompatActivity() {

    private var position = 0
    private var mediaControls: MediaController? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.video)

        if (mediaControls == null) {
            mediaControls = MediaController(this@MainActivity)
        }

        try {
            putarVideo.setMediaController(mediaControls)
            putarVideo.setVideoURI(Uri.parse("android.resource://" + packageName + "/" + R.raw.film))
        } catch (e: Exception) {
            Log.e("Error", e.message)
        }

        putarVideo.requestFocus()
        putarVideo.setOnPreparedListener {
            putarVideo.seekTo(position)
            if (position == 0) {
                putarVideo.start()
            } else {
                putarVideo.pause()
            }
        }
    }

    override fun onSaveInstanceState(outState: Bundle?) {
        super.onSaveInstanceState(outState)
        if (outState != null) {
            outState.putInt("Position", putarVideo.currentPosition)
        }
        putarVideo.pause()
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
        super.onRestoreInstanceState(savedInstanceState)
        if (savedInstanceState != null) {
            position = savedInstanceState.getInt("Position")
        }
        putarVideo.seekTo(position)

    }
}