Android 设置铃声和闹钟

Android设置铃声和闹钟使用的方法是一样的,但是要区别的去获取对应的权限。

统一权限,不管是设置闹钟还是铃声,他们都需要一个系统设置权限如下:

在这里插入图片描述
在这里插入图片描述

        //高版本需要WRITE_SETTINGS权限
        //此权限是敏感权限,无法动态申请,需要跳转到系统界面开启
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
   
   
            //判断是否已经开启权限
            if (!Settings.System.canWrite(mContext)) {
   
   
                //没有开启这里需要一个弹窗来提醒用户要去设置下这个权限
                //自己的demo可以忽略此步骤,应用商店权限申请前需要说明
                mBindView.tvTitle.post {
   
   
                    //这是我自己的权限说明弹窗,自己的定义即可
                    OpenWriteDialog.show(this.supportFragmentManager){
   
   
                        if (it){
   
   
                            //这一步是跳转到系统设置界面,跳转之后有个回调,判断是否已经开启,开启了继续处理下一步
                            val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
                            intent.data = Uri.parse("package:$packageName")
                            startActivityForResult(intent, PERMISSION_LOCAL_CODE)
                        }
                    }
                }
            } else {
   
   
                //开启了运行下一步
                todo()
            }
        } else {
   
   
            //低版本直接运行下一步
            todo()
        }
    @RequiresApi(Build.VERSION_CODES.M)
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
   
   
        super.onActivityResult(requestCode, resultCode, data)
        //回调判断code是否一致
        if (requestCode == PERMISSION_LOCAL_CODE){
   
   
            //判断是否已经开启
            if (Settings.System.canWrite(this)) {
   
   
                //开启了进行下一步
                todo()
            }
        }
    }
设置铃声或者闹钟前都要先进行上一步的权限判断才可以继续进行

设置闹钟

首先动态判断权限

Manifest.permission.SET_ALARM
Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.WRITE_EXTERNAL_STORAGE

然后调用代码即可

RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM, uri)

注意这里的uri是手机本地的铃声路径,大多数的需求是下载网络.mp3 铃声到本地,然后更新闹钟,这里注意下下载之后需要更新到媒体库才可以正常设置,否则设置出来可能是未知或者直接设置不成功----------如何下载更新到媒体库后面统一讲

设置铃声

同闹钟一样,首先需要动态获取权限

Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.WRITE_EXTERNAL_STORAGE

其次设置铃声即可

RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, uri)

这里的uri同闹钟一样,需要更新到媒体库才可以设置

下载网页铃声到本地

在这里插入图片描述

DownloadUtil.download("网页链接","存储路径", "文件名称.mp3",
                    object : DownloadUtil.OnDownloadListener{
   
   
                        override fun onDownloadSuccess(file: File?) {
   
   
                            //下载成功以及下载后的文件
                        }
                        override fun onDownloading(progress: Int) {
   
   
                            //下载进度
                        }
                        override fun onDownloadFailed(e: Exception?) {
   
   
                            //下载失败
                        }

                    })
存储路径地址这里给出建议写法
    private fun getUrlPath(): String {
   
   
        val externalFilesDir: File? = this.getExternalFilesDir("")
        val customFile = File(externalFilesDir!!.absolutePath, "Sandbox")
        if (!customFile.exists()) {
   
   
            customFile.mkdirs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值