Как я могу изменить мелодию звонка в Android программно? - PullRequest
21 голосов
/ 31 мая 2011

Я пытаюсь написать приложение, которое (помимо прочего) изменит мелодию пользователя в зависимости от его местоположения.

Однако у меня возникают трудности с настройкой мелодии телефона из моего приложения,Я смог отобразить список мелодий телефона и использовал следующий код, чтобы попытаться установить мелодию звонка:

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нужный рингтон.

Когда я запускаю это, я не получаю ошибок, но рингтон не меняется.

Любой совет?

1 Ответ

3 голосов
/ 19 сентября 2012

Приведенный ниже код выбирает любой случайный сигнал с мобильного телефона для входящего вызова.

            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;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...