PMO Pertemuan 5 Aplikasi Multimedia

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>

DOWNLOAD PPT

Referensi

https://daruamanda.wordpress.com/2012/05/05/pemrograman-multimedia-aplikasi-konten-multimedia-berbasis-android/

http://www.hermantolle.com/class/2014/11/tutorial-android-membuat-aplikasi-multimedia/

https://developer.android.com/guide/topics/media/mediaplayer.html