Перейти к содержанию
Fire Monkey от А до Я
  • 0

Не работает с вибрацией


Рагим

Вопрос

Доброго времени суток. Пишу мобильное приложение на Delphi Berlin. Добавил вибрацию при нажатии на кнопку. На Андроид 4.4.2 все работает нормально, на Андроид 6 при нажатии на кнопку приложение вылетает. Проблема точно в вибрации, так как при отсутствии вибрации все работает нормально. В качестве процедуры вибрации использую следующий код:

procedure Vibr;
//Процедура вибрации
var
  VibratorObj: JObject;
  Vibrator: JVibrator;
begin
  VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE);
  Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID);
  if Vibrator.hasVibrator() then
    Vibrator.vibrate(200);
end;

 

Как по Вашему, в чем может быть причина?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

Права дали точно?

Вот вам мой класс для работы с вибрацией, там есть код проверки прав - https://github.com/AndrewEfimov/Android-API/blob/master/Vibrator/class/Vibrator.Android.pas (https://github.com/AndrewEfimov/Android-API/tree/master/Vibrator, класс и тестовое приложение)

либо посмотрите в настройках приложения, раздел с правами.

Ссылка на комментарий
  • 0
  • Модераторы

Ну, если не хотите попробовать мою демку и посмотреть класс, то давайте изменю ваш код:

procedure Vibr;
//Процедура вибрации
var
  Vibrator: JVibrator;
begin
  Vibrator := TJVibrator.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE));
  if Vibrator.hasVibrator() then
    Vibrator.vibrate(2000);
end;

доступ к сервису вибрации нужно получать у Context'a.

 

Если всё равно падает, то смотрите логи, через monitor.bat (находится примерно тут: C:\Android\sdk\tools, у вас путь до sdk может быть другим).

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...