Android Multimedia
Kerangka multimedia Android mencakup dukungan untuk memainkan berbagai jenis media umum, sehingga Anda dapat dengan mudah mengintegrasikan audio, video dan gambar ke dalam aplikasi Anda. Anda dapat memutar audio atau video dari file media yang tersimpan dalam sumber daya aplikasi Anda (sumber daya mentah), dari file mandiri di filesystem, atau dari aliran data yang sampai pada koneksi jaringan, semuanya menggunakan API MediaPlayer.
Dasar Android Multimedia
- Media player
Kelas ini adalah API utama untuk memutar suara dan video.
- Audio Manager
Kelas ini mengelola sumber audio dan output audio pada perangkat.
Deklarasi manifestasi
- Izin Internet
Jika Anda menggunakan MediaPlayer untuk streaming konten berbasis jaringan, aplikasi Anda harus meminta akses jaringan.
<using-permission android: name = “android.permission.INTERNET” />
- Izin Kunci Bangun
Jika aplikasi pemutar Anda perlu agar layar tidak redup atau prosesor tidak tertidur, atau gunakan metode MediaPlayer.setScreenOnWhilePlaying() atau MediaPlayer.setWakeMode() , Anda harus meminta izin ini.
<using-permission android: name = “android.permission.WAKE_LOCK” />
Menggunakan MediaPlayer
Salah satu komponen terpenting dari kerangka media adalah kelas MediaPlayer . Objek kelas ini dapat mengambil, memecahkan kode, dan memutar audio dan video dengan pengaturan minimal. Ini mendukung beberapa sumber media yang berbeda seperti:
- Sumber daya lokal
- URI internal, seperti yang mungkin Anda dapatkan dari Resolver Konten
- URL eksternal (streaming)
Berikut adalah contoh bagaimana memainkan audio yang tersedia sebagai sumber baku lokal (disimpan di direktori res/raw/ aplikasi Anda):
MediaPlayer mediaPlayer = MediaPlayer.create (konteks, R.raw.sound_file_1);
mediaPlayer.start (); // tidak perlu panggil persiapan (); buat () apakah itu untukmu
Pemanggilan melalui Local
Uri myUri = ….; // menginisialisasi Uri disini
MediaPlayer mediaPlayer = MediaPlayer baru ();
mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource (getApplicationContext (), myUri);
mediaPlayer.prepare ();
mediaPlayer.start ();
Melalui streaming HTTP
String url = “http: // ……..”; // URL Anda di sini
MediaPlayer mediaPlayer = MediaPlayer baru ();
mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource (url);
mediaPlayer.prepare (); // mungkin butuh waktu lama! (untuk buffering, dll)
mediaPlayer.start ();
Membuat Aplikasi Multimedia
Langkah pertama, buatlah project aplikasi android dengan cara klik menu File -> New -> Android Application Project.
Langkah Kedua. pada “multivedia.xml”, buat tampilan tiga tombol yaitu tombol Video, Kamera dan Rekaman. Untuk source code tampilan “multimedia.xml” adalah sebagai berikut.
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.MultimediaActivity” >
<Button
android:id=”@+id/button1″
android:layout_width=”200dp”
android:layout_height=”100dp”
android:layout_alignParentTop=”true”
android:layout_centerHorizontal=”true”
android:layout_marginTop=”20dp”
android:text=”VIDEO”
android:textSize=”30dp”
android:textStyle=”bold” />
<Button
android:id=”@+id/button2″
android:layout_width=”200dp”
android:layout_height=”100dp”
android:layout_below=”@+id/button1″
android:layout_centerHorizontal=”true”
android:layout_marginTop=”30dp”
android:text=”KAMERA”
android:textSize=”30dp”
android:textStyle=”bold” />
<Button
android:id=”@+id/button3″
android:layout_width=”200dp”
android:layout_height=”100dp”
android:layout_below=”@+id/button2″
android:layout_centerHorizontal=”true”
android:layout_marginTop=”30dp”
android:text=”REKAMAN”
android:textSize=”30dp”
android:textStyle=”bold” />
</RelativeLayout>
Dan untuk aksi dari tombol-tombol yang telah dibuat dapat dimasukkan pada “MultimediaActivity.java”. Pada file “MultimediaActivity.java” ketiga tombol tersebut diberi fungsi “Intent” yaitu fungi untuk memanggil halaman/file lain.
package com.multi.media;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MultimediaActivity extends Activity {
private Button btnvideo, btnkamera, btnrekam;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.multimedia);
btnvideo = (Button)findViewById(R.id.button1);
btnvideo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), DaftarVideoActivity.class);
startActivity(intent);
}
});
btnkamera = (Button)findViewById(R.id.button2);
btnkamera.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), KameraActivity.class);
startActivity(intent);
}
});
btnrekam = (Button)findViewById(R.id.button3);
btnrekam.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), RekamActivity.class);
startActivity(intent);
}
});
}
}
Langkah ketiga
buatlah emulator dengan memberikan ruang pada Internal Storage dan SD Card supaya file video atau music dapat dimasukkan ke emulator untuk uji coba.
Langkah keempat
buat file “daftarvideo.xml” untuk tampilan yang memuat daftar video dan music yang diambil dari sdcard emulator (atau memory internal pada smartphone android). Source code file “daftarvideo.xml” adalah sebagai berikut
<?xml version=”1.0″ encoding=”utf-8″?>
<TextView xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:padding=”15dp”
android:textSize=”25dp” >
</TextView
Langkah kelima
Lalu buat file “DaftarVideoActivity.java” untuk membuat fungsi menampilkan file video dan music dari sdcard emulator. Source code file “DaftarVideoActivity.java” adalah sebagai berikut.
package com.multi.media;
import java.io.File;
import java.io.FilenameFilter;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class DaftarVideoActivity extends ListActivity {
ArrayAdapter<String>adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new ArrayAdapter<String>(this, R.layout.daftarvideo, getVideo());
setListAdapter(adapter);
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) {
String tempat = parent.getItemAtPosition(position).toString();
Intent intent = new Intent();
intent.setClass(getApplicationContext(), VideoActivity.class);
intent.putExtra(“video”, tempat);
startActivity(intent);
}
});
}
static String [] nmFile=null;
public static String [] getVideo(){
File video = Environment.getExternalStorageDirectory();
File [] daftarVideo = video.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name) {
return (((name.endsWith(“.mp3”))||(name.endsWith(“.MP3”))||(name.endsWith(“.mp4”))||
(name.endsWith(“.MP4”))||(name.endsWith(“.avi”))||(name.endsWith(“.AVI”))||
(name.endsWith(“.3gp”))||(name.endsWith(“.mkv”))||(name.endsWith(“.MKV”))||
(name.endsWith(“.wmv”))||(name.endsWith(“.WMV”))||(name.endsWith(“.flv”))||
(name.endsWith(“.FLV”))));
}
});
nmFile = new String[daftarVideo.length];
for(int i=0; i<daftarVideo.length; i++){
nmFile[i] = daftarVideo[i].getAbsolutePath();
}
return nmFile;
}
}
Langkah Keenam
membuat file “video.xml” untuk tampilan pemutaran video atau music yang telah dipilh. Pada file ini hanya memiliki atribut VideoView. Source code tampilan pada file ”video.xml” adalah sebagai berikut
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”80dp”
android:paddingRight=”80dp”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.MainActivity” >
<VideoView
android:id=”@+id/videoView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</RelativeLayout>
Lalu membuat file “VideoActivity.java” untuk memutar file video atau music yang dipilih pada file “video.xml”. Untuk source code file “VideoActivity.java” adalah sebagai berikut.
package com.multi.media;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
Bundle bundle = getIntent().getExtras();
String tempat = bundle.getString(“video”);
VideoView videoView = (VideoView)findViewById(R.id.videoView1);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
Uri uri = Uri.parse(tempat);
videoView.setVideoURI(uri);
videoView.setMediaController(mediaController);
videoView.start();
videoView.requestFocus();
}
}
Langkah Ketujuh
membuat file “kamera.xml” untuk tampilan saat menggunakan kamera. File ini hanya memiliki atribut “textView”, “Button” untuk mengaktifkan kamera smartphone dan “ImageView” untuk menampilkan hasil foto. Sourse code tampilan “kamera.xml” sebagai berikut.
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical” >
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello_world” />
<Button
android:id=”@+id/camera”
android:text=”@string/foto”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />
<ImageView
android:id=”@+id/gambar”
android:contentDescription=”@string/image”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />
</LinearLayout>
Kemudian membuat file “KameraActivity.java” untuk membuat fungsi mengaktifkan kamera smartphone dan menyimpan hasil foto. Berikut adalah source code file “KameraActivity.java”.
package com.multi.media;
import java.io.File;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class KameraActivity extends Activity {
private static int TAKE_PICTURE = 1;
private Uri tmpgambar;
private ImageView gambarTampil;
private Button tmbkamera;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kamera);
tmbkamera = (Button)findViewById(R.id.camera);
gambarTampil = (ImageView)findViewById(R.id.gambar);
tmbkamera.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
ambilFoto(v);
}
});
}
private void ambilFoto(View v){
Intent intent = new Intent(“android.media.action.IMAGE_CAPTURE”);
File foto = new File(Environment.getExternalStorageDirectory()+ “/hasilFoto.jpg”);
tmpgambar = Uri.fromFile(foto);
intent.putExtra(MediaStore.EXTRA_OUTPUT, tmpgambar);
startActivityForResult(intent, TAKE_PICTURE);
if(foto!=null){
gambarTampil.setImageURI(tmpgambar);
}
}
}
Langkah kedelapan
membuat file “rekam.xml” untuk tampilan dari perekam suara. Pada tampilan perekam suara terdapat text view untuk keterangan dan empat tombol yaitu “Mulai Rekam”, “Stop Rekam”, “Putar” dan “Stop”. Untuk souce code tampilan perekam suara adalah sebagai berikut
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.RecordActivity” >
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentTop=”true”
android:layout_centerHorizontal=”true”
android:text=”…”
android:textAppearance=”?android:attr/textAppearanceLarge” />
<Button
android:id=”@+id/button1″
android:layout_width=”200dp”
android:layout_height=”80dp”
android:layout_below=”@+id/textView1″
android:layout_centerHorizontal=”true”
android:text=”Mulai Rekam”
android:textSize=”30dp” />
<Button
android:id=”@+id/button2″
android:layout_width=”200dp”
android:layout_height=”80dp”
android:layout_alignLeft=”@+id/button1″
android:layout_alignRight=”@+id/button1″
android:layout_below=”@+id/button1″
android:layout_marginTop=”10dp”
android:text=”Stop Rekam”
android:textSize=”30dp”/>
<Button
android:id=”@+id/button3″
android:layout_width=”200dp”
android:layout_height=”80dp”
android:layout_alignLeft=”@+id/button2″
android:layout_alignRight=”@+id/button2″
android:layout_below=”@+id/button2″
android:layout_marginTop=”10dp”
android:text=”Putar”
android:textSize=”30dp”/>
<Button
android:id=”@+id/button4″
android:layout_width=”200dp”
android:layout_height=”80dp”
android:layout_alignLeft=”@+id/button3″
android:layout_alignRight=”@+id/button3″
android:layout_below=”@+id/button3″
android:layout_marginTop=”10dp”
android:text=”Stop”
android:textSize=”30dp”/>
</RelativeLayout>
Lalu membuat file “RekamanActivity.java” untuk memberikan aksi dari keempat tombol tersebut. Berkut adalah source code dari “rekamanActivity.java”.
package com.multi.media;
import java.io.File;
import java.io.IOException;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class RekamActivity extends Activity {
private Button rekam, stopr, putar, stopp;
private TextView txt;
private MediaPlayer mp;
private MediaRecorder mr;
private String tempat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rekam);
tempat = Environment.getExternalStorageDirectory() + “/hasilRekam.3gpp”;
txt = (TextView)findViewById(R.id.textView1);
rekam = (Button)findViewById(R.id.button1);
rekam.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startRekam();
txt.setText(“Sedang Merekam…”);
rekam.setEnabled(false);
stopr.setEnabled(true);
putar.setEnabled(false);
stopp.setEnabled(false);
}
});
stopr = (Button)findViewById(R.id.button2);
stopr.setEnabled(false);
stopr.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
stopRekam();
txt.setText(“”);
rekam.setEnabled(true);
stopr.setEnabled(false);
putar.setEnabled(true);
stopp.setEnabled(false);
}
});
putar = (Button)findViewById(R.id.button3);
putar.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startHasil();
txt.setText(“Sedang Memutar…”);
rekam.setEnabled(false);
stopr.setEnabled(false);
putar.setEnabled(false);
stopp.setEnabled(true);
}
});
stopp = (Button)findViewById(R.id.button4);
stopp.setEnabled(false);
stopp.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
stopHasil();
txt.setText(“”);
rekam.setEnabled(true);
stopr.setEnabled(false);
putar.setEnabled(true);
stopp.setEnabled(false);
}
});
}
public void startRekam(){
if(mr != null){
mr.release();
}
File fout = new File(tempat);
if(fout != null){
fout.delete();
}
mr = new MediaRecorder();
mr.setAudioSource(MediaRecorder.AudioSource.MIC);
mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mr.setOutputFile(tempat);
try {
mr.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mr.start();
}
public void stopRekam(){
if(mr != null){
mr.stop();
mr.release();
mr = null;
}
}
public void startHasil(){
mp = new MediaPlayer();
try {
mp.setDataSource(tempat);
mp.prepare();
mp.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public void stopHasil(){
if(mp != null){
if(mp.isPlaying())
mp.stop();
mp.release();
mp = null;
}
}
}
Langkah Kesembilan
rubah “AndroidManifest.xml” sebagai berikut
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.multi.media”
android:versionCode=”1″
android:versionName=”1.0″ >
<uses-sdk
android:minSdkVersion=”8″
android:targetSdkVersion=”19″ />
<uses-permission android:name=”android.permission.RECORD_AUDIO”/>
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
<application
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<activity
android:name=”com.multi.media.MultimediaActivity”
android:screenOrientation=”portrait”
android:label=”@string/app_name” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity
android:name=”com.multi.media.DaftarVideoActivity”
android:screenOrientation=”portrait”
android:label=”@string/app_name” >
</activity>
<activity
android:name=”com.multi.media.VideoActivity”
android:screenOrientation=”landscape”
android:label=”@string/app_name” >
</activity>
<activity
android:name=”com.multi.media.KameraActivity”
android:screenOrientation=”portrait”
android:label=”@string/app_name” >
</activity>
<activity
android:name=”com.multi.media.RekamActivity”
android:screenOrientation=”portrait”
android:label=”@string/app_name” >
</activity>
</application>
</manifest>
Referensi
http://www.hermantolle.com/class/2014/11/tutorial-android-membuat-aplikasi-multimedia/
https://developer.android.com/guide/topics/media/mediaplayer.html