路徑為res/raw/xxx.wav(或xxx.mp3)。
2.在主程式裡要先開啟一個audio的服務,主要是用來管理音量,鈴聲模式及聲道等...
其次則需new SoundPool,主要是用來載入,撥放及停止音效等功能。
我們直接來看codes
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
public class MainActivity extends Activity {
private Button bPlay;
private Button bPause;
private SoundPool spool;
private int sourceid;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bPlay = (Button) findViewById(R.id.btnPlay);
bPause = (Button) findViewById(R.id.btnPause);
// 聲音庫的最大音頻流數目為10,聲音品質為5
spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 5);
sourceid = spool.load(this, R.raw.harm, 1);
bPlay.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
playSud(0);
}
});
bPause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
spool.pause(sourceid);
}
});
}
public void playSud(int repeatTime) {
AudioManager am = (AudioManager) getApplicationContext()
.getSystemService(Context.AUDIO_SERVICE);
// 獲取最大音量
float audMaxVolumn = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
// 左右聲道值範圍為 0.0 - 1.0
float volRatio = audCurrentVolumn / audMaxVolumn;
// 獲取目前音量
float audCurrentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);
// 播放音頻,左右音量,設置優先級,重撥次數,速率(速率最低0.5,最高為2,1代表正常速度)
spool.play(sourceid, volRatio, volRatio, 1, repeatTime, 1);
}
}
3.Layout的部分很簡單,加人撥放和暫停二個按鈕
res/layout/activity_main.xml
<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"
tools:context=".MainActivity" >
<Button
android:id="@+id/btnPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="99dp"
android:text="撥放(Play)" />
<Button
android:id="@+id/btnPause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="暫停(Pause)" />
</RelativeLayout>
另外一個簡單的方法,也可以達到同樣的結果
這個方法直接讀取預設通知(default notification)的鈴聲來撥放
設定的路徑是為(設定>音效>預設通知)
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone ringTone = RingtoneManager.getRingtone(getApplicationContext(), notification);
ringTone.play();




