如何在安卓系统中通过编程更改手机铃声?

21

我正在尝试编写一个应用程序(除其他功能外),根据用户的位置更改其手机铃声。

但是,我在从应用程序中设置我的手机铃声时遇到了困难。我已经能够显示手机铃声列表,并已经在尝试使用以下代码来设置铃声:

RingtoneManager.setActualDefaultRingtoneUri(applicationContext, 
      RingtoneManager.TYPE_RINGTONE,
      MediaStore.Audio.Media.getContentUriForPath(settings.getRingtoneURI()));

Settings.System.putString(c.getContentResolver(), Settings.System.RINGTONE, 
      settings.getRingtoneURI());

其中settings.getRingtoneURI()返回一个字符串,其包含所需铃声的URI。

当我运行此代码时,没有出现任何错误,但是铃声没有改变。

有什么建议吗?


如何在Android中从我的Activity设置手机铃声 - John Leehey
1
在发布我的问题之前,我实际上看到了那个问题。但是,我不想通过从音频源创建URI来应用铃声。我想使用手机预先存在的铃声之一。 我能够显示一个对话框,其中列出了可用的铃声,但由于某种原因,上面的代码未将默认铃声设置为用户的选择。 - dckrooney
请参考以下问题:https://dev59.com/lHM_5IYBdhLWcg3wslRW - dharmendra
@dhams:这是约翰指出的同样问题。 - dckrooney
1个回答

2
下面的代码会从手机中随机选择一个来电铃声。
            RingtoneManager rm = new RingtoneManager(context);
    Random random = new Random();

    int i = rm.getRingtonePosition(RingtoneManager
            .getActualDefaultRingtoneUri(context,
                    RingtoneManager.TYPE_RINGTONE));
    MyApplication.APPLICATION_SHARED_PREFERENCE.edit()
            .putInt(MyConstants.PHONE_RINGTONE_NUMBER, i).commit();
    int chanegToneNumber;
    Cursor cursor = rm.getCursor();

    while (true) {
        chanegToneNumber = random.nextInt(cursor.getCount());
        if (chanegToneNumber != i)
            break;
    }

    Log.d(TAG, "Tone: " + i);

    Log.d(TAG, "Tone total: " + cursor.getCount());

    while (cursor.moveToNext()) {

        if (i == cursor.getInt(cursor
                .getColumnIndex(MediaStore.MediaColumns._ID))) {
            RingtoneManager.setActualDefaultRingtoneUri(context,
                    RingtoneManager.TYPE_RINGTONE,
                    rm.getRingtoneUri(chanegToneNumber));
            break;
        }
    }

MyApplication.APPLICATION_SHARED_PREFERENCE.edit().putInt(MyConstants.PHONE_RINGTONE_NUMBER, i).commit();请告诉我这行代码的重要性? - Sritam Jagadev
1
Sritam Jagadev。基本上我在另一个地方也使用了这个音调编号,所以我把它保存在文件中。但是对于你来说,这可能是多余的。 感谢提出好问题。 - Hafiz Waleed Hussain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接