博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Android进阶之旅------>Android系统设置默认来电铃声、闹钟铃声、通知铃声
阅读量:5919 次
发布时间:2019-06-19

本文共 5252 字,大约阅读时间需要 17 分钟。

首先了解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

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;/** * 设置系统的默认来电铃声、闹钟铃声、通知铃声 * 
博客地址: 欧阳鹏CSDN博客 * @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; }}

下面是运行效果图:

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

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址

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

 

转载于:https://www.cnblogs.com/ouyangpeng/p/8538015.html

你可能感兴趣的文章
【转载】MySQL 大小写区分问题
查看>>
五类数据存储模型行、列、键值对、文档、图
查看>>
MyISAM 和 InnoDB 讲解
查看>>
oracel备份
查看>>
微信自动回复中如何添加超链接
查看>>
Left/right join 和inner join 区别
查看>>
spark读取myslq优化--单机版
查看>>
正则替换
查看>>
ubuntu 14.04 lts 安装gogs v0.6.1
查看>>
运维老司机的问题排查经验总结帮你顺利排险
查看>>
报表工具Style Report报表设计器的功能及特点
查看>>
Highcharts 操作series 的data里的数据
查看>>
七个步骤解决面试中的动态规划问题
查看>>
HTML页面和JSP页面禁用缓存
查看>>
Java 并发编程:核心理论
查看>>
Castle.ActiveRecord 多对多关系 引发的错误处理
查看>>
垂直居中的几种实现方法
查看>>
oracle_10g提示Exception in sending Request null的解决方案
查看>>
Android中px, dp, sp之间的转换代码
查看>>
版本管理
查看>>