对安卓手机进行铃声操作,设置默认铃声、删除当前默认铃声、更改铃声

以默认振铃为例子,通过代码设置手机铃声

设置默认振铃

// 将铃声的路径插入contentResolver,以数据库的形式插入

/**

* 设置默认振铃

* @param musicInfo 歌曲信息

* @param ringtoneFile 振铃文件,包含绝对路径

*/

private void setRingtoneImpl(MusicInfo musicInfo, File ringtoneFile) {

ContentValues content = new ContentValues();

content.put(MediaStore.MediaColumns.DATA, ringtoneFile.getAbsolutePath());

content.put(MediaStore.MediaColumns.TITLE, musicInfo.getSongName());

//content.put(MediaStore.MediaColumns.SIZE, ringtoneFile);

content.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");

// content.put(MediaStore.Audio.Media.ARTIST, "Madonna");

//content.put(MediaStore.Audio.Media.DURATION, 230);

content.put(MediaStore.Audio.Media.IS_RINGTONE, true);

content.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);

content.put(MediaStore.Audio.Media.IS_ALARM, true);

content.put(MediaStore.Audio.Media.IS_MUSIC, false);

// 获取文件是external还是internal的uri路径

Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile.getAbsolutePath());

// 铃声通过contentvaues插入到数据库

final Uri newUri = getContentResolver().insert(uri, content);

currentRingtoneUri = newUri;

RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),

RingtoneManager.TYPE_RINGTONE, newUri);

}

删除默认振铃

删除铃声操作,参考:

private void deleteRingtone(Uri deleteUri, File deleteFile) {

ContentValues cv = new ContentValues();

cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);

cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);

cv.put(MediaStore.Audio.Media.IS_ALARM, false);

cv.put(MediaStore.Audio.Media.IS_MUSIC, true);

// 更新当前铃声的数据,放弃作为铃声的状态

getContentResolver().delete(deleteUri, MediaStore.MediaColumns.DATA + "=?",

new String[] { deleteFile.getAbsolutePath() });

}

判断当前uri是否默认铃声的uri,因为当我们删除一个铃声之后,再次通过获取默认铃声的方式获取到的uri是不正确的可能,可以通过下面这种获取uri的文件路径的方式,如果路径为空,表示当前uri不是默认振铃的

判断当前uri是否默认炫铃

// 根据uri获取文件路径

private String getPathFromUri(Uri contentUri) {

String[] projection = { MediaStore.Audio.Media.DATA };

String urlpath;

CursorLoader loader = new CursorLoader(this, contentUri, projection, null, null, null);

Cursor cursor = loader.loadInBackground();

try {

int column_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);

cursor.moveToFirst();

urlpath = cursor.getString(column_index);

//如果是正常的查询到数据库。然后返回结构

return urlpath;

} catch (Exception e) {

urlpath = "";

e.printStackTrace();

} finally {

if (cursor != null) {

cursor.close();

}

}

return urlpath;

}

如果文件路径为空,那么表示当前不是默认铃声,此时,此时使用vivo在设置里面仍然会跳出到默认的铃声,但是比如在铃声多多里面获取的结果仍然是显示当前没有设置铃声。

android 自定义铃声 代码,Android通过代码设置铃声相关推荐

  1. android 自定义本地验证码demo,Android 自定义验证码输入框的实例代码(支持粘贴连续性)...

    需求 1.能自定义输入框个数和样式 2.支持长按粘贴或剪切板内容自动填充(粘贴连续性) 其中第2点是最为重要的,正是其他人没有这点,逼得自己弄一个 示例 别人的示例: 粘贴居然不支持连续性,只能粘贴第 ...

  2. Android5.0自定义闹钟,Android自定义View 实现闹钟唤起播放闹钟铃声功能

    先上图看一下闹钟唤期页面的效果 实现的功能: 1:转动的图片根据天气情况更换 2:转动时间可以设置,转动结束,闹铃声音就结束 3:光圈颜色渐变效果 直接上代码啦: package com.yuekon ...

  3. android 自定义dialog样式,Android 自定义dialog类

    首先定制style样式 styles.xml 加入自定义样式 @null true true true @color/transparent @color/transparent true 0.6 在 ...

  4. android 自定义输入法布局,Android自定义输入法使用方法

    Android自定义输入法使用方法 时间:2017-04-21     来源:Android开发学习网 对于Android用户而言,一般都会使用第三方的输入法.可是在输入密码时(尤其是支付相关的密码) ...

  5. android自定义大转盘,android 代码绘制转盘抽奖的实现

    android 代码绘制转盘抽奖的实现 先上图 第一个是 整体的布局 xmlns:tools="http://schemas.android.com/tools" android: ...

  6. android自定义键盘开源,Android自定义软键盘的设计与实现代码

    偶然间发现了Android.inputmethodservice.Keyboard类,即android可以自定义键盘类,做了一个简单例子供大家参考. 效果如下: 先看界面布局文件 android:la ...

  7. android 自定义圆形pop,Android布局自定义Shap圆形ImageView可以单独设置背景与图片...

    一.图片预览: 一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView,关健设置两个参数 Android: ...

  8. android自定义弧度按钮,Android 自定义View 绘制六边形设置按钮

    今天逛酷安的时候,发现酷安的设置按钮(截图的右上角),是一个六边形 + 中心圆的图标,所以又是一个自定义View练习对象了.画圆很简单,知道半径即可,而重点就在画出六边形. 酷安截图.png 最终效果 ...

  9. android 自定义相册选择,Android通过手机拍照或从本地相册选取图片设置头像

    像微信.QQ.微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式: 1.让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像. 2.让用户启动手机的相机拍照,拍完照片后裁剪 ...

  10. android自定义透明圆形,Android给TextView设置透明背景、圆角边框

    第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建text_view_border.xml <?xml version="1.0& ...

最新文章

  1. 以前初学php用的分页函数
  2. 软件工程第八次作业-2017282110249
  3. 某公司有一台打印、复印一体机,需要将购买成本分年均摊到隔年的费用中。请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用。要求对输入异常进行适当的处理。
  4. 【MVC】ASP.NET MVC5 使用MiniProfiler 监控MVC性能
  5. 归并排序,快速排序,冒泡排序,选择排序,基数排序,桶排序,堆排序(c++实现)
  6. Js获取当前页面URL各种参数
  7. windows配置gvim高效率编程(cc++)带自动补全代码
  8. uuid java 重复_Java中使用UUID工具类生成唯一标志防止重复
  9. RHEL4下建立sendmail服务器
  10. 表单html遇到的问题及处理,HTML表单常见问题
  11. 华为Mate系列平板手机安装谷歌框架
  12. 【js与jquery】产品详情页面常用的js特效
  13. 如何防止网站静态文件被挂马
  14. 维度诅咒_维度的诅咒减去行话的诅咒
  15. 自学Java day17 jvav网络编程 从jvav到架构师
  16. 找工作千万不要找外包?BAT互联网大厂外包亲身经历
  17. opencv中Mat与vector互转
  18. 35、jaeger链路追踪
  19. 软件测试工程师笔试题带答案(二)
  20. 广和通LTE-A模组FG101FM101系列全线量产,提升Cat 6新体验

热门文章

  1. stm32cubemx读写SDRAM-W9825G6KH
  2. hp mfp m281fdw 彩色激光打印机不通电
  3. JavaWeb学习之BS/CS架构及tomcat容器项目部署
  4. CSS里面的长度单位px/pt/em/in/pc/mm/cm解释
  5. 微生物组学与植物病害微生物防治
  6. 产品经理的竞品分析报告入门
  7. 卷积神经网络及其在图像处理中的应用
  8. 苹果mac可引导系统镜像下载
  9. 2022广东深圳国际半导体分立器件产品与应用技术展览会
  10. python上市公司_Python批量下载上交所上市公司报告