Вибрация при нажатии

Есть ли способ заставить кнопку вибрировать, но только при проверке условия if?

Вот код:

Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE) ;

if(l2>=l1){
        insertactone.setBackgroundColor(Color.RED);

    };

вот метод onclick для insertactone:

einsertactone = (Button) findViewById(R.id.bsqlinsertactone);
    insertactone.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bsqlinsertactone:
                insertactoneClick();
                break;
            }
        }

        private void insertactoneClick() {
            startActivity(new Intent(
                    "com.example.everydaybudgetplanner.ACTONESQLENTRY"));
        }

    });

Я хочу, чтобы он вибрировал, только если условие IF проверено.


person Rui Miranda    schedule 22.11.2013    source источник


Ответы (3)


Есть ли способ заставить кнопку вибрировать, но только при проверке условия if?

да. Похоже, у вас уже есть 95% кода. Где ты застрял?

У вас уже есть объект Vibrator и условие. Все, что вам нужно сделать сейчас, это вызвать vibrate() следующим образом:

Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

if(l2 >= l1) {
    insertactone.setBackgroundColor(Color.RED);
    vibe.vibrate(100);
}

Не забывайте, что вам нужно добавить

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

в файле AndroidManifest.xml.

person Bryan Herbst    schedule 22.11.2013
comment
это все еще не работает так, как я хочу! я просто хочу, чтобы он вибрировал, когда пользователь нажимает на него, если он уже КРАСНЫЙ - person Rui Miranda; 22.11.2013
comment
Что вы сделали для его отладки? Что значит не работает? Это крах? Он компилируется? - person Bryan Herbst; 22.11.2013
comment
ничего подобного! проблема в том, что он вибрирует каждый раз, когда я запускаю действие, содержащее этот код. Я хочу, чтобы он просто вибрировал, когда я нажимаю кнопку - person Rui Miranda; 22.11.2013
comment
я хочу, чтобы он вибрировал только при нажатии - person Rui Miranda; 22.11.2013
comment
Затем переместите вызов vibrate() (и условное выражение) в onClick(). - person Bryan Herbst; 22.11.2013
comment
для этого я должен изменить l2 и l1 на final, и я не могу, потому что они получают свое значение из выбранной SUM - person Rui Miranda; 22.11.2013
comment
Одним из вариантов может быть изменение вашей активности для реализации OnClickListener (вместо создания анонимного OnClickListener, как вы делаете сейчас). - person Bryan Herbst; 22.11.2013
comment
я попробую это! спасибо за помощь - person Rui Miranda; 22.11.2013
comment
Я использовал это решение, и оно хорошо работало на большинстве брендовых телефонов. Но затем я получил несколько отчетов об ошибках на многих телефонах Samsung, которые получили null от [(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);.] Интересно, что там не так? Это сбой при выполнении vibe.vibrate(100); [Попытка прочитать из поля android.os.VibrationEffect com.android.server.VibratorService$Vibration.mEffect ссылку на нулевой объект] - person Fisher; 06.05.2021

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

Убедитесь, что вы добавили разрешение в AndroidManifest

person Seymur Mammadli    schedule 07.05.2016
comment
Это не дает ответа на вопрос. Получив достаточную репутацию, вы сможете /comment">прокомментировать любой пост; вместо этого дайте ответы которые не требуют разъяснений от спрашивающего. – Из обзора - person Vini.g.fer; 08.05.2016
comment
@ Vini.g.fer Как это не пытается дать ответ? Это может быть совершенно неправильно, но это не значит, что мы должны злоупотреблять очередями проверки, чтобы удалить его. - person Undo; 08.05.2016

Убедитесь, что вы включили вибрацию на своем мобильном телефоне. Потому что я отключил его. И наконец понял, что ошибка не в коде. В моих настройках по умолчанию. Этот код работает нормально.`

Заявление о разрешении на генерацию вибрации:

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

Добавьте эту функцию в onCreate в функции, которую определяет ваша кнопка:

финальный вибратор vibe = (Vibrator) yourActivity.this.getSystemService(Context.VIBRATOR_SERVICE);

Замените yourActivity.this своей собственной деятельностью или, если вы объявили контекст, вы можете написать context.getSystemService(Context.VIBRATOR_SERVICE);

Мы можем вызвать его из любого места:

`vibe.vibrate(80);` 

80 представляет миллисекунды (длительность вибрации)

`

person JAY A PRAVEEN    schedule 20.12.2020