android 自定义铃声 代码,Android通过代码设置铃声
对安卓手机进行铃声操作,设置默认铃声、删除当前默认铃声、更改铃声
以默认振铃为例子,通过代码设置手机铃声
设置默认振铃
// 将铃声的路径插入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通过代码设置铃声相关推荐
- android 自定义本地验证码demo,Android 自定义验证码输入框的实例代码(支持粘贴连续性)...
需求 1.能自定义输入框个数和样式 2.支持长按粘贴或剪切板内容自动填充(粘贴连续性) 其中第2点是最为重要的,正是其他人没有这点,逼得自己弄一个 示例 别人的示例: 粘贴居然不支持连续性,只能粘贴第 ...
- Android5.0自定义闹钟,Android自定义View 实现闹钟唤起播放闹钟铃声功能
先上图看一下闹钟唤期页面的效果 实现的功能: 1:转动的图片根据天气情况更换 2:转动时间可以设置,转动结束,闹铃声音就结束 3:光圈颜色渐变效果 直接上代码啦: package com.yuekon ...
- android 自定义dialog样式,Android 自定义dialog类
首先定制style样式 styles.xml 加入自定义样式 @null true true true @color/transparent @color/transparent true 0.6 在 ...
- android 自定义输入法布局,Android自定义输入法使用方法
Android自定义输入法使用方法 时间:2017-04-21 来源:Android开发学习网 对于Android用户而言,一般都会使用第三方的输入法.可是在输入密码时(尤其是支付相关的密码) ...
- android自定义大转盘,android 代码绘制转盘抽奖的实现
android 代码绘制转盘抽奖的实现 先上图 第一个是 整体的布局 xmlns:tools="http://schemas.android.com/tools" android: ...
- android自定义键盘开源,Android自定义软键盘的设计与实现代码
偶然间发现了Android.inputmethodservice.Keyboard类,即android可以自定义键盘类,做了一个简单例子供大家参考. 效果如下: 先看界面布局文件 android:la ...
- android 自定义圆形pop,Android布局自定义Shap圆形ImageView可以单独设置背景与图片...
一.图片预览: 一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView,关健设置两个参数 Android: ...
- android自定义弧度按钮,Android 自定义View 绘制六边形设置按钮
今天逛酷安的时候,发现酷安的设置按钮(截图的右上角),是一个六边形 + 中心圆的图标,所以又是一个自定义View练习对象了.画圆很简单,知道半径即可,而重点就在画出六边形. 酷安截图.png 最终效果 ...
- android 自定义相册选择,Android通过手机拍照或从本地相册选取图片设置头像
像微信.QQ.微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式: 1.让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像. 2.让用户启动手机的相机拍照,拍完照片后裁剪 ...
- android自定义透明圆形,Android给TextView设置透明背景、圆角边框
第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建text_view_border.xml <?xml version="1.0& ...
最新文章
- 以前初学php用的分页函数
- 软件工程第八次作业-2017282110249
- 某公司有一台打印、复印一体机,需要将购买成本分年均摊到隔年的费用中。请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用。要求对输入异常进行适当的处理。
- 【MVC】ASP.NET MVC5 使用MiniProfiler 监控MVC性能
- 归并排序,快速排序,冒泡排序,选择排序,基数排序,桶排序,堆排序(c++实现)
- Js获取当前页面URL各种参数
- windows配置gvim高效率编程(cc++)带自动补全代码
- uuid java 重复_Java中使用UUID工具类生成唯一标志防止重复
- RHEL4下建立sendmail服务器
- 表单html遇到的问题及处理,HTML表单常见问题
- 华为Mate系列平板手机安装谷歌框架
- 【js与jquery】产品详情页面常用的js特效
- 如何防止网站静态文件被挂马
- 维度诅咒_维度的诅咒减去行话的诅咒
- 自学Java day17 jvav网络编程 从jvav到架构师
- 找工作千万不要找外包?BAT互联网大厂外包亲身经历
- opencv中Mat与vector互转
- 35、jaeger链路追踪
- 软件测试工程师笔试题带答案(二)
- 广和通LTE-A模组FG101FM101系列全线量产,提升Cat 6新体验