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

Rusland

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

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

  • Посещение

  • Победитель дней

    26

Весь контент Rusland

  1. Можно какой-нибудь пример для ясности?
  2. Rusland

    GPS

    Видимо да http://docwiki.embarcadero.com/Libraries/XE8/en/System.Sensors.TLocationSensorType
  3. Rusland

    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 каждый раз выдает мне предупреждение: Я нажимаю всегда Отклонить - пока не нажмешь, студия висит ждет разрешения на запуск приложения. Что это за сообщение?
  4. Может быть установлена какой-нибудь чистильщик памяти (типа CleanMaster), который сервис убивает?... далее сервис восстанавливается, снова начинает передавать данные, чистильщик его снова убивает и так далее.
  5. Похоже вы внутри потока при Синхронизации берете данные из базы, потому и подвисает все
  6. YuraProff, попробуйте создать новый проект, добавить к нему новый сервис, прописать вызов как я написал в предыдущем сообщении и поставить breakpoint на строке if Length(LData) = 2 then
  7. В устройстве должен быть FM модуль чтобы на нем ловилось аналоговое радио. Но FM Radio Api в природе не существует, а следовательно никак не написать ни на Delphi, ни на Java
  8. 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];
  9. charmmany, может по UserAgent проверяют. Что у вас там прописано?
  10. Ответ со Stackoverflow действительно помог! Из папки source/fmx берем FMX.Platform.Android.pas кладем в папку с проектом. Меняем в нем следующие процедуры: procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure); begin //MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc)); CallInUIThread( procedure() begin Proc; end); end; procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure); //var // Runner: TSimpleProcedureRunner; begin // CallInUIThread( // procedure() // begin // Runner := TSimpleProcedureRunner.Create(Proc); // MainActivity.runOnUiThread(Runner); // Runner.Event.WaitFor; // end); CallInUIThreadAndWaitFinishing( procedure() begin Proc; end); end; procedure TPlatformAndroid.SetClipboard(Value: TValue); //var // Setter: TClipboardSetter; //begin // Setter := TClipboardSetter.Create(Value.ToString); // TAndroidHelper.Activity.runOnUiThread(Setter); // Setter.Done.WaitFor(INFINITE); var Setter: TClipboardSetter; begin Setter := TClipboardSetter.Create(Value.ToString); CallInUIThread( procedure() begin SharedActivity.runOnUiThread(Setter); end); Setter.Done.WaitFor(INFINITE); end; function TPlatformAndroid.GetClipboard: TValue; //var // Getter: TClipboardGetter; //begin // Getter := TClipboardGetter.Create; // TAndroidHelper.Activity.runOnUiThread(Getter); // Getter.Done.WaitFor(INFINITE); // Result := Getter.Value; var Getter: TClipboardGetter; begin Getter := TClipboardGetter.Create; CallInUIThread( procedure() begin SharedActivity.runOnUiThread(Getter); end); Getter.Done.WaitFor(INFINITE); Result := Getter.Value; end; Запускаем и при нажатии на Edit или Memo клавиатура нормально появляется. PS. Надеюсь Embarcadero исправит эту проблему в новой версии. Да, помогло Видимо словить такой глюк могут аппараты Lenovo - что-то в их виртуальной клавиатуре не как у всех PS. Вопрос Бровину Ярославу: Будет ли исправлен Androidapi.Helpers.pas? Постоянно с ним какие-нибудь проблемы. В сервисах его даже подключать опасно, обязательно вылезают ошибки касающиеся TAndroidHelper.Activity С уважением, ... дата... подпись
  11. В новом проекте та же ошибка (у меня Delphi 10 Seattle) В манифесте эта строчка есть. Что она означает? ничего из написанного там не понял, тем более что там про JAVA
  12. Не обязательно вызывать фокус программно, достаточно просто пальцем ткнуть в Memo, как появляется ошибка
  13. c_breaker, спасибо за пример. Здесь еще одно демо проигрывания звуковых файлов.
  14. umkes, не знаю одно и то же ли мы видели... Вот этот япона-сайт... там в uses используется android.app.AlarmManager, но где его взять не говорится. PS. сайт китайский оказывается )
  15. Ярослав 2 года назад обещал разобраться и рассказать про него... вот сидим ждем А если серьезно, то это очень интересная тема, поиски в интернете не привели ни к чему (кроме какого-то японского недоделанного кода)
  16. Rusland

    OnValidateServerCertificate NetHTTPClient

    На NetHTTPClient пытаюсь назначить обработчик OnValidateServerCertificate: type TFrmMain = class(TForm) ... procedure OnAuthEvent(const Sender: TObject; AnAuthTarget: TAuthTargetType; const ARealm, AURL: string; var AUserName, APassword: string; var AbortAuth: Boolean; var Persistence: TAuthPersistenceType); procedure OnValidateServerCertificate(const Sender: TObject; const ARequest: TURLRequest; const [Ref] Certificate: TCertificate; var Accepted: Boolean); function TFrmMain.GetResponse2(aURL: string): TResponser; var Ss: TStringStream; NetHTTPClient2:TNetHTTPClient; Respon: IHTTPResponse; begin try NetHTTPClient2:=TNetHTTPClient.Create(nil); NetHTTPClient2.OnAuthEvent:=OnAuthEvent; NetHTTPClient2.OnValidateServerCertificate:=OnValidateServerCertificat; // ошибка компиляции ... with NetHTTPClient2 do begin Ss:=TStringStream.Create('', TEncoding.UTF8); Respon:=Get(aURL,ss); end; finally NetHTTPClient2.Free; end; end; procedure TFrmMain.OnValidateServerCertificate( const Sender: TObject; const ARequest: TURLRequest; const [Ref] Certificate: TCertificate; var Accepted: Boolean); begin Accepted:=true; end; Получаю ошибку: Incompatible types: 'Parameter lists differ' Как правильно сделать?
  17. Rusland

    GPS

    Когда я отключаю GPS и WiFi, от LocationSensor координаты все равно идут... только редко
  18. Ссылку на юнит видно http://zarko-gajic.iz.hr/wp/wp-content/uploads/2013/12/FMX-DelphiZXIngQRCode.zip А на проект нет
  19. Если приложите код проекта, то больше шансов что кто-то рассмотрит и поможет
  20. Подозреваю что проблема в использовании Andropidapi.Helpers в сервисе. (Багрепорт) Можно как-то от нее избавиться? Сейчас она нужна для функции StringToJString. Intent.setType(StringToJString('text/pas')); Можно ли чем-то заменить? PS. Изменения в Andropidapi.Helpers согласно багрепорту не помогли
  21. Я менял ссылку, на проверенную, все равно отказывается скачивать. Так, создал проект с нуля, подцепил ту же процедуру и она работает, уведомление в шторку приходит... видимо в старом проекте что-то используется что мешает работе... воспроизвести ошибку не удается. Стоп, опять проявилась болезнь... В общем это происходит после того как я добавляю в программе в AndroidManifest.template.xml: для общения через Intent. Проект приложил, проверьте пожалуйста. NotificationAppService.zip
  22. Кстати, в последнее время у меня не работает стандартный пример DownloadServiceDemo (а может и никогда не работал). Возможно эти два случая как-то связаны.
  23. 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. Сейчас пересоздам пустой проект, начну наполнять его тем же что есть в моем изначальном проекте и постараюсь воспроизвести ошибку.
  24. ZuBy, я уже слышал это от вас раза три. Покажите пожалуйста как из приложения через Intent отправить сообщение в сервис (обратно я уже умею). Ответьте пожалуйста по существу в эту тему. Заранее благодарен
×
×
  • Создать...