• 存储铃声的model(闹钟为例)
public class AlarmInfo {private long id;private String title;private String data;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getData() {return data;}public void setData(String data) {this.data = data;}
}
  • 通过ContentResolver查询数据存储到model(结合更改系统闹钟铃声为例)
private List<AlarmInfo> alarmInfos = new ArrayList<>();private static final Uri URI = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
private static final String[] PROJECTION = {MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.TITLE
};
// is_notification | is_ringtone | is_music | is_alarm //根据需要可以获取闹铃、通知铃声等
private static final String SELECTION = "is_alarm != ?";
private static final String[] SELECTION_ARGS = { "0" };
private static final String SORT_ORDER = "_id asc";//点击alarmLayout先获取铃声数据,弹出单选对话框选择铃声后修改铃声
findViewById(R.id.alarmLayout).setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View view){scanMediaFile();showSetAlarmDialog();}
});private void scanMediaFile() {Cursor cursor = getContentResolver().query(URI, PROJECTION, SELECTION, SELECTION_ARGS, SORT_ORDER);if (cursor == null) return;while (cursor.moveToNext()) {AlarmInfo info = new AlarmInfo();long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media._ID));String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));info.setId(id);if (!TextUtils.isEmpty(data)) info.setData(data);if (!TextUtils.isEmpty(title)) info.setTitle(title);alarmInfos.add(info);}cursor.close();
}private String selectAlarm;
private MediaPlayer mMediaPlayer;private void showSetAlarmDialog() {if (alarmInfos.size() > 0) {final String[] alarms = new String[alarmInfos.size()];for (int i = 0; i < alarmInfos.size(); i++) {alarms[i] = alarmInfos.get(i).getTitle();}int checkItem = -1;new AlertDialog.Builder(this, R.style.CustomAlertDialogStyle).setTitle("请选择要设置的铃声").setSingleChoiceItems(alarms, checkItem, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {stopBroadcastAlarm();selectAlarm = alarmInfos.get(which).getData();startBroadcastAlarm(Uri.parse(selectAlarm));}}).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();stopBroadcastAlarm();RingtoneManager.setActualDefaultRingtoneUri(mContext, RingtoneManager.TYPE_ALARM,Uri.parse(selectAlarm));showToast("设置成功!");}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();stopBroadcastAlarm();}}).show();}
}private void startBroadcastAlarm(Uri uri) {try {mMediaPlayer = new MediaPlayer();mMediaPlayer.setDataSource(this, uri);mMediaPlayer.prepare();mMediaPlayer.start();} catch (Exception e) {e.printStackTrace();}
}private void stopBroadcastAlarm() {if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {mMediaPlayer.stop();}
}
  • 设置权限
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

Android 获取本地闹钟铃声相关推荐

  1. Android获取本地相册图片

    Android获取本地相册图片 第一步设置静态权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...

  2. Android获取本地图片缩略图终极解决方案

    QAQ学Android真的还是要在项目中获得锻炼,脱离实际一切都是耍流氓哼唧~! 花了一下午时间搞定了项目中要实现的:获取本地图片缩略图并显示在ListView上的,并且点击要能获得该图片文件路径功能 ...

  3. android获取本地图片并显示图片

    亲测可用,若有疑问请私信 import java.io.FileNotFoundException;import android.content.ContentResolver; import and ...

  4. Android 获取本地外网IP、内网IP、计算机名等信息

    一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...

  5. 【Android 获取本地视频+视频剪裁+视频录制】

    效果图如下: 获取本地视频 关键代码: /*** 重要说明:* <p>* 疑问一:* 该方法,查到的 视频路径 和 视频的缩略图 是一样的,并且格式都是 .mp4 .视频的缩略图应该是 . ...

  6. android6.0铃声设置,android获取系统设置的铃声并播放

    转自:http://vincenttung.blog.51cto.com/6249439/1176785 //RingtoneManager.TYPE_NOTIFICATION;   通知声音 //R ...

  7. android第三方闹钟开发,Android获取第三方闹钟的闹铃信息

    收集闹铃信息 闹铃时间,闹铃备注信息 闹铃引起系统变化的点: 1. Send Notification (正点闹钟可以设置不发送) 2. Play audio 闹铃信息结构体 ClockInfo{ S ...

  8. android 接收闹钟广播,Android获取第三方闹钟的闹铃信息

    闹铃信息采集 闹铃时间,闹铃备注信息 闹铃引起系统变化的点: 1. Send Notification 2. Play Ring 闹铃信息结构体 ClockInfo{ String apkName; ...

  9. android 获取本地音乐,Android 获取本地音乐

    获取到Android设备的本地音乐,并显示音乐的时长,专辑图片,音乐名字以及歌手姓名等.当设备从播放器中下载音乐的时候,这些信息都会存储到设备中.我们获取的时候可以通过设备暴露给我们的ContentP ...

最新文章

  1. Android点赞音效播放
  2. C++ Primer 5th笔记(10)chapter10 泛型算法 :迭代器
  3. mybatis框架入门程序:演示通过mybatis实现数据库的插入操作中实现返回结果的获取...
  4. 苹果电脑删除软件_易我Mac数据恢复软件,解决苹果电脑T2芯片数据恢复难题!
  5. 利用python做一个小游戏_如何使用python做一个简单的猜数字的小游戏
  6. 前端性能优化经典:javascript防抖节流
  7. Netty : netty 3如何解决空轮询bug
  8. 使用Github发布自己的网站
  9. js 字符串换行_分享自己写的一个js的信息打印程序
  10. inceptor-plsql 系统预定义函数/过程
  11. 人工智能生物学深度解析,附源代码
  12. Javascript连接数据库并查询和插入数据
  13. mac无法连接服务器无法定位当前位置,mac book pro 无法定位
  14. java button属性设置_java的JButton怎样设置内边距
  15. CF1413A 【Finding Sasuke】
  16. 学习笔记之范海鹰微表情识别
  17. 从Scratch少儿编程收获的启示
  18. 深度学习中的优化函数
  19. Can't connect to MySQL server on 'XXXX' (10055) 解决方案
  20. 树莓派python_树莓派使用Python控制LCD1602模块

热门文章

  1. 结对编程——保龄球实验分析
  2. 不使用Vivado给FPGA下载程序(实测MacOS、Ubuntu有效)
  3. FTP服务器管理软件Serv-U的安装方法(服务器端)
  4. 地球历上5次生物大灭绝
  5. GPS、WiFi、基站、AGPS几种定位原理介绍与区别
  6. 【预告:直播回顾资料下载】2017阿里巴巴双11技术十二讲,历数双11精彩技术干货
  7. 【100%通过率】华为OD机试真题 Python 实现【信号发射和接收】【2022.11 Q4 新题】
  8. 弘辽科技:淘宝店铺资质怎么去提升?
  9. css属性之appearance
  10. Jlink使用技巧之虚拟串口功能