Membuat apps Media Player & Video Player pada Android Studio

naskahkode.com Pemutar musik merupakan salah satu aplikasi yang paling banyak digunakan oleh  pengguna android disamping aplikasi media sosial, messenger, dan aplikasi lainnya.  Android menyediakan banyak cara untuk mengontrol pemutaran file audio / video dan  stream. Salah satu cara ini adalah melalui kelas yang disebut MediaPlayer.

Ringkasan MediaPlayer

Framework multimedia Android menyertakan dukungan untuk memutar berbagai jenis  media umum agar Anda dapat mengintegrasikan audio, video, dan gambar dengan mudah  ke dalam aplikasi Anda. Anda dapat memutar audio atau video dari file media yang  disimpan dalam resource aplikasi (resource mentah), dari file mandiri dalam sistem file,  atau dari streaming data yang masuk melalui koneksi jaringan, semuanya menggunakan  MediaPlayer API.

Modul ini menunjukkan cara menulis aplikasi pemutar media yang berinteraksi dengan  pengguna dan sistem untuk mendapatkan performa yang baik dan pengalaman pengguna  yang menyenangkan.

Catatan: Anda hanya dapat memutar data audio ke perangkat output standar. Saat ini,  perangkat tersebut mencakup speaker perangkat seluler atau headset Bluetooth. Anda  tidak dapat memutar file suara dalam audio percakapan saat panggilan sedang  berlangsung.

Dasar-dasar

Class berikut digunakan untuk memutar suara dan video dalam framework Android: ➢ MediaPlayer Class ini adalah API utama untuk memutar suara dan video. ➢ AudioManager Class ini mengelola sumber audio dan output audio di perangkat. Deklarasi manifes

Sebelum mulai mengembangkan aplikasi menggunakan MediaPlayer, pastikan manifes  Anda memiliki deklarasi yang sesuai untuk mengizinkan penggunaan fitur terkait.

1. Izin Internet - Jika Anda menggunakan MediaPlayer untuk melakukan streaming konten  berbasis jaringan, aplikasi Anda harus meminta akses jaringan. 

<uses-permission android:name="android.permission.INTERNET" />

2. Izin Penguncian Layar Saat Aktif - Jika aplikasi pemutar Anda mengharuskan layar tetap  menyala atau mengharuskan prosesor tetap bekerja, atau menggunakan metode  MediaPlayer.setScreenOnWhilePlaying() atau MediaPlayer.setWakeMode(), Anda  harus meminta izin ini.

<uses-permission android:name="android.permission.WAKE_LOCK" />

Menggunakan MediaPlayer

Salah satu komponen terpenting framework media adalah class MediaPlayer. Objek  class ini dapat mengambil, mendekode, serta memutar audio dan video dengan sedikit  penyiapan. Class ini mendukung beberapa sumber media yang berbeda, seperti:

  • Resource lokal
  • URI internal, seperti yang mungkin Anda peroleh dari Content Resolver • URL eksternal (streaming)

Untuk daftar format media yang didukung Android, lihat halaman Format Media yang  Didukung. Berikut contoh cara memutar audio yang tersedia sebagai resource mentah lokal  (disimpan dalam direktori res/raw/ aplikasi Anda):

Java

MediaPlayer mediaPlayer = MediaPlayer.create(context,  R.raw.sound_file_1);

mediaPlayer.start(); // no need to call prepare(); create()  does that for you

Dalam hal ini, resource "mentah" adalah file yang tidak akan diuraikan oleh sistem  dengan cara khusus apa pun. Namun, konten resource ini tidak boleh berupa audio  mentah. Konten ini harus berupa file media yang dienkode dan diformat dengan benar  dalam salah satu format yang didukung.

Berikut adalah cara melakukan pemutaran dari URI yang tersedia secara lokal dalam  sistem (yang diperoleh melalui Content Resolver, misalnya):

Java

Uri myUri = ....; // initialize Uri here

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  mediaPlayer.setDataSource(getApplicationContext(), myUri);  mediaPlayer.prepare();

mediaPlayer.start();

 

Melakukan pemutaran dari URL jarak jauh melalui streaming HTTP akan terlihat seperti  ini:

Java

String url = "http://........"; // your URL here  MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  mediaPlayer.setDataSource(url);

mediaPlayer.prepare(); // might take long! (for buffering, etc)  mediaPlayer.start();

 

Catatan: Jika Anda meneruskan URL untuk melakukan streaming file media online, file  tersebut harus dapat didownload secara progresif.

 

Praktikum1 Music Player

Membuat App MusicPlayer Menggunakan API MediaPlayer 

1. Pertama jalankan aplikasi IDE Android Studio, caranya :

  • Pilih Start → Android Studio
  • Pilih → Start a new Android Studio Project
  • Pilih → Empty Activity → Next 

Configure Your Project 


 

  • Name → MusicPlayer
  • Package Name → ubah menjadi nama blog kalian masing-masing, di sini saya  menggunakan url blog saya com.naskahkode lalu di ikuti nama project MusicPlayer 
  • Save Location → C:\Users\DELL\AndroidStudioProjects\NamaMhs\ MusicPlayer 
  • Language → Java Minimum API Level → API 14 → Klik Finish

2. Siapkan sebuah file suara/musik dengan forma file .mp3 dan file gambar  dengan jenis file .png

3. Buat sebuah direktori/folder engan nama raw di dalam folder ../res/raw dengan cara  klik kanan pada folder res lalu pilih New – Directory

4. Copy file music.mp3 tadi kedalam folder ../raw dengan cara klik kanan pada folder  raw lalu pilih Show in Explore seperti gambar di bawah ini. Setelah itu akan tampil windows explorer lalu Paste di dalam folder raw file music.mp3 tadi

5. Copy kan Kembali file headphone.png yang telah kita siapkan tadike dalam folder  ../res/drawable/ sehingga akan tampil struktur project seperti gambar di bawah ini

6. Selanjutnya ketikan kode program / script activity_main.xml seperti gambar di  bawah ini

maka akan terlihat desain tampilan seperti ini: 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="#ffffff"
android:orientation="vertical"
android:padding="20dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/songName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Judul Lagu"
android:textColor="#ffffff" />
<ImageView
android:id="@+id/mp3Icon"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#ffffff"
android:src="@drawable/wave"/>
<TextView
android:id="@+id/songDuration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Durasi Lagu"
android:textColor="#ffffff"/>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:gravity="center_horizontal">
<ImageButton
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="backforward"
android:src="@android:drawable/ic_media_rew"/>

<ImageButton
android:id="@+id/btn_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="pause"
android:src="@android:drawable/ic_media_pause"/>

<ImageButton
android:id="@+id/btn_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="play"
android:src="@android:drawable/ic_media_play"/>

<ImageButton
android:id="@+id/btn_forward"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="forward"
android:src="@android:drawable/ic_media_ff"/>
</LinearLayout>
</LinearLayout>

 

7. Setelah itu Buka dan ubah script MainActivity.java menjadi seperti gambar di bawah  ini

package com.naskahkode.musicplayer;
import android.content.res.AssetFileDescriptor;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
import android.os.Handler;
import java.util.concurrent.TimeUnit;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private TextView songName, songDuration;
private SeekBar seekBar;
private double timeStart = 0, finalTime = 0;
private int forwardTime = 20000, backwardTime = 20000;
private Handler durationHandler = new Handler();
private boolean swtch = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
songName = (TextView) findViewById(R.id.songName);
songDuration = (TextView) findViewById(R.id.songDuration);
mediaPlayer = MediaPlayer.create(this, R.raw.vaultboy);

MediaMetadataRetriever meta = new MediaMetadataRetriever();

final AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.vaultboy);
meta.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

String music_duration = meta.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
finalTime = Long.parseLong(music_duration);

Log.v("musicDuration", "Duration : " + music_duration);

seekBar = (SeekBar) findViewById(R.id.seekbar);
songName.setText("vaultboy.mp3");
seekBar.setMax((int) finalTime);
seekBar.setOnSeekBarChangeListener(new yourListener());
seekBar.setClickable(false);
}
private class yourListener implements SeekBar.OnSeekBarChangeListener {
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
if (swtch) {
mediaPlayer.seekTo(progress);
}
}

public void onStartTrackingTouch(SeekBar seekBar) {
swtch = true;
}

public void onStopTrackingTouch(SeekBar seekBar) {
swtch = false;
}
}


private Runnable updateSeekBarTime = new Runnable() {
public void run() {
timeStart = mediaPlayer.getCurrentPosition();
seekBar.setProgress((int) timeStart);
double timeRemaining = finalTime - timeStart;
songDuration.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining),
TimeUnit.MILLISECONDS.toSeconds((long) timeRemaining) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining))));
durationHandler.postDelayed(this, 1000);
}
};

public void play(View view) {
mediaPlayer.start();
timeStart = mediaPlayer.getCurrentPosition();
seekBar.setProgress((int) timeStart);
durationHandler.postDelayed(updateSeekBarTime, 1000);
}

public void pause(View view) {
mediaPlayer.pause();
}

public void forward(View view) {
timeStart = timeStart + forwardTime;
mediaPlayer.seekTo((int)timeStart);
}

public void backforward(View view) {
timeStart = timeStart - backwardTime;
mediaPlayer.seekTo((int) timeStart);
}
}

 

8. Lalu coba jalankan menggunakan emulator yang tersedia di Android Studio Anda,  maka akan tampil seperti gabar dibawah ini

 

Praktikum2 Video Player

Membuat App MusicPlayer Menggunakan API MediaPlayer 

1. Pertama jalankan aplikasi IDE Android Studio, caranya :

  • Pilih Start → Android Studio
  • Pilih → Start a new Android Studio Project
  • Pilih → Empty Activity → Next 

Configure Your Project 


 

  • Name → VideoPlayer
  • Package Name → ubah menjadi nama blog kalian masing-masing, di sini saya  menggunakan url blog saya com.naskahkode lalu di ikuti nama project VideoPlayer
  • Save Location → C:\Users\DELL\AndroidStudioProjects\NamaMhs\ VideoPlayer 
  • Language → Java Minimum API Level → API 14 → Klik Finish

 

2. Siapkan sebuah file Video dengan forma file, Buat sebuah direktori/folder engan nama  raw di dalam folder ../res/raw dengan cara klik kanan pada folder res lalu pilih New – Directory

3. Copy file video yang telah kita siapkan tadi kedalam folder ../raw dengan cara klik  kanan pada folder raw lalu pilih Show in Explore seperti gambar di bawah ini. Setelah  itu akan tampil windows explorer lalu Paste di dalam folder raw file orangutan.mp4 tadi

Sehingga akan tampil struktur project android seperti gambar di bawah ini 


 

4. Selanjutnya ketikan kode program / script activity_main.xml seperti gambar di  bawah ini

maka akan terlihat desain tampilan seperti ini:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="#FF6200EE"
android:orientation="vertical">

<TextView
android:id="@+id/songName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textStyle="bold"
android:layout_margin="20dp"
android:textColor="#ffffff"
android:text="Judul vidio"/>

<VideoView
android:id="@+id/vidioplay"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_gravity="center"/>

<TextView
android:id="@+id/songDuration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#ffffff"
android:text="Durasi vidio"/>

<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:gravity="center_horizontal"
android:orientation="horizontal">

<ImageButton
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="backforward"
android:src="@android:drawable/ic_media_rew"/>

<ImageButton
android:id="@+id/btn_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="pause"
android:src="@android:drawable/ic_media_pause"/>

<ImageButton
android:id="@+id/btn_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="play"
android:src="@android:drawable/ic_media_play"/>

<ImageButton
android:id="@+id/btn_forward"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:onClick="forward"
android:src="@android:drawable/ic_media_ff"/>
</LinearLayout>
</LinearLayout>

5. Setelah itu Buka dan ubah script MainActivity.java menjadi seperti gambar di bawah  ini

package com.naskahkode.videoplayer;


import android.content.res.AssetFileDescriptor;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
import android.os.Handler;
import android.widget.VideoView;

import java.util.concurrent.TimeUnit;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private TextView songName, songDuration;
private VideoView videoView;
private SeekBar seekBar;
private double timeStart= 0, finalTime = 0;
private int forwardTime = 20000, backwardTime = 20000;
private Handler durationHandler = new Handler();
private boolean swtch = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
songName = (TextView) findViewById(R.id.songName);
songDuration =(TextView) findViewById(R.id.songDuration);
mediaPlayer = MediaPlayer.create(this, R.raw.orangutan);
MediaMetadataRetriever meta = new MediaMetadataRetriever();
videoView = (VideoView) findViewById(R.id.vidioplay);
String path = "android.resource://" + getPackageName() + "/" + R.raw.orangutan;
videoView.setVideoURI(Uri.parse(path));

seekBar = (SeekBar) findViewById(R.id.seekBar);
songName.setText("orangutan.mp4");
seekBar.setOnSeekBarChangeListener(new yourListener() );
seekBar.setClickable(false);

}
private class yourListener implements SeekBar.OnSeekBarChangeListener {
public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser){
if (swtch){
videoView.seekTo(progress);
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
swtch = true;
}
public void onStopTrackingTouch(SeekBar seekBar) {
swtch = false;
}
}
private Runnable updateSeekBarTime = new Runnable() {
public void run(){
timeStart = videoView.getCurrentPosition();
seekBar.setProgress((int) timeStart);
double timeRemaining = finalTime - timeStart;
songDuration.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS. toMinutes((long) timeRemaining),
TimeUnit.MILLISECONDS. toSeconds((long) timeRemaining)-

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining))));
durationHandler.postDelayed(this, 1000);

}
};
public void play(View view){
videoView.start();
finalTime = videoView.getDuration();
seekBar.setMax((int) videoView.getDuration());
timeStart = videoView.getCurrentPosition();
seekBar.setProgress((int) timeStart);
durationHandler.postDelayed(updateSeekBarTime, 1000);
}
public void pause(View view){
videoView.pause();
}
public void forward(View view){
timeStart = timeStart + forwardTime;
videoView.seekTo((int) timeStart);
}
public void backforward(View view){
timeStart = timeStart - backwardTime;
videoView.seekTo((int) timeStart);
}


}

6. Lalu coba jalankan menggunakan emulator yang tersedia di Android Studio Anda,  maka akan tampil seperti gambar dibawah ini