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

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

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

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

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • API интернет сервисов
    • ВКонтакте API
    • Google Maps API
    • Yandex деньги
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума
    • Правила форума
    • Нарушения правил форума
    • Предложения об организации форума
    • Проблемы
    • Функции форума
  • Видеокурсы
    • Основная информация
    • Курсы
    • Предложения и голосования за новые курсы
    • Вопросы

Категории

  • Курсы

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

  1. Toast для Android Service

    Это не вопрос. Просто подумал, что кому-нибудь может пригодится. https://forums.embarcadero.com/thread.jspa?threadID=118465 Используем 2 файла: Androidapi.JNI.ToastForService.pas + FlyUtils.Android.PostRunnableAndTimer.pas. Пример вызова: Androidapi.JNI.ToastForService.PostToast('текст сообщения', LongToast); Проверил - работает. Есть ещё третий параметр "UseLastToastObj", но я так и не понял, для чего он. Документации нет.
  2. Зависает при старте

    Приложение + служба. В службе установлен флаг перезапуска в StrartCommand^ result := TJService.JavaClass.START_STICKY; // rerun service if host app stops Проблема вот в чем. На экране главная форма хост-приложения. На смартфоне внизу нажимаю кнопку Назад. Приложение закрывается. Вижу в LogCat Андроида, что аварийно завершается служба. Андроид восстанавливает работу службы и запускает и службу и само приложение. Хотя Андроид не должен перезапускать host-приложение, а только службу. Т.е. вижу, что поле выхода приложение со службой работают. Когда с рабочего стала ланчера запсукаю host-приложение, то оно виснет при старте и даже событие OnCreate главной формы не срабатывает. Показывается стартовое окно (splash) и висит, пока Андроид не предложит закрыть или подождать. И так несколько раз приходится делать, пока приложение не запустится. Я в OnClose главной формы разные параметры прописывал для action, но толку нет. Хоть какой-нибудь костыль посоветуйте, пожалуйста. А когда нажимаю кнопку Домой на смартфоне, то приложение сворачивается и тогда запсу с рабочего стола ланчера происходит нормально, т.е. приложение просто всплывает. Может можно как-то при закрытии приложения не закрывать его, а сворачивать? Если я не запускаю службу, то приложение закрывается и потом запускается нормально с рабочего стола ланчера. Заранее благодарен.
  3. Здравствуйте. Требуется программа на андроид с набором кнопок со следующем функционалом: 1. Кнопка1 - создать базу в test.sqlite (в том месте где доступ к нему есть только у самого приложения (имею ввиду если это не ROOT телефон, при рут и так всё понятно) 2. Кнопка2 - создать таблицу в базе test.sqlite с названием "TblTest01" (с разным набором полей на своё усмотрение) 3. Кнопка3 - создать таблицу в базе test.sqlite с названием "TblTest02" (с разным набором полей на своё усмотрение) 4. Кнопка4 - Добавить строку в таблицу "TblTest01" (любой набор данных на ваших усмотрение) 5. Кнопка5 - Удалить строку в таблице "TblTest01" (по любому ключу на ваше усмотрение) 6. Кнопка6 - Изменить строку в таблице "TblTest01" (по любому ключу и любое значение на ваше усмотрение) Приложение должно иметь фоновый сервис, который должен получать данные с сервера и добавлять их в базу test.sqlite в таблицу "TblTest02". При получение новый данных, сервис должен показать в "шторке" сообщение, по клику на которую открывается само приложение с визуальной частью. Т.е. если визуально приложение закрыто, выгружено, не запущено или запущено, фоновый процесс должен сам делать запросы к серверу и добавлять новые данные в базу, если они есть/поступили Приложение должно запускаться вместе с системой, после перезагрузки и т.д. Использовать только те компоненты что доступны в самой среде из коробки. Часть где делается запрос к серверу должен иметь timeout равный 20 секундам. Сервис должен грамотно делать запросы к серверу как положено в Андроид приложениях. Серверная часть мне не нужна, можете для теста сами эмулирвать эти процессы. ----- ЦЕНА: 2500р. СРОКИ: Не горит, но в целом где то дней 7 есть Перечисляю на QIWI, ЯД, Сбербанк, короче куда скажите.
  4. Работает ли служба

    Как проверить, работает ли моя служба? Т.е. перед запуском или остановкой хочется выполнить проверку. FService := TJIntent.Create; FService.setClassName(TAndroidHelper.Context.getPackageName, TAndroidHelper.StringToJString('com.embarcadero.services.pak1')); FService.setAction(StringToJString('StopService')); TAndroidHelper.Activity.startService(FService);
  5. На основе нескольких тем форума сделал службу перехвата звонков и номера телефона. http://fire-monkey.ru/topic/3878-статьякак-создать-простой-android-broadcast-receiver-how-to-implement-simplest-android-broadcast-receiver-in-delphi/ http://fire-monkey.ru/topic/2386-перехват-события-звонка/ http://fire-monkey.ru/topic/2972-использование-нативных-localbroadcastmanager-и-broadcastreceiver/ Покритикуйте пожалуйста. Уверен, что не всё правильно. Но что до ума не удалось довести, так это то, как правильно останавливать службу и закрывать приложение. Проект (для Токио) приложил теме. Заранее благодарен. BR2.rar
  6. Remove (delete) Android Service

    Заметил, что после удаления библиотеки-сервиса всё равно в host-приложении остаётся мусор.
  7. Прошу помощи или хотя бы совета. Кто-то уже пытался создать службу, которая может перехватывать звонки входящие и исходящие? Пример для обычного приложения есть с таким кодом TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService)); if Assigned(PhoneDialerService) then PhoneDialerService.OnCallStateChanged := MyOnCallStateChanged; Плюс пытаюсь всё это скрестить с NotificationCenter, но служба при запуске зависает и падает.
  8. Экспериментировал с сервисами. После переименования проекта библиотеки сервиса удалил и снова хочу добавить к host-проекту библиотеку-service. На первом шаге выбираю "Искать автоматически". На втором выбираю папку, где живет проект-библиотека, но среда ругается и выдает старое имя. Но я не могу найти, где именно среда находит это старое имя.
  9. Не запускается служба

    Использую стандартный пример из папки C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidNotificationServiceDemo\NotificationService Delphi Tokyo. Компилируется и запускается на устройстве. Нажимаю кнопку Start service, но ничего не происходит. Т.е. совсем ничего: ни ошибок, ни падений приложения, никаких сообщений. В какую строну копать? И вообще, как проверить, работает ли мой сервис? Я от крыл в настройках андроида "Запущенные программы", но там нет даже моего приложения в списке, хотя приложение запущено. Пробовал на Андроид версий 5 и 6.
  10. В приложении: procedure TForm7.Button1Click(Sender: TObject); var AIntent: JIntent; AServiceName: string; begin AIntent := TJIntent.Create; AServiceName := 'com.embarcadero.services.Service'; AIntent.setClassName( TAndroidHelper.Context.getPackageName(), TAndroidHelper.StringToJString( AServiceName ) ); AIntent.putExtra( TAndroidHelper.StringToJString( 'Code' ), 0 ); AIntent.putExtra( TAndroidHelper.StringToJString( 'Data' ), TAndroidHelper.StringToJString( 'DataString' ) ); TAndroidHelper.Activity.startService( AIntent ); end; В сервисе: procedure TDM.AndroidIntentServiceCreate(Sender: TObject); begin Toast( 'Create' ); end; procedure TDM.AndroidIntentServiceHandleIntent(const Sender: TObject; const AnIntent: JIntent); begin Toast( 'HandleIntent' ); end; Сообщение 'Create' показывается, а 'HandleIntent' нет. OnCreate срабатывает, но onHandleIntent не вызывается что бы я не делал. Может я что-то не так делаю?
  11. BroadcastReceiver в сервисе

    Собственно сабж, перенес из основной программы в сервис ничего не работает может чтото не так делаю подскажите смысл в том чтоб в сервисе обрабатывать входящие смс unit utMainsmsResolver; interface uses System.SysUtils, System.Classes, System.Android.Service, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Os, Androidapi.JNI.App, CSBroadcastReceiver, Androidapi.JNI.JavaTypes, IdHTTP, IdCoderMIME,RR.HTTPwider, Androidapi.Jni, Androidapi.Helpers, Androidapi.JNI.Provider, Androidapi.JNI.Net, Androidapi.JNIBridge, Androidapi.JNI.Telephony; type TDM = class(TAndroidIntentService) function AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; procedure AndroidServiceDestroy(Sender: TObject); private { Private declarations } public { Public declarations } procedure CreateBroadcastReceiver; procedure BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent); procedure CheckSmsInState(Context: JContext; Intent: JIntent); end; var DM: TDM; BroadcastReceiver: TCSBroadcastReceiver; implementation {%CLASSGROUP 'FMX.Controls.TControl'} {$R *.dfm} procedure TDM.CreateBroadcastReceiver; begin if not Assigned(BroadcastReceiver) then begin BroadcastReceiver:= TCSBroadcastReceiver.Create(nil); BroadcastReceiver.OnReceive:= BroadcastReceiverOnReceive; BroadcastReceiver.RegisterReceive; BroadcastReceiver.Add('android.provider.Telephony.SMS_RECEIVED',-1); end; end; procedure TDM.BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent); begin CheckSmsInState(csContext, csIntent); end; procedure TDM.CheckSmsInState(Context: JContext; Intent: JIntent); begin // чтото делаем с смс end; procedure TDM.AndroidServiceDestroy(Sender: TObject); begin if Assigned(BroadcastReceiver) then FreeAndNil(BroadcastReceiver); end; function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin CreateBroadcastReceiver; Result:=TJService.JavaClass.START_STICKY; //CreateBroadcastReceiver; end; пробовал метод CreateBroadcastReceiver вставлять и до и после start_sticky и в onCreate результат один ничего не происходит версия IDE - berlin повторюсь если в коде основной программы то все работает на ура
  12. Провел небольшое исследование поведения таймера Posix в сервисе. Результаты не очень. Таймер ведет себя так же как и в приложении, главное отличие - не умирает окончательно, но рассчитывать на него не стоит. Перед экспериментом было отключено энергосбережение, экономия трафика во сне (телефон работал через wifi), т.е. созданы все условия для долгой и стабильной работы. 2017-02-24 23:22:51 - телефон ушел в сон. Таймер начал работать эпизодически, с провалами до получаса. 2017-02-25 07:24:58 - я проснулся и разблокировал телефон. Таймер опять нормально заработал. В следующей серии попробую протестировать сервис с AlarmManager, что то у меня подозрения что результаты будут не лучше. 2017-02-25 07:27:58 Posix-таймер в сервисе. Запрос раз в 60 сек. № 108 2017-02-25 07:26:58 Posix-таймер в сервисе. Запрос раз в 60 сек. № 107 2017-02-25 07:25:58 Posix-таймер в сервисе. Запрос раз в 60 сек. № 106 2017-02-25 07:24:58 Posix-таймер в сервисе. Запрос раз в 60 сек. № 105 2017-02-25 07:21:05 Posix-таймер в сервисе. Запрос раз в 60 сек. № 104 2017-02-25 07:14:00 Posix-таймер в сервисе. Запрос раз в 60 сек. № 103 2017-02-25 07:01:59 Posix-таймер в сервисе. Запрос раз в 60 сек. № 102 2017-02-25 06:46:33 Posix-таймер в сервисе. Запрос раз в 60 сек. № 101 2017-02-25 06:24:50 Posix-таймер в сервисе. Запрос раз в 60 сек. № 100 2017-02-25 06:13:58 Posix-таймер в сервисе. Запрос раз в 60 сек. № 99 2017-02-25 05:51:32 Posix-таймер в сервисе. Запрос раз в 60 сек. № 98 2017-02-25 05:30:07 Posix-таймер в сервисе. Запрос раз в 60 сек. № 97 2017-02-25 05:16:28 Posix-таймер в сервисе. Запрос раз в 60 сек. № 96 2017-02-25 05:07:28 Posix-таймер в сервисе. Запрос раз в 60 сек. № 95 2017-02-25 05:00:41 Posix-таймер в сервисе. Запрос раз в 60 сек. № 94 2017-02-25 04:41:01 Posix-таймер в сервисе. Запрос раз в 60 сек. № 93 2017-02-25 04:21:19 Posix-таймер в сервисе. Запрос раз в 60 сек. № 92 2017-02-25 04:00:40 Posix-таймер в сервисе. Запрос раз в 60 сек. № 91 2017-02-25 03:41:33 Posix-таймер в сервисе. Запрос раз в 60 сек. № 90 2017-02-25 03:16:59 Posix-таймер в сервисе. Запрос раз в 60 сек. № 89 2017-02-25 03:02:01 Posix-таймер в сервисе. Запрос раз в 60 сек. № 88 2017-02-25 02:44:54 Posix-таймер в сервисе. Запрос раз в 60 сек. № 87 2017-02-25 02:23:49 Posix-таймер в сервисе. Запрос раз в 60 сек. № 86 2017-02-25 02:10:28 Posix-таймер в сервисе. Запрос раз в 60 сек. № 85 2017-02-25 01:52:11 Posix-таймер в сервисе. Запрос раз в 60 сек. № 84 2017-02-25 01:32:57 Posix-таймер в сервисе. Запрос раз в 60 сек. № 83 2017-02-25 01:28:26 Posix-таймер в сервисе. Запрос раз в 60 сек. № 82 2017-02-25 01:27:26 Posix-таймер в сервисе. Запрос раз в 60 сек. № 81 2017-02-25 01:26:26 Posix-таймер в сервисе. Запрос раз в 60 сек. № 80 2017-02-25 01:25:27 Posix-таймер в сервисе. Запрос раз в 60 сек. № 79 2017-02-25 01:10:59 Posix-таймер в сервисе. Запрос раз в 60 сек. № 78 2017-02-25 01:00:27 Posix-таймер в сервисе. Запрос раз в 60 сек. № 77 2017-02-25 00:38:59 Posix-таймер в сервисе. Запрос раз в 60 сек. № 76 2017-02-25 00:19:22 Posix-таймер в сервисе. Запрос раз в 60 сек. № 75 2017-02-25 00:01:27 Posix-таймер в сервисе. Запрос раз в 60 сек. № 74 2017-02-24 23:51:15 Posix-таймер в сервисе. Запрос раз в 60 сек. № 73 2017-02-24 23:30:37 Posix-таймер в сервисе. Запрос раз в 60 сек. № 72 2017-02-24 23:22:51 Posix-таймер в сервисе. Запрос раз в 60 сек. № 71 2017-02-24 23:21:51 Posix-таймер в сервисе. Запрос раз в 60 сек. № 70 2017-02-24 23:20:51 Posix-таймер в сервисе. Запрос раз в 60 сек. № 69 2017-02-24 23:19:51 Posix-таймер в сервисе. Запрос раз в 60 сек. № 68 2017-02-24 23:18:51 Posix-таймер в сервисе. Запрос раз в 60 сек. № 67 2017-02-24 23:17:52 Posix-таймер в сервисе. Запрос раз в 60 сек. № 66 2017-02-24 23:16:52 Posix-таймер в сервисе. Запрос раз в 60 сек. № 65
  13. Приветствую. Нужно в определенное время отправлять несколько смс сообщений, к примеру это может быть через час, день, неделю. Подскажите как лучше это реализовать. В виде Android фонового сервиса или при помощи AlarmManager? Я где-то пару месяцев назад уже пытался сделать фоновой сервис для другой задачи, но у меня ничего не получилось, программа закрывалась системой, в общем пришлось забросить. Возможно есть рабочий код на эту тему? Для Java готовых решений полно, а вот для Delphi пока нет стандартного примера сервиса (основы), который бы работал всегда в Android системе. Почему то сообщество медленно развивается. Заранее спасибо за советы, очень жду мнения опытных программистов.
  14. Привет. Есть код, который прекрасно работает в активити, но если вызывать его из сервиса, вылетает ошибка - Activity not found, maybe you are in a service , - т.к. нельзя использовать SharedActivityContext в сервисе. На StackOverflow есть несколько подобных вопросов, но все они для Явы. function GetConnectivityManager: JConnectivityManager; var ConnectivityServiceNative: JObject; begin ConnectivityServiceNative := SharedActivityContext.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); if not Assigned(ConnectivityServiceNative) then raise Exception.Create('Could not locate Connectivity Service'); Result := TJConnectivityManager.Wrap( (ConnectivityServiceNative as ILocalObject).GetObjectID); if not Assigned(Result) then raise Exception.Create('Could not access Connectivity Manager'); end; Наверняка кто-то уже сталкивался с этой проблемой, подскажите как ее решить. Спасибо. P.s. В сервисе нужно периодически поверять наличие интернета при помощи NetworkInfo.
  15. Использование LocationSensor в сервисе

    Помогите разобраться с проблемой запуска LocationSensor в сервисе Если запускаю в основном потоке работает, загорается заначек активности gps, координаты OK function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; Begin LocationSensor.Active := True; Result := TJService.JavaClass.START_STICKY; End; Но если пытаюсь запустить в потоке не работает function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; Begin LocationSensor.Active := True; Result := TJService.JavaClass.START_STICKY; TThread.CreateAnonymousThread( procedure() begin TThread.Synchronize(TThread.CurrentThread, procedure begin LocationSensor1.Active:=True; end); end).Start; end; Android 5.1 Samsung delphi 10.1
  16. И снова я к Вам за советом, господа. Задачка: пользователь кидает телефон в карман и в фоновом режиме программа сама проверяет каждые секунд 15 наличие новой строки в стринглисте, который цепляется с файла и пытается отправить http запрос. Как мне до этого подсказали копать надо в сторону сервисов. Что же, начал: создал сервис, прицепил к приложению, кинул на него таймер и http от indy, написал кучу кода. Как итог - сервис виден в процессах но таймер не срабатывает и ничего не происходит (запускаю приложение, что бы запустить сервис, выхожу из него и жду проверяя данные на сервере). Но происходит совсем ничего. Туда ли я вообще полез или это нужно реализовывать как то иначе? Стоит local сервис, может проблема в этом? Ниже в темах писали что таймер не работает или еще что, при компиляции ничего не ругается, хотя условий там море и т.д. Все данные которые мне нужно отправить цепляются из текстовых файлов и далее в TStringList.. Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме
  17. Из PlatformSDK (PlatformSDKs\android-sdk-windows\sources\android-23\android\support\v4\content\) портировал в Delphi класс TJLocalBroadcastManager. Это очень полезный класс, если вы не хотите рассылать сообщения по всей системе, а есть необходимость общаться только внутри приложения или между хост-приложением и сервисом. Во вложении сам класс, в своем приложении убедитесь, что в Target Platforms (Android) → Android → Libraries включена библиотека android-support-v4.dex.jar. Прилагаю пример, для изучения и использования в работе, который демонстрирует работу обычного BroadcastReceiver и LocalBroadcastReceiver. В примере демонстрируется работа сообщений в приложении и сервисе. Сначала делаем build проекта LBCRService, потом будет доступна возможность собрать LocalBCR. Собираю в Berlin 10.1, но на младших версиях тоже должно работать, по крайней мере в Seatlle. В реализации методов procedure RegisterReceiver(); procedure UnRegisterReceiver(); необходимо снять комментарий с соответствующих строчек, в зависимости от того, какой тип ресивера вы хотите использовать. Androidapi.JNI.LocalBroadcastManager.pas.zip LocalBroadCastReceiver.zip
  18. Debug сервиса

    У меня частые проблемы с дебагом сервиса (впрочем как и потоков). Какое-то время breakpoint-ы срабатывают, но через некоторое время я не могу попасть внутрь сервиса - дебаг начинает игнорировать точки останова, что я расставляю внутри сервиса. Например, ставлю breakpoint: function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin Log('DDD1 service started',[]); // сюда Result := TJService.JavaClass.START_STICKY; end; при вызове сервиса студия (в режиме дебага) зависает и через пару минут выдает: (программа на устройстве естественно тоже зависает и через какое-то время пишет Приложение не отвечает. Закрыть его?) Я пробовал делать Clean/Build сервиса (удалял папкe Android), пробовал удалять из программы сервис и добавлять его заново. Это не помогает. Надоело каждый раз собирать проект заново! Кстати, при установке программы с сервисом Android каждый раз выдает мне предупреждение: Я нажимаю всегда Отклонить - пока не нажмешь, студия висит ждет разрешения на запуск приложения. Что это за сообщение?
  19. NotificationCenter в сервисе

    Пытаюсь из сервиса выдать уведомление: procedure TAndroidServiceDM.SendNotify(AlertName,AlertBody:String); var Notification: TNotification; begin Notification := NotificationC.CreateNotification; try Notification.Name := AlertName; Notification.AlertBody := AlertBody; Notification.FireDate := Now; NotificationC.ScheduleNotification(Notification); finally Notification.DisposeOf; end; end; ... // пытаюсь вызвать SendNotify('Attention','Тревога'); Вроде не UI использую, но получаю ошибку Segmentation fault 11. Ошибка происходит в System.Android.Notification в строке 208-209 LaunchIntent := TAndroidHelper.Context.getPackageManager().getLaunchIntentForPackage(TAndroidHelper.Context.getPackageName()); AIntent.putExtra(TJNotificationInfo.JavaClass.EXTRA_ACTIVITY_CLASS_NAME, LaunchIntent.getComponent().getClassName()); Снова похоже на обращение к Activity (а может что-то другое). Есть решение как обойти эту проблему? PS. Delphi RX
  20. Таймер в сервисе

    Обычный TTimer использовать нельзя. Кстати почему нельзя? Почему он обращается к Активити в Androidapi.Helpers? Embarcadero исправьте уже свой баг. Как реализовать timer в сервисе?
  21. Android Service + GPS

    Здравствуйте, хочу собрать на сервисе сохранение местоположения в файл на мобильном, можете привести пример как это сделать? Сохранение должны идти к примеру в текстовый документ. Сервис работает, просто хочу разобраться как надо выполнять переодичное действие на нём.