zoukankan      html  css  js  c++  java
  • 我的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. */
    	@Override
    	public 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() {
    			@Override
    			public void onClick(View v) {
    				if (hasFolder(strRingtoneFolder)) {
    					// 打开系统铃声设置
    					Intent intent = new Intent(
    							RingtoneManager.ACTION_RINGTONE_PICKER);
    					// 类型为来电RINGTONE
    					intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
    							RingtoneManager.TYPE_RINGTONE);
    					// 设置显示的title
    					intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,
    							"欧阳鹏设置来电铃声");
    					// 当设置完毕之后返回到当前的Activity
    					startActivityForResult(intent, CODE_RINGSTONE);
    				}
    			}
    		});
    		mButtonAlarm.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				if (hasFolder(strAlarmFolder)) {
    					// 打开系统铃声设置
    					Intent intent = new Intent(
    							RingtoneManager.ACTION_RINGTONE_PICKER);
    					// 设置铃声类型和title
    					intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
    							RingtoneManager.TYPE_ALARM);
    					intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,
    							"欧阳鹏设置闹钟铃声");
    					// 当设置完毕之后返回到当前的Activity
    					startActivityForResult(intent, CODE_ALARM);
    				}
    			}
    		});
    		mButtonNotification.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				if (hasFolder(strNotificationFolder)) {
    					// 打开系统铃声设置
    					Intent intent = new Intent(
    							RingtoneManager.ACTION_RINGTONE_PICKER);
    					// 设置铃声类型和title
    					intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
    							RingtoneManager.TYPE_NOTIFICATION);
    					intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,
    							"欧阳鹏设置通知铃声");
    					// 当设置完毕之后返回到当前的Activity
    					startActivityForResult(intent, CODE_NOTIFICATION);
    				}
    			}
    		});
    	}
    	/**
    	 * 当设置铃声之后的回调函数
    	 */
    	@Override
    	protected 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

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

     


  • 相关阅读:
    棋盘完美覆盖数(小规模原理实现)
    Codeforces 115A Party (并查集思维)
    datetime日期和时间
    range与enumerate的区别
    爬取爱套图网上的图片
    python爬取365好书中小说
    列表和元组的方法
    字符串中的方法
    从电源问题出发,带你揭秘新体系结构范式 COA
    KubeCon 2020 演讲集锦|《阿里巴巴云原生技术与实践 13 讲》开放下载
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6729051.html
Copyright © 2011-2022 走看看