路徑為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();
沒有留言:
張貼留言