Обеспечьте вибрационную обратную связь в зависимости от того, установлен ли флажок или нет.

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

Реализовать эффект вибрации в моем приложении, когда флажок установлен, довольно просто, но я просто не смог найти способ дать пользователю мгновенную обратную связь с вибрацией, когда пользователь устанавливает флажок в настройках. В частности, я хочу, чтобы устройство вибрировало, когда пользователь устанавливает флажок, и, конечно же, не вибрировало, когда пользователь снимал его.

Ниже приведен мой блок настроек флажка, который должен быть очень распространенным: введите здесь описание изображения

И класс предпочтений, который загружает предпочтения xml:

введите здесь описание изображения

Пожалуйста, скажите мне, как я могу этого добиться. Спасибо!


person jinnancun    schedule 23.03.2015    source источник


Ответы (1)


Вам нужно использовать setOnPreferenceChangeListener(), как показано ниже,

 public class UserSettingActivity extends PreferenceActivity
{

    Vibrator v;

    @SuppressWarnings("deprecation")
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.settings);
        v = (Vibrator) UserSettingActivity.this.getSystemService(Context.VIBRATOR_SERVICE);

        final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("keypress_vibration");//key name in preference xml

        checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
        {
            public boolean onPreferenceChange(Preference preference, Object newValue)
            {
                if (newValue.toString().equals("true"))
                {
                    v.vibrate(500);
                }
                return true;
            }
        });
    }
}

и не забудьте дать разрешение в манифесте,

<uses-permission android:name="android.permission.VIBRATE" />

Надеюсь, это помогло!

person Harry's Lab    schedule 23.03.2015
comment
Это именно то, что я хочу! Спасибо за вашу помощь! - person jinnancun; 23.03.2015