我的Android進階之旅------>Android系統設定預設來電鈴聲、鬧鐘鈴聲、通知鈴聲,android進階

來源:互聯網
上載者:User

我的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

==================================================================================================

  

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.