Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'broadcast'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
  • Вопросы по использованию RAD Studio
  • Native FGX
  • Обучение
  • Поиск специалистов по FireMonkey
  • Дополнительные ресурсы по FireMonkey
  • Организация работы данного форума
  • Видеокурсы

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Старт

    Конец


Дата обновления

  • Старт

    Конец


Фильтр по количеству...

Регистрация

  • Старт

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

Найдено: 2 результата

  1. Как создать простейший Android Broadcast Receiver. Создайте класс, для приема Intent уведомлений: uses Androidapi.JNIBridge, Androidapi.JNI.Embarcadero, Androidapi.JNI.GraphicsContentViewText; type TMyReceiver = class(TJavaLocal, JFMXBroadcastReceiverListener) public constructor Create; procedure onReceive(context: JContext; intent: JIntent); cdecl; end; uses Androidapi.Helpers, Androidapi.JNI.JavaTypes; { TMyReceiver } constructor TMyReceiver.Create; begin inherited; end; procedure TMyReceiver.onReceive(context: JContext; intent: JIntent); begin Log.d('Broadcast Received = ' + JStringToString(intent.getAction)); end; Регистрируем тип уведомлений и приемник в событиях формы: type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { private } FMyListener: TMyReceiver; FBroadcastReceiver: JFMXBroadcastReceiver; public { public } end; procedure TForm1.FormCreate(Sender: TObject); var Filter: JIntentFilter; begin FMyListener := TMyReceiver.Create; FBroadcastReceiver := TJFMXBroadcastReceiver.JavaClass.init(FMyListener); Filter := TJIntentFilter.JavaClass.init; Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_OFF); Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_ON); TAndroidHelper.context.getApplicationContext.registerReceiver (FBroadcastReceiver, Filter); end; procedure TForm1.FormDestroy(Sender: TObject); begin TAndroidHelper.context.getApplicationContext.unregisterReceiver (FBroadcastReceiver); end; Все. Теперь когда вы запустите программу и выключите\включите экран, лог покажет : FMX: BroadcastSample: Broadcast Received = android.intent.action.SCREEN_OFF FMX: BroadcastSample: Broadcast Received = android.intent.action.SCREEN_ON Takashi Yamamoto
  2. Для работы с USB-устройствами (на девайсах с USB-хостом) нужно использовать BroadcastReceiver. Нашёл пример работы с ними (https://github.com/freeonterminate/delphi/tree/master/BroadcastReceiver). Проверял на XE10. Долго мучался с проверкой, пока не выяснилось, что под XE7 работает, а под XE10 - нет. Выдаёт ошибку "Interface not supported" в момент создания JFMXBroadcastReceiver (или около того, точно непонятно). Для демонстрации я создал отдельный простой проект - https://github.com/ashumkin/Delphi-Android-BroadcastSample. В XE7 он работает (при нажатии на кнопку Register вешается слушатель, который ловит и выводит в лог (см. adb logcat) события включения/выключения экрана). А в XE10 - выдаёт вышеупомянутую ошибку "Interface not supported". В логах есть строки W/dalvikvm(31735): dvmFindClassByName rejecting 'com/embarcadero/firemonkey/broadcast/FMXBroadcastReceiverListener' W/dalvikvm(31735): dvmFindClassByName rejecting 'com/embarcadero/firemonkey/broadcast/FMXBroadcastReceiver' (но они есть и при запуске приложения, собранного в XE7) Пробовал по-разному: и удалял AndroidManifest.template.xml от XE7, и пересоздавал .dproj в XE10, - пофик. В чём засада?
×
×
  • Создать...