|
Metode dan Algoritma | Memainkan File Sound Pada Android dengan SoundPool Lebih Responsif, Misal untuk Game . Anda bisa melakukan konsultasi tentang Memainkan File Sound Pada Android dengan SoundPool Lebih Responsif, Misal untuk Game melalui form di samping kanan !!!
Ada tiga cara untuk memainkan File Sound (Suara), atau File Musik. Yang pertama memakai MediaPlayer, yang kedua memakai SoundPool, dan yang ketiga Penulis lupa memakai apa :) Media Player lebih ditujukan untuk memainkan file yang berdurasi panjang misalnya file MP3. Tetapi MediaPlayer tidak responsif, artinya untuk loading lebih lama. Sedangkan SoundPool adalah teknik memainkan file suara yang sering digunakan untuk Game dan Background Music yang lebih Responsif. Tetapi tentu saja kekurangannya SoundPool tidak untuk file Music (Sound) yang berukuran besar atau berada di lokasi eksternal misalnya Web atau SDCard. Tetapi harus berada di dalam aplikasi (Raw atau Asset folder) dan bertipe OGG atau MIDI.
Cara memainkan file Suara dengan MediaPlayer sepertinya pernah penulis bahas di artikel lain, kalau belum ya lain kali lah :) Untuk artikel memainkan file MP3 di SDCard atau Web juga rencananya ingin penulis buat di kesempatan lain. Kali ini kita gunakan teknik SoundPool untuk memainkan file suara berekstensi OGG.
Buat project Android baru, tempatkan file sound *.ogg di direktori project res/raw/sound1.ogg. Kemudian kita tuliskan kode program di MainActivity sebagai berikut :
package com.amijaya.androidsoundpool;
import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
// http://cariprogram.blogspot.com
// nuramijaya@gmail.com
public class MainActivity extends Activity implements OnTouchListener {
private SoundPool soundPool;
private int soundID;
boolean loaded = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view = findViewById(R.id.textView1);
view.setOnTouchListener(this);
// Set the hardware buttons to control the music
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// Load the sound
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
soundID = soundPool.load(this, R.raw.sound1, 1);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Getting the user sound settings
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
// Is the sound loaded already?
if (loaded) {
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
return false;
}
}
Untuk tampilannya kita pakai default saja pada activity_main.xml seperti ini :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text="Click on the screen to start playing"
android:id="@+id/textView1" android:layout_width="fill_parent"
android:layout_height="fill_parent"></TextView>
</LinearLayout>
File AndroidManifest.xml juga tidak perlu dirubah :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amijaya.androidsoundpool"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.amijaya.androidsoundpool.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Hasilnya, klik pada tampilan aplikasi, akan keluar suara :
Project selengkapnya download disini. Caranya untuk mendownload seperti ini.
Semoga berguna.
ActionScript AS3 ASP.NET AJAX C / C++ C# Clipper COBOL ColdFusion DataFlex Delphi Emacs Lisp Fortran FoxPro Java J2ME JavaScript JScript Lingo MATLAB Perl PHP PostScript Python SQL VBScript Visual Basic 6.0 Visual Basic .NET Flash MySQL Oracle Android
Related Post :
Judul: Memainkan File Sound Pada Android dengan SoundPool Lebih Responsif, Misal untuk Game
Rating: 100% based on 99998 ratings. 5 user reviews.
Ditulis Oleh hank2
Rating: 100% based on 99998 ratings. 5 user reviews.
Ditulis Oleh hank2
Anda sedang membaca artikel tentang
Memainkan File Sound Pada Android dengan SoundPool Lebih Responsif, Misal untuk Game, Semoga artikel tentang Memainkan File Sound Pada Android dengan SoundPool Lebih Responsif, Misal untuk Game ini sangat bermanfaat bagi teman-teman semua, jangan lupa untuk mengunjungi lagi melalui link
Memainkan File Sound Pada Android dengan SoundPool Lebih Responsif, Misal untuk Game.
{ 0 komentar... Views All / Send Comment! }
Posting Komentar