Учимся основам работы с вибрацией на Android устройстве
Учимся основам работы с вибрацией на Android устройстве
Главная » Учимся основам работы с вибрацией на Android устройстве

В этом небольшом уроке мы освоим основы работы (да в принципе, почти все) с вибрацией на Android устройстве. Использование вибрации часто может оказаться полезным во множестве приложений, для того, чтобы привлечь внимание пользователя, для сопровождения какого либо сообщения или события. Использование вибрации на Android устройстве довольно простое и не требует каких то сверх знаний и усилий.

Для работы с вибрацией в Android используется специальный класс под названием Vibrator. Также стоит не забывать, что использование вибрации в приложении возможно только после получения соответствующего разрешения в файле манифеста. Перейдем от теории к практике.

Создаем новый проект, все названия можете оставить по умолчанию. Создаем Blank Activity. Первым делом идем в файл AndroidManifest.xml и добавим туда пару строчек: разрешение на использование вибрации и новый сервис, который мы создадим немного позже:

Разрешение:
<uses-permission android:name="android.permission.VIBRATE"/>

Сервис:
<service android:name=".VibrateService"/>

Теперь перейдем в файл activity_main.xml и создадим интерфейс нашей программы. Он будет предельно прост: кнопка и элемент TextView:

<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
 <TextView
 android:layout_marginTop="22pt"
 android:layout_gravity="center_horizontal"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="18dp"
 android:text="Нажмите на кнопку для вызова вибрации"/>
 <Button
 android:id="@+id/buttonVibrate"
 android:layout_marginTop="20dp"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:text="Начать вибрацию"/>
</LinearLayout>

Создать вибрацию мы можем 3 различными путями: в главной activity программы, отдельным классом и с помощью параллельного потока, используя Threads. Мы сделаем это наиболее удобным способом - вторым. 

Открываем файл главного java класса приложения MainActivity.java и добавляем туда следующее:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 Button VibrateButton=(Button)findViewById(R.id.buttonVibrate);


 //Настраиваем слушатель нажатий на кнопку Button для вызова вибрации:
 VibrateButton.setOnClickListener(new View.OnClickListener() {

 public void onClick(View arg0) {

 //Создаем новое намерение для запуска сервиса использования вибрации
 Intent intentVibrate =new Intent(getApplicationContext(),VibrateService.class);
 startService(intentVibrate);

 }
 });
 }
}

Ничего особенного, просто объявили классу о нашей кнопке и настроили для нее обработчик нажатий. На строку VibrateService Android Studio пока ругается. Чтобы это исправить, создаем в проекте новый java класс по имени VibrateService, здесь то и будем работать с нашей вибрацией. Добавляем в код файла VibrateService.java следующий код (объяснения даны там же):

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.Vibrator;
import android.widget.Toast;

 public class VibrateService extends Service {

 @Override
 public void onStart(Intent intent, int startId) {

 super.onStart(intent, startId);

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

 //Указываем длительность вибрации в миллисекундах,
 //в нашем примере будет вибро-сигнал длительностью в 2 секунды
 vibrator.vibrate(2000);

 Toast.makeText(getApplicationContext(), "Вибрация активирована", Toast.LENGTH_LONG).show();
 }

 @Override
 public IBinder onBind(Intent intent) {
 return null;
 }
}

Мы создали пример класса Vibrator, получили доступ к сервису, вызывающему его работу, приказали ему вибрировать ровно 2000 миллисекунд, то есть 2 секунды и настроили отображение Toast сообщения, говорящем о том, что вибрация активирована.

Еще одним способом настройки вибрации является использование паттернов. Паттерн - это  long [ ] массив из чисел, в котором каждое число задает время работы и время паузы работы вибратора. Например, в следующем коде мы с помощью паттерна настраиваем первый акт вибрации длиной в 2 секунды, потом пауза 1 секунда, потом вибрация - 2,5 секунды, пауза - 1,5 секунды, вибрация - 3 секунды:

long[] pattern = {0, 2000, 1000, 2500, 1500, 3000};

Чтобы применить этот набор указаний для вибрации, в функции настройки вибрации vibrator.vibrate () указываем первым аргументом созданный паттерн, а вторым - целое число, указывающее на количество повторений паттерна, -1 означает, что повторять не нужно:

vibrato.vibrate(pattern, -1);

Можете попрактиковаться с паттерном самостоятельно, как видите, ничего сложного. 

Ну а наш урок подошел к концу и  приложение готово к тестам. Запускаем приложение на Android устройстве и смело жмем по кнопке "Начать вибрацию". Удачи в начинаниях!

Категория: Уроки программирования | Просмотров: 1158 | Добавил: Oleg | Теги: программирование Android, вибрация, вызываем вибрацию | Рейтинг: 2.0/1
Всего комментариев: 2
avatar
1
Вибрация живет своей жизнью, после закрытия приложения переодически запускается..
avatar
2
Это потому что запускается как Сервис. Он не выгружается и висит в памяти. Сервис нужно остановить.
avatar