Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Android [игнор отключен] [закрыт для гостей] / Установить значение RingtonePreference / 10 сообщений из 10, страница 1 из 1
10.03.2017, 12:41
    #39416815
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
Как пожно програмно установить значние в RingtonePreference ?
Я храню выбор пользователя не в SharedPreferences, а в sql.
Нагуглить не получилось. Возможно кто-то сталкивался с подобным.
...
Рейтинг: 0 / 0
10.03.2017, 13:24
    #39416861
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
Какая разница где хранить? Для этого не нужен рингтонпреф.

Выбор (первый метод - реакция на кнопку, второй получение результата):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Click(R.id.buttonBrowseAudio) void selectMedia() {
        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
        if ((rule.getUri() != null) && (rule.getUri().length() > 0))
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(rule.getUri()));
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
        startActivityForResult(intent, REQUEST_RINGTONE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_RINGTONE) {
            if (resultCode == RESULT_OK) {
                Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                if ((uri != null) && ((rule.getUri() == null) || (!rule.getUri().equals(uri.toString())))) {
                    rule.setUri(uri);
                    textViewUri.setText(formatUri());
                    setChanged(true, false);
                }
            }
        }
    }


Проигрывание рингтона:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
private static void playSound(Context context, String uri) {
        if ((uri != null) && (uri.length() > 0)) {
            Uri sound = Uri.parse(uri);
            Ringtone r = RingtoneManager.getRingtone(context, sound);
            if (r != null) {
                r.play();
            }
        }
    }

...
Рейтинг: 0 / 0
10.03.2017, 15:45
    #39417037
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
wadmanКакая разница где хранить? Для этого не нужен рингтонпреф.


Спасибо. Остановлюсь на этом способе, хотя это и обход проблемы, а не решение.
Видно более никак.
...
Рейтинг: 0 / 0
13.03.2017, 17:24
    #39418286
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
Не корректно работает звук по умолчанию в телефоне. В эмеляторе, как не странно, все хорошо.

Код: java
1.
2.
3.
4.
5.
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getActivity().getString(R.string.prefs_notif_dialog_title));
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);



Не смотря на установленный тип RingtoneManager.TYPE_NOTIFICATION при прослушивании дефотлного звука воспроизводится рингтон, а не звук уведомления. Если установить EXTRA_RINGTONE_DEFAULT_URI

Код: java
1.
2.
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,
                RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));



Дефотный звук не воспроизводится.

Весь код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private void startRingtoneActivity(String initURI, int requestCode) {
        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getActivity().getString(R.string.prefs_notif_dialog_title));
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);

        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,
                RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

        if (initURI != null) {
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
                    Uri.parse(initURI));
        } else {
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
                    RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
        }
        startActivityForResult(intent, requestCode);
    }

...
Рейтинг: 0 / 0
14.03.2017, 10:07
    #39418620
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
Dmitry SukhovilinНе корректно работает звук по умолчанию в телефоне.
Звук или его выбор? В коде нет проигрывания звука.
...
Рейтинг: 0 / 0
15.03.2017, 15:08
    #39420041
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
wadmanDmitry SukhovilinНе корректно работает звук по умолчанию в телефоне.
Звук или его выбор? В коде нет проигрывания звука.
В пред-прослушивании звука (когда бибираем пункт в меню но еще не нажимаем на ОК).
Defalut получается различным при использовании <RingtonePreference> и RingtoneManager.ACTION_RINGTONE_PICKER.
В первом случае воспроизводится мелодия со звонка, хотя установлен TYPE_NOTIFICATION, а во втором случае воспроизводится правильный звук нотификации.
В onActivityResult призодит звук в соответствии с выбором. Т.е. для RingtoneManager.ACTION_RINGTONE_PICKER возвращается звук звонка но не нотификации.
В эмуляторе все работает правильно.
...
Рейтинг: 0 / 0
15.03.2017, 16:02
    #39420114
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
Dmitry SukhovilinВ эмуляторе все работает правильно.
На многих телефонах иначе? Может это проблема конкретного телефона и конкретной прошивки.
...
Рейтинг: 0 / 0
15.03.2017, 22:04
    #39420342
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
wadmanDmitry SukhovilinВ эмуляторе все работает правильно.
На многих телефонах иначе? Может это проблема конкретного телефона и конкретной прошивки.
Только на одном :(
Вероятнее всего, что-то не так с ним.
...
Рейтинг: 0 / 0
15.03.2017, 22:08
    #39420347
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
Собственно суть ошибки - не желение телефона отличать рингтон от нотификации.
...
Рейтинг: 0 / 0
15.03.2017, 22:58
    #39420369
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установить значение RingtonePreference
В общем все было просто. В андроиде есть Default Notification Sound :)
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Установить значение RingtonePreference / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]