3D遊戲開發祥解-播放資源的音效範例
Sample3_1-Layout(Xml)
-GUI 由1個LinearLayout+4個Button組成
<?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" > <Button android:text="播放音效1" android:id="@+id/Button01" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> <Button android:text="播放音效2" android:id="@+id/Button02" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> <Button android:text="暫停音效1" android:id="@+id/Button1Pause" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> <Button android:text="暫停音效2" android:id="@+id/Button2Pause" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> </LinearLayout>
|
Sample3_1-Code
-透過SoundPool載入兩首資原音樂檔案:initSoundPool()
-
package wyf.zcl;
import java.util.HashMap;
import android.app.Activity; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast;
public class MyActivity extends Activity { /** Called when the activity is first created. */ SoundPool sp; //宣告一個SoundPool變數 HashMap<Integer,Integer> spMap; //宣告一個map變數 Button b1; //聲音播放按鈕 Button b1Pause; //聲音暫停按鈕 Button b2; //聲音播放按鈕 Button b2Pause; //聲音暫停按鈕 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initSoundPool(); //初始化SoundPool b1=(Button)findViewById(R.id.Button01); //聲音播放按鈕產生實體 b2=(Button)findViewById(R.id.Button02); //聲音播放按鈕產生實體 b1Pause=(Button)findViewById(R.id.Button1Pause); b2Pause=(Button)findViewById(R.id.Button2Pause); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { playSound(1,1); //播放第一首音效,迴圈一遍 Toast.makeText(MyActivity.this, "播放音效1", Toast.LENGTH_SHORT).show(); }}); b1Pause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sp.pause(spMap.get(1)); Toast.makeText(MyActivity.this, "暫停音效1", Toast.LENGTH_SHORT).show(); }}); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { playSound(2,1); //播放第二首音效,迴圈一遍 Toast.makeText(MyActivity.this, "播放音效2", Toast.LENGTH_SHORT).show(); }}); b2Pause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sp.pause(spMap.get(2)); Toast.makeText(MyActivity.this, "暫停音效2", Toast.LENGTH_SHORT).show(); }}); } public void initSoundPool(){ //初始化SoundPool sp=new SoundPool( 5, //maxStreams 該參數為設置同時能夠播放多少音效 AudioManager.STREAM_MUSIC, //streamType 該參數設置音訊類型 0 //該參數設置音訊檔的品質,目前還沒有效果,設置為0(預設值) ); spMap=new HashMap<Integer,Integer>(); spMap.put(1, sp.load(this, R.raw.attack02, 1)); spMap.put(2, sp.load(this, R.raw.attack14, 1)); } public void playSound(int sound,int number){ AudioManager am=(AudioManager)this.getSystemService(android.content.Context.AUDIO_SERVICE);//產生AudioManager實體 float audioMaxVolumn=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //返回當前AudioManager物件的最大音量值 float audioCurrentVolumn=am.getStreamVolume(AudioManager.STREAM_MUSIC); //返回當前AudioManager物件的音量值 float volumnRatio=audioCurrentVolumn/audioMaxVolumn; sp.play( spMap.get(sound), //播放的音樂ID volumnRatio, //左聲道音量 volumnRatio, //右聲道音量 1, //優先順序,0為最低 number, //迴圈次數,0無不迴圈,-1無永遠迴圈 1 //重播速度 ,該值在0.5~2.0之間,1為正常速度 ); } }
|
沒有留言:
張貼留言