Android开发之设置铃声

首先介绍一下Android系统支持的铃声格式。有以下几种

64赫兹Midi,AAC、AAC+、AMR、WAV、MP3、Real Audio、WMA、OGG等格式。

将音频文件设置成铃声很简单,只需如下几步即可:

1) 获取系统音频文件的Uri

Uri uri =MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());//获取系统音频文件的Uri

2) 将文件插入系统媒体库,并获取新的Uri

Uri newUri = this.getContentResolver().insert(uri,values);//将文件插入系统媒体库,并获取新的Uri

3) 设置铃声

RingtoneManager.setActualDefaultRingtoneUri(this, ringType, newUri);//设置铃声

下面是设置铃声的详细代码:

  /**
     * 设置铃声
     *
     * @param ringType int: 铃声类型
     * @param file     File: 要设为铃声的文件
     * @param title    标题
     */
    public static boolean setRingtone(Context context, int ringType, File file, String title) {
        boolean isRingtone = false, isNotification = false, isAlarm = false, isMusic = false;
        String showText = "";
        switch (ringType) {
            case RingtoneManager.TYPE_ALARM://闹铃
                isAlarm = true;
                showText = "闹钟";
                break;
            case RingtoneManager.TYPE_NOTIFICATION://通知
                isNotification = true;
                showText = "通知";
                break;
            case RingtoneManager.TYPE_RINGTONE://来电
                isRingtone = true;
                showText = "来电";
                break;
            case RingtoneManager.TYPE_ALL://添加到铃声库(全部铃声)
                isMusic = true;
                showText = "全部";
                break;
            default:
                break;
        }
        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
        values.put(MediaStore.MediaColumns.TITLE, TextUtils.isEmpty(title) ? file.getName() : title);
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
        values.put(MediaStore.Audio.Media.IS_RINGTONE, isRingtone);
        values.put(MediaStore.Audio.Media.IS_NOTIFICATION, isNotification);
        values.put(MediaStore.Audio.Media.IS_ALARM, isAlarm);
        values.put(MediaStore.Audio.Media.IS_MUSIC, isMusic);
        Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());//获取系统音频文件的Uri

        try {
            //删除之前的铃声
            context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + file.getAbsolutePath() + "\"", null);
            Uri newUri = context.getContentResolver().insert(uri, values);//将文件插入系统媒体库,并获取新的Uri
            if (newUri != null) {
                RingtoneManager.setActualDefaultRingtoneUri(context, ringType, newUri);//设置铃声
            }
            Toast.makeText(context, "设置" + showText + "铃声成功", Toast.LENGTH_SHORT).show();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值