2014-09-09 3 views
1

У меня есть приложение для Android с 9 кнопками. Это приложение работает на 2,36 и является единственным приложением на устройстве (или, по крайней мере, единственным приложением, которое мы разрешаем пользователю) - мы отправляем устройство с нашим кодом, предварительно установленным в составе набора промышленных продуктов, которые мы продаем.)Смутно о тактильной обратной связи в Android

Все кнопки переходят к одному и тому же обработчику и сортируются по их тегу. Обработчика задается в XML:

<Button android:id="@+id/IdleButton" 
    android:layout_marginLeft="5dp" 
    android:background="@drawable/idle18pt_he_normal" 
    android:hapticFeedbackEnabled="true" 
    android:layout_width="92dp" 
    android:layout_height="92dp" 
    android:tag="0" 
    android:onClick="theButtonHandler"> 
    </Button> 

Я хочу, чтобы включить тактильную обратную связь, т.е. вибрацию, когда пользователь нажимает на кнопку. Есть ли способ сделать это только в XML, или если нет, есть ли способ сделать это в моем onClick() обработчике?

Веб-примеры, которые я видел (например, http://androidcookbook.com/Recipe.seam?recipeId=1242) для тактической обратной связи на Android, по-видимому, связаны с изменениями манифеста, изменениями в XML (вы можете видеть, что я уже включил его в свой XML, выше) а затем объявляет, инициализирует и реализует отдельный сенсорный манипулятор для кнопки. Это похоже на большую работу, тем более, что у меня есть 9 кнопок.

Поскольку у меня уже есть только один обработчик onClick для всех моих кнопок, я могу реализовать тактильную обратную связь там?

Все, что мне нужно было сделать, чтобы получить звук «щелчка», когда я нажимаю одну из моих кнопок, - это отметить «Звуковой отбор» в разделе «Звуки» в настройках телефона - без кодирования. Почему тактическая обратная связь намного сложнее?

ответ

4

Создайте пользовательский класс VibrateButton, который наследуется от Button, и добавьте эту вибрацию onClick. Вам все равно придется запрашивать разрешения в манифесте, так что вы ничего не можете сделать без наследования. Этот примерный код принимается from here, и делает вибрацию.

import android.os.Vibrator; 
... 
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE); 
// Vibrate for 500 milliseconds 
v.vibrate(500); 

Примечание:

Не забудьте включить разрешение в AndroidManifest.xml файла:

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

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

PS: Убедитесь, что устройство может вибрировать. У меня было несколько часов, глупо потерянных при добавлении вибрации в Nexus 7 2012; он не имеет вибрационного модуля. Кроме того, убедитесь, что вы можете отключить это, чтобы поддерживать заряд батареи дольше.

Смежные вопросы