Я написал приложение для Android. Теперь я хочу, чтобы устройство вибрировало, когда происходит определенное действие. Как я могу это сделать?
499
Я написал приложение для Android. Теперь я хочу, чтобы устройство вибрировало, когда происходит определенное действие. Как я могу это сделать?
Пытаться:
import android.os.Vibrator;
...
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
v.vibrate(500);
}
Замечания:
Не забудьте включить разрешение в файл AndroidManifest.xml:
<uses-permission android:name="android.permission.VIBRATE"/>
vibrate(VibrationEffect)
вместо этого.Предоставление разрешения на вибрацию
Прежде чем приступить к реализации любого кода вибрации, вы должны дать своему приложению разрешение на вибрацию:
Обязательно включите эту строку в файл AndroidManifest.xml.
Импортировать библиотеку вибрации
Большинство IDE сделают это для вас, но вот инструкция import, если ваша нет:
Убедитесь в этом в упражнении, в котором вы хотите, чтобы вибрация возникла.
Как вибрировать в течение определенного времени
В большинстве случаев вам захочется вибрировать устройство в течение короткого заранее определенного промежутка времени. Вы можете достичь этого с помощью
vibrate(long milliseconds)
метода. Вот быстрый пример:Вот и все, просто!
Как вибрировать до бесконечности
Возможно, вы хотите, чтобы устройство продолжало вибрировать бесконечно. Для этого мы используем
vibrate(long[] pattern, int repeat)
метод:Когда вы будете готовы остановить вибрацию, просто вызовите
cancel()
метод:Как использовать шаблоны вибрации
Если вам нужна более индивидуальная вибрация, вы можете попытаться создать свои собственные шаблоны вибрации:
Более сложные вибрации
Существует несколько SDK, которые предлагают более широкий диапазон тактильной обратной связи. Одна из тех, что я использую для спецэффектов, - Haptic Development Platform для Android от Immersion .
Поиск проблемы
Если ваше устройство не вибрирует, сначала убедитесь, что оно может вибрировать:
Во-вторых, убедитесь, что вы дали своему приложению разрешение на вибрацию! Вернитесь к первому пункту.
источник
Метод обновления 2017 года (интервал) устарел с Android-O (API 8.0)
Для поддержки всех версий Android используйте этот метод.
Котлин:
источник
getSystemService
наthis.getContext().getSystemService
Выше ответы идеальны. Однако я хотел вибрировать свое приложение ровно два раза при нажатии кнопки, и эта небольшая информация здесь отсутствует, поэтому я буду публиковать сообщения для будущих читателей, таких как я. :)
Мы должны следовать как указано выше, и единственное изменение будет в вибрационной схеме, как показано ниже,
Это будет точно вибрировать дважды . Как мы уже знаем
Можно и дальше упоминать о задержке и вибрации (например, 0, 100, 1000, 300, 1000, 300 для 3 вибраций и т. Д.), Но помните, что слово @ Дэйва использует его ответственно. :)
Также обратите внимание, что параметр repeat установлен на -1, что означает, что вибрация будет происходить именно так, как указано в шаблоне . :)
источник
Я изо всех сил пытался понять, как это сделать в моей первой реализации - убедитесь, что у вас есть следующее:
1) Ваше устройство поддерживает вибрацию (мой планшет Samsung не работал, поэтому я продолжал перепроверять код - оригинальный код отлично работал на моей сенсорной панели CM
2) Вы объявили выше уровня приложения в файле AndroidManifest.xml, чтобы дать коду разрешение на запуск.
3) Импортируйте оба следующих файла в ваш файл MainActivity.java с другими операциями импорта: import android.content.Context; импорт android.os.Vibrator;
4) Называйте вашу вибрацию (уже подробно обсуждаемую в этой теме) - я сделал это в отдельной функции и вызывал это в коде в других точках - в зависимости от того, что вы хотите использовать для вызова вибрации, вам может понадобиться изображение ( Android: длительное нажатие на кнопку -> выполнить действие ) или кнопку прослушивания, или объект, активируемый щелчком мыши, как определено в XML ( Clickable image - android ):
источник
Вибрация без разрешения
Если вы хотите просто вибрировать устройство один раз, чтобы предоставить отзыв о действиях пользователя. Вы можете использовать
performHapticFeedback()
функциюView
. Для этого не нужноVIBRATE
разрешение быть объявленным в манифесте.Используйте следующую функцию в качестве функции верхнего уровня в некотором общем классе, таком как Utils.kt вашего проекта:
А затем используйте его в любом месте
Fragment
илиActivity
как:Просто как тот!
источник
должны быть добавлены внутри
<manifest>
тега и снаружи<application>
тега.источник
Я использую следующий метод утилит:
Добавьте следующее разрешение в файл AndroidManifest
Вы можете использовать перегруженные методы в случае, если вы хотите использовать различные типы вибраций (паттерны / неопределенные), как предложено выше.
источник
Приведенный выше ответ очень верен, но я делаю простой шаг:
И тогда в вашем XML-файле:
Это самый простой способ.
источник
Вибрация в паттернах / волнах :
плюс
Необходимое разрешение в
AndroidManifest.xml
:источник
Обновление Kotlin для большей безопасности типов
Используйте его как функцию верхнего уровня в каком-то общем классе вашего проекта, например Utils.kt
И затем вызвать его в любом месте вашего кода следующим образом:
объяснение
Использование
Vibrator::class.java
более безопасно для типов, чем использованиеString
констант.Мы проверяем
vibrator
на обнуляемость, используяlet { }
, потому что, если вибрация недоступна для устройства,vibrator
будетnull
.Это нормально, чтобы подавить устаревание в
else
предложении, потому что предупреждение от более нового SDK.Нам не нужно спрашивать разрешения во время выполнения для использования вибрации. Но мы должны объявить это
AndroidManifest.xml
следующим образом:источник
Использовать этот:
Замечания:
Не забудьте включить разрешение в файл AndroidManifest.xml:
источник
Вы можете вибрировать устройство и его работу
Разрешение необходимо, но не требуется разрешение во время выполнения
источник