我的Android進階之旅------>Android系統設定預設來電鈴聲、鬧鐘鈴聲、通知鈴聲,android進階
首先瞭解Android系統本身提供的預設鈴聲檔案,這些檔案都放在 /system/media/audio 目錄下。
/system/media/audio/ringtones
|
系統來電鈴聲
|
/system/media/audio/notifications
|
系統通知鈴聲
|
/system/media/audio/alarms
|
系統鬧鐘鈴聲 |
自己下載的鈴聲,可以放在SD卡的music目錄。主要包括:一般的鈴聲(如來電鈴聲)、鬧鐘鈴聲和通知鈴聲。這三種鈴聲分別放在如下的目錄中:
/sdcard/music/ringtones
|
使用者來電鈴聲
|
/sdcard/music/notifications
|
使用者通知鈴聲
|
/sdcard/music/alarms
|
使用者鬧鐘鈴聲 |
下面通過一個執行個體來學習如何設定系統的預設來電鈴聲、鬧鐘鈴聲、通知鈴聲
首先編寫介面檔案 layout_ring.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/buttonRingtone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="設定來電鈴聲" /> <Button android:id="@+id/buttonAlarm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="設定鬧鐘鈴聲" /> <Button android:id="@+id/buttonNotification" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="設定通知鈴聲" /></LinearLayout>
RingstonActivity.java檔案
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.view.View.OnClickListener;import android.widget.Button;/** * 設定系統的預設來電鈴聲、鬧鐘鈴聲、通知鈴聲 * <br/>部落格地址: <a href="blog.csdn.net/ouyang_peng">歐陽鵬CSDN部落格</a> * @author 歐陽鵬 * */public class RingstonActivity extends Activity {/* 3個按鈕 */private Button mButtonRingtone;private Button mButtonAlarm;private Button mButtonNotification;/* 自訂的類型 */public static final int CODE_RINGSTONE = 0;public static final int CODE_ALARM = 1;public static final int CODE_NOTIFICATION = 2;/** * 來電鈴聲檔案夾 * /system/media/audio/ringtones 系統來電鈴聲 * /sdcard/music/ringtones 使用者來電鈴聲 */private String strRingtoneFolder = "/system/media/audio/ringtones"; //private String strRingtoneFolder = "/sdcard/music/ringtones"; /** * 鬧鐘鈴聲檔案夾 * /system/media/audio/alarms 系統鬧鐘鈴聲 * /sdcard/music/alarms 使用者鬧鐘鈴聲 */private String strAlarmFolder = "/system/media/audio/alarms"; //private String strAlarmFolder = "/sdcard/music/alarms "; /** * 鬧鐘鈴聲檔案夾 * /system/media/audio/notifications 系統通知鈴聲 * /sdcard/music/notifications 使用者通知鈴聲 */private String strNotificationFolder = "/system/media/audio/notifications"; //private String strNotificationFolder = "/sdcard/music/notifications"; /** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_ring);mButtonRingtone = (Button) findViewById(R.id.buttonRingtone);mButtonAlarm = (Button) findViewById(R.id.buttonAlarm);mButtonNotification = (Button) findViewById(R.id.buttonNotification);mButtonRingtone.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (hasFolder(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, CODE_RINGSTONE);}}});mButtonAlarm.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (hasFolder(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, CODE_ALARM);}}});mButtonNotification.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (hasFolder(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, CODE_NOTIFICATION);}}});}/** * 當設定鈴聲之後的回呼函數 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode != RESULT_OK) {return;}// 得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);if (pickedUri != null) {switch (requestCode) {case CODE_RINGSTONE:// 將我們選擇的鈴聲設定成為預設來電鈴聲RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_RINGTONE, pickedUri);break;case CODE_ALARM:// 將我們選擇的鈴聲設定成為預設鬧鐘鈴聲RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_ALARM, pickedUri);break;case CODE_NOTIFICATION:// 將我們選擇的鈴聲設定成為預設通知鈴聲RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_NOTIFICATION, pickedUri);break;}}}/** * 檢測是否存在指定的檔案夾,如果不存在則建立 * * @param strFolder * 檔案夾路徑 */private boolean hasFolder(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;}}
下面是運行:
==================================================================================================
作者:歐陽鵬 歡迎轉載,與人分享是進步的源泉!
轉載請保留原文地址:http://blog.csdn.net/ouyang_peng
==================================================================================================
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。