установка мелодии звонка только для определенного приложения - PullRequest
2 голосов
/ 14 мая 2010

Я хочу иметь возможность установить мелодию звонка, которая связана только с конкретным приложением. Если приходит сообщение со специальным префиксом, мое приложение перехватывает его и делает все, что должно. По прибытии сообщения я хочу иметь возможность сообщить пользователю, что «специальное» сообщение поступило через мелодию звонка (которая играет исключительно на сообщениях такого рода). кто-нибудь со свинцом, пожалуйста, помогите.

1 Ответ

2 голосов
/ 25 февраля 2011

Вы можете создать мелодию звонка в своем приложении и использовать ее при получении любого уведомления и воспроизводить мелодию звонка в соответствии с этим. ниже приведен код для установки мелодии звонка для вашего приложения

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(ringTonePref.getRingtoneType());
            String defaultRingtone = defaultRingtoneUri.toString();
            String selectedRingtone = ringTonePref.getPreferenceManager().getSharedPreferences()
                    .getString(NOTIFICATION_RINGTONE,defaultRingtone);
            if (defaultRingtone.equals(selectedRingtone)) {
                ringtoneUri = defaultRingtoneUri;
            } else {
                ringtoneUri = (TextUtils.isEmpty(selectedRingtone)) ? null : Uri.parse(selectedRingtone);
            }
            updateRingtoneSummary(ringTonePref, ringtoneUri);
            final Handler handler = new Handler() {
                @Override
                public void handleMessage(Message message) {
                    Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(ringTonePref.getRingtoneType());
                    String defaultRingtone = defaultRingtoneUri.toString();
                    String selectedRingtone = ringTonePref.getPreferenceManager().getSharedPreferences()
                            .getString(NOTIFICATION_RINGTONE,defaultRingtone);
                    if (defaultRingtone.equals(selectedRingtone)) {
                        ringtoneUri = defaultRingtoneUri;
                    } else {
                        ringtoneUri = (TextUtils.isEmpty(selectedRingtone)) ? null : Uri.parse(selectedRingtone);
                    }
                    updateRingtoneSummary(ringTonePref, ringtoneUri);
                    super.handleMessage(message);
                }
            };
            ringTonePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener (){
                public boolean onPreferenceChange(Preference arg0, Object arg1) {
                    handler.sendEmptyMessage(UPDATE_RINGTONE_SUMMARY);
                    return true;
                }
                });
        }


    private void updateRingtoneSummary(RingtonePreference ringtonePreference, final Uri ringtoneUri) {
                // Set the summary
                if (ringtoneUri == null) {
                    // The ringtone picker returns null for "silent" ringtone
                    ringtonePreference.setSummary(R.string.silent);
                } else {
                    Ringtone ringtone = RingtoneManager.getRingtone(this, ringtoneUri);
                    if (ringtone != null) {
                        ringtonePreference.setSummary(ringtone.getTitle(this));
                    }
                }
            }

файл preference.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
            android:title="@string/notificationsettings">
                <RingtonePreference
                android:key="pref_key_ringtone"
                android:title="@string/title_list_preference"
                android:dialogTitle="@string/title_list_preference"
                android:defaultValue="content://settings/system/notification_sound"
                android:ringtoneType="notification" />

        <CheckBoxPreference
                android:key="pref_key_vibrate"
                android:title="@string/vibrate"
                android:defaultValue="true"/>
    </PreferenceCategory>

</PreferenceScreen>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...