在android系統中,不同鈴聲存放的鈴聲路徑:
/system/media/audio/ringtones 來電鈴聲 /system/media/audio/notifications 簡訊通知鈴聲 /system/media/audio/alarms 鬧鐘鈴聲
鈴聲的設定:
import java.io.File;import android.app.Activity;import android.content.Intent;import android.media.RingtoneManager;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Activity01 extends Activity{/* 3個按鈕 */private Button mButtonRingtone;private Button mButtonAlarm;private Button mButtonNotification;/* 自訂的類型 */public static final int ButtonRingtone= 0;public static final int ButtonAlarm= 1;public static final int ButtonNotification= 2;/* 鈴聲檔案夾 */private String strRingtoneFolder = "/sdcard/music/ringtones";private String strAlarmFolder = "/sdcard/music/alarms";private String strNotificationFolder = "/sdcard/music/notifications";/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mButtonRingtone = (Button) findViewById(R.id.ButtonRingtone);mButtonAlarm = (Button) findViewById(R.id.ButtonAlarm);mButtonNotification = (Button) findViewById(R.id.ButtonNotification);/* 設定來電鈴聲 */mButtonRingtone.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0){if (bFolder(strRingtoneFolder)){//開啟系統鈴聲設定Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);//類型為來電RINGTONEintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);//設定顯示的titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設定來電鈴聲");//當設定完成之後返回到當前的ActivitystartActivityForResult(intent, ButtonRingtone);}}});/* 設定鬧鐘鈴聲 */mButtonAlarm.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0){if (bFolder(strAlarmFolder)){//開啟系統鈴聲設定Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);//設定鈴聲類型和titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設定鬧鈴鈴聲");//當設定完成之後返回到當前的ActivitystartActivityForResult(intent, ButtonAlarm);}}});/* 設定通知鈴聲 */mButtonNotification.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0){if (bFolder(strNotificationFolder)){//開啟系統鈴聲設定Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);//設定鈴聲類型和titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設定通知鈴聲");//當設定完成之後返回到當前的ActivitystartActivityForResult(intent, ButtonNotification);}}});}/* 當設定鈴聲之後的回呼函數 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data){// TODO Auto-generated method stubif (resultCode != RESULT_OK){return;}switch (requestCode){case ButtonRingtone:try{//得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);//將我們選擇的鈴聲設定成為預設if (pickedUri != null){RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_RINGTONE, pickedUri);}}catch (Exception e){}break;case ButtonAlarm:try{//得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);//將我們選擇的鈴聲設定成為預設if (pickedUri != null){RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_ALARM, pickedUri);}}catch (Exception e){}break;case ButtonNotification:try{//得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);//將我們選擇的鈴聲設定成為預設if (pickedUri != null){RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);}}catch (Exception e){}break;}super.onActivityResult(requestCode, resultCode, data);}//檢測是否存在指定的檔案夾 //如果不存在則建立private boolean bFolder(String strFolder){boolean btmp = false;File f = new File(strFolder);if (!f.exists()){if (f.mkdirs()){btmp = true;}else{btmp = false;}}else{btmp = true;}return btmp;}}
鈴聲的播放:
player = new MediaPlayer(); try{ player.setDataSource(context, pickUri); }catch(Exception e){ e.printStackTrace(); } final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); if(audioManager.getStreamVolume(AudioManager.STREAM_ALARM)!=0){ player.setAudioStreamType(AudioManager.STREAM_ALARM); player.setLooping(true); try {player.prepare();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} player.start(); }