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

YuraProff

Пользователи
  • Постов

    21
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные YuraProff

  1. 2 часа назад, POV сказал:

    Эээ, а текст не оказывается выделенным из-за чего, собссно, и был далее удалён?

    Визуально выделения нету. Это воспроизводится даже на простом проекте в который добавлен только один TEdit без каких либо обработчиков. За все устройства говорить не могу, но точно на Samsung, Mizu.

  2. Android,

    Berlin

    В поле TEdit 5 символов, делаем Tap по последнему символу, курсор стает за последним символом, нажимаем BackSpace и все поле очищается. Можно как то сделать что бы последний символ удалялся а не все символы в поле?

  3. Может быть установлена какой-нибудь чистильщик памяти (типа CleanMaster), который сервис убивает?... далее сервис восстанавливается, снова начинает передавать данные, чистильщик его снова убивает и так далее.

     

    Скорее всего телефон переходит в режим экономии энергии. И просто все что ему не нравится тушит. Я буквально сегодня решил эту проблему просто перешел на Push уведомления.

  4.  

    YuraProff, сам пример DownloadServiceDemo у меня тоже не работает, но в нем есть то что в вам нужно - вызов сервиса делается не стандартным способом типа:

    TLocalServiceConnection.StartService('DownloadService');
    

    а вот так:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      LIntentService: TIntentServiceHelper;
      LURL: string;
      LFilename: string;
    begin
      LURL := Edit1.Text;
      LFilename := Edit1.Text.Substring(Edit1.Text.LastIndexOf('/') +1);
      LIntentService := TIntentServiceHelper.Create('DownloadService', 0, LURL + '|' + LFilename);
      TAndroidHelper.Activity.startService(LIntentService.Intent);
    end;
    

    то есть мы не просто вызываем сервис, но и передаем параметры через Intent.

     

    В сервисе принимаем и разбираем строку:

      LTIntentService := TIntentServiceHelper.Create(Intent);
    
      LData := LTIntentService.Data.Split([Char('|')]);
      if Length(LData) = 2 then
      begin
        URL := LData[0];
        LFileName := LData[1];
    

     

    Именно это и не работает. То-есть стандартным способом все хорошо, а вот именно через intent сам пример не работает. То-есть я взял пример, выполнил требования все пункты файла readme.txt, заливаю на устройство (Планшет Sumsung) в Debug и все тишина, то-есть сам пример не работает почему-то, может я что то не так делаю, но использовал другие устройства, пересматривал что я не так делаю 20 раз, результата ноль. Этот пример у всех работает нормально?

  5. в демке все показано, общение идёт через Intent

    DownloadServiceDemo просто не работает, не передается там intent в сервис, и даже дебагер не заходит в функцию AndroidServiceStartCommand. Делаю все по инструкции из файла readme.txt.

  6. Кто нибудь использовал Remote Service. Есть ли у кого нибудь пример использования, или какая нибудь информация, поскольку в Demo проектах ничего я не нашел про Remote Service, только про Local Service.

     

    Также можете мне далекому по народному объяснить: в дизайнере создания сервиса есть 4 типа, есть описание на английском, только ни как не могу понять практическое применение каждого из них.

     

    Спасибо. 

  7. Кстати, в последнее время у меня не работает стандартный пример DownloadServiceDemo (а может и никогда не работал). Возможно эти два случая как-то связаны.

     

     

    У меня и до не работала, хотя просто подозреваю что в примере не корректная ссылка на изображение

  8.  

    Cтандартный пример \Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidNotificationServiceDemo\NotificationServiceDemo.groupproj

    не содержит никаких интент (ZuBy, где вы их там увидели?), здесь простейший код:

     
    function TNotificationServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags,
      StartId: Integer): Integer;
    begin
      LaunchNotification;
      JavaService.stopSelf;
      Result := TJService.JavaClass.START_STICKY;
    end;
    
    procedure TNotificationServiceDM.LaunchNotification;
    var
      MyNotification: TNotification;
    begin
      MyNotification := NotificationCenter1.CreateNotification;
      try
        MyNotification.Name := 'ServiceNotification';
        MyNotification.Title := 'Android Service Notification';
        MyNotification.AlertBody := 'RAD Studio 10 Seattle';
        MyNotification.FireDate := IncSecond(Now, 8);
        NotificationCenter1.ScheduleNotification(MyNotification); // Segmentation Fault 11
      finally
        MyNotification.Free;
      end;
    end; 
    
    

    и он у меня РАБОТАЕТ.

     

    Но как только я переношу процедуру в свой проект, то на строке NotificationCenter1.ScheduleNotification(MyNotification);

    вылетает Segmentation Fault 11.

     

    Сейчас пересоздам пустой проект, начну наполнять его тем же что есть в моем изначальном проекте и постараюсь воспроизвести ошибку.

     

     

    Я попытался использовать Ваш пример вызова приложения из сервиса, и столкнулся именно с такой же ситуацией, если из манифеста убрать лишние фильтры, то работает центр нотификации, но перестает работать вызов, если добавить обратно то перестает работать центр нотификации но работает вызов. Как исправить не знаю, но у меня было такое наблюдение.

  9. Добрый день!

     

    Ситуация следующая есть сервис который работает в фоне. Он каждых 10 секунд обращается на сервер и забирает данные через TidUDPServer. Если устройство разблокировано, то все нормально каждые 10 сек идет обмен данными, если устройство заблокировать через кнопку Power то первые 20 сек все работает нормально, потом просто напросто пакеты начинают ходить каждые 1-2 минуты, иногда дольше иногда быстрее. Предполагаю что когда телефон блокируется он переходит в состояние экономии энергии, но телефонная звонилка нормально живет и остальные приложения тоже, хотя наверно там немного другая организация. 

     

          Вопрос у меня такой: можно ли повысить уровень приоритета сервиса, или еще каким нибудь способом заставить его нормально работать, и не тормозить на токае длительное время. 

     

    Спасибо.

  10. Ну, фейсбуком, я не пользуюсь. В любом случае, я не встречал ни одной программы, которая могла бы разблокировать экран. Фейсбук снимает блокировку устройства? Более того, считаю, что такое можно реализовать только с рут-правами, да и то... есть сомнения. Надо читать Андроид АПИ и стековерфлоу :)

     

    Ап. Покопался малость в апи, для отвода блокировки на задний план, можно попробовать использовать флаг "FLAG_SHOW_WHEN_LOCKED", как только форму закроют, экран блокировки вернётся на своё место. Но разблокировать залоченное устройство не получится.

     

    Ап.2. Для блокировки "провести пальцем" можно использовать флаг "FLAG_DISMISS_KEYGUARD"

     

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

  11. Простите, а зачем?

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

     

    Вопрос: на... в смысле, зачем я буду держать на своем устройстве такое приложение?

     

    "Правильные" приложения показывают уведомление в "шторке", сопровождаемое звуковым сигналом. Услышал пользователь - сам разблокировал экран и пошел разбираться. Не услышал - значит чем-то занят, нечего его беспокоить.

     

    Если это приложение ориентировано для функций охраны, то нужно и уведомить что произошла тревога, и показать на экране, и воспроизвести звук, приложение ориентируется на разных людей, некоторые из них могут быть просто слабо слышать, а телефон будет не в кармане. Но по моему: проще в настройках самого приложения запретить/разрешить вызывать тревожную форму, нежели просто решать за пользователя надо это ему или нет. Я реально пока еще не видел "Правильных" охранных приложений которые бы о тревоге сообщали в шторку, и тихо молчали.

     

    Просто предполагаю что просто наверно никто не занимался этим вопросом поскольку просто не было необходимости. 

  12. Добрый день в поиске копался, адекватных ответов не нашел.

    Хотел бы поинтересоватся: есть Android Local Service, есть Multi-Device Application, как с приложения сервису передать параметры?

    Например строку или число.

     

    Спасибо

×
×
  • Создать...