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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/buttonRingtone"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="设置来电铃声"

/>

android:id="@+id/buttonAlarm"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="设置闹钟铃声"

/>

android:id="@+id/buttonNotification"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="设置通知铃声"

/>

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;

}

}

以下是执行效果图:

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

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

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

java设置铃声_我的Android进阶之旅------gt;Android系统设置默认来电铃声、闹钟铃声、通知铃声...相关推荐

  1. 【我的Android进阶之旅】Android混淆踩坑之各模块各自单独配置混淆,但是将minifyEnabled设置为true导致的编译错误

    一.背景描述 在之前的两篇文章中 [我的Android进阶之旅]Android 混淆文件资源分类整理 [我的Android进阶之旅]Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的 ...

  2. 【我的Android进阶之旅】Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的混淆文件

    在我2017年的文章[我的Android进阶之旅]Android 混淆文件资源分类整理中,我已经提及过. 之前将所有的混淆都配置在一个 proguard-rules.pro 这个Android Stu ...

  3. 【我的Android进阶之旅】Android使用JNI的时候报native crash: A/libc: Fatal signal 4 (SIGILL), code 2 (ILL_ILLOPN)

    一.问题描述 最近在JNI开发中,[我的Android进阶之旅]Android 如何防止 so库文件被未知应用盗用? 抛了一个异常,然后运行的时候报如下所示的错误: 2021-01-08 14:25: ...

  4. 我的Android进阶之旅------gt;Android字符串资源中的单引號问题error: Apostrophe not preceded by 的解决的方法...

    刚刚在string字符串资源文件里,写了一个单引號.报错了,错误代码例如以下 error: Apostrophe not preceded by \ (in OuyangPeng's blog ) 资 ...

  5. 我的Android进阶之旅------gt;Android使用AlarmManager全局定时器实现定时更换壁纸

    该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...

  6. 我的Android进阶之旅------gt;Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能...

    前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌词文件的标签类型 1标识标签 2时间标签 二解析LRC歌词 1读取出歌词文件 2解析得到的歌词内容 1表示每行歌词内 ...

  7. 我的Android进阶之旅------gt;Android实现音乐示波器、均衡器、重低音和音场功能...

    本实例来自于<疯狂Android讲义>.要实现详细的功能,须要了解下面API: MediaPlayer  媒体播放器 Visualizer 频谱 Equalizer 均衡器 BassBoo ...

  8. 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....

    今天在调用MediaRecorder.stop(),报错了,java.lang.RuntimeException: stop failed. E/AndroidRuntime(7698): Cause ...

  9. 【我的Android进阶之旅】Android 源代码中的Java代码中//$NON-NLS-1$ 注释是什么意思?...

    1.背景 最近在负责公司基础业务和移动基础设施的开发工作,正在负责Lint代码静态检查工作.因此编写了自定义的Lint规则,在编写自定义的Lint规则前,当然是需要去把Google的关于Lint检测的 ...

  10. 【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法

    一.错误描述 今天使用第三方的so库时候,调用JNI方法时出现了错误.报错如下所示: 11-01 16:39:20.979 4669-4669/com.netease.xtc.cloudmusic E ...

最新文章

  1. 华为发布 AR 地图技术,但最佳的运行设备不是手机
  2. 扫盲行动之九:Vi编辑器的基本使用方法!
  3. 鸟哥的Linux私房菜(基础篇)-第二章、 Linux 如何学习(二.4. 鸟哥的建议(重点在solution的学习))
  4. 指针的动态初始化malloc与销毁free
  5. [渝粤教育] 广东-国家-开放大学 21秋期末考试中国近现代史纲要(A)10881k1 (2)
  6. MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(下)分类/灰度共生矩阵/纹理分类学习
  7. centos7的telnet不通已经关闭防火墙,打开阿里云端口仍然ping不通的解决办法
  8. mysql 存储表情_MySQL支持存储emoji表情
  9. 2020,人工智能与产业结合的新纪年,你需要哪些能力可以脱颖而出?
  10. 用python开发的运维管理系统下载_GitHub - jiegangwu/OPMS_v3: 基于 Python 3.5 + Django 2.0 开发的运维管理系统...
  11. Sql Server系列:数据表操作
  12. 详解Dual Thrust量化策略及其发明者Michael Chalek的前世今生
  13. 十六进制颜色与RGB颜色对照表
  14. 打印机共享无法访问该计算机,共享打印机拒绝访问怎么办详细解决方案
  15. vue+vue-ueditor-wrap+秀米
  16. excel如何快速自动填充空白单元格上一行的内容
  17. TCP/IP五层模型介绍
  18. BC26 TCP透传
  19. java类和对象在内存的表现形式
  20. [PTA]习题4-2 求幂级数展开的部分和

热门文章

  1. Vue项目中Router路由中meta字段的妙用-案例
  2. exercise006_字符串的全排列
  3. 程序员学习资料整理(1)
  4. 联想z400linux调节屏幕亮度,联想Z400电脑显示屏亮度无法调节怎么办
  5. OpenHarmony命令行工具hdc_std使用总结
  6. 微信挪车功能成功上线,祝贺一下自己
  7. scipy csc csr到底是什么东西
  8. 大一高数下册笔记整理_大学高等数学知识点整理(全)
  9. 红米K40重启的解决方案
  10. 区块链火了 市场热度最么高