1.播放預設的提示音
public static void playDefaultNotification(Context context) { Uri defaultNotificationURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone soundOfDefaultNotification = RingtoneManager.getRingtone(context, defaultNotificationURI); soundOfDefaultNotification.play(); }
其中RingtoneManager.TYPE_NOTIFICATION為提示音的設定。
若想播放預設的鬧鐘只要改為RingtoneManager.TYPE_ALARM
播放預設的鬧鐘只要改為RingtoneManager.TYPE_RINGTONE
2.播放裝置內其他的提示音
2-1.首先取得裝置內的提示音清單
public static Map<String, String> getSoundTitleAndUri(Context context, int type) { RingtoneManager manager = new RingtoneManager(context); manager.setType(type); Cursor cursor = manager.getCursor(); Map<String, String> titleAndUri = new HashMap<>(); while (cursor.moveToNext()) { String title = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX); String id = cursor.getString(RingtoneManager.ID_COLUMN_INDEX); String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX); titleAndUri.put(title, uri+"/"+id); } return titleAndUri; }
使用的方式如下(取得提示音的清單)
getSoundTitleAndUri(context, RingtoneManager.TYPE_NOTIFICATION);
回傳的Map其key值即為提示音的名稱,value值為提示音的Uri。
若想取得的是鬧鐘清單,只要改為RingtoneManager.TYPE_ALARM即可
若想取得的是來電鈴聲清單,只要改為RingtoneManager.TYPE_RINGTONE即可
若把該Map印出來如下。
key:Alloy value:content://media/internal/audio/media/89 key:Arc value:content://media/internal/audio/media/90 key:Bezel value:content://media/internal/audio/media/91 ...
Alloy為提示音的名稱,其URI為 content://media/internal/audio/media/89
最後要播放指定的提示音如下
public static void playSound(Context context, String uri) { Uri soundUri = Uri.parse(uri); Ringtone sound = RingtoneManager.getRingtone(context, soundUri); sound.play(); }
使用的方法為
playSound(context,"content://media/internal/audio/media/89");//play Alloy