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

Pax Beach

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

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

  • Посещение

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

    12

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

  1. В 25.08.2018 в 17:54, gutalin79 сказал:

          В System.Android.SensorsDD тоже что-то такое есть.

          Addr.AdminArea       := JStringToString(LAddress.getAdminArea);
          Addr.CountryName     := JStringToString(LAddress.getCountryName);
          Addr.CountryCode     := JStringToString(LAddress.getCountryCode);
    ........
          Addr.SubLocality     := JStringToString(LAddress.getSubLocality);
          Addr.SubThoroughfare := JStringToString(LAddress.getSubThoroughfare);
          Addr.Thoroughfare    := JStringToString(LAddress.getThoroughfare);

    только я так и не вытащил город или улицу и т.д....

    У большинства пользователей, если не у всех, эти параметры, касаемо адреса, будут занулены.

    Без интернета и API (того же гугла) этот вопрос не решить.

     

  2. 13 часов назад, gutalin79 сказал:

    Такая же проблема! А еще не понятно как вытащить адрес...

    Для работы локатора в свернутом приложении, стоит работу с GPS вынести в сервис. Понятно, что это только для Android.

    Вытащить адрес, видимо речь о почтовых адресах, нужно использовать API Google services, у них такое есть.

     

  3. 2 минуты назад, progilic сказал:

    hi

     

    I have a problem

    [dcc32 Fatal Error] FGX.Asserts.pas(159): F2039 Could not create output file 'c:\program files (x86)\embarcadero\studio\19.0\lib\Win32\Debug\FGX.Asserts.dcu'

    Сообщение об ошибке справедливое.

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

     

  4. В 16.04.2018 в 05:16, beklexx сказал:

    Хмм, тогда интересно, является ли триангуляция/определение по wi-fi mock location?

    Хотя это не логично, я так понял mock это разрешение получать gps не от сенсора. Тогда интересует, с какой версии андроида идёт ограничение на mock? 

    C 5-й, если правильно все помню.

  5. В 13.04.2018 в 07:25, beklexx сказал:

    Случаем, не нашли решение?

    Просто не давать права на mock location. В новых версиях Android mock можно использовать только для приложения, у которого такое разрешение включено.

  6. 3 часа назад, x11 сказал:

    Нашёл в логах андроида при смахивании приложения с экрана:

    Т.е. служба почему-то закрывается аварийно.

     

    Broadcast reciever создавался в событии StartCommand, продублировал ещё и в OnCreate DataModule.

    Как обычно — причин может быть много.

    Здесь читающих мысли и чужой код из астрала не встречал, нужно код смотреть.

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

  7. 56 минут назад, x11 сказал:

    Подскажите, что нужно изменить в Ваших примерах, чтобы реагировать не на внутренние сообщения, а на внешние? Например, на звонки.

    В коде есть комментарии на русском языке голубым по синему:

    // Глобальные сообщения

    и

    // Локальные сообщения
     

    соответственно то, что ниже этих комментариев, относится к локальному или глобальному ресиверу.

     

  8. 34 минуты назад, x11 сказал:
    
    function TDM.AndroidServiceStartCommand( ...
    ..
    ..
    
      if Action = 'KillApplication' then
      begin
        Log('"Die! command geted');
        Intent.setAction(StringToJString('StartService'));
    
        TJActivityManager.Wrap(ILocalObject(LJO).GetObjectID).killBackgroundProcesses(StringToJString('com.embarcadero.LocalBCR'));
      end;

    А зачем StartService в KillApplication?

    А где в вызове killBackgroundProcesses используется этот интент? — нигде.

    Поэтому незачем.

    Я же говорю — Осталось от предыдущего кода.

  9. 9 часов назад, x11 сказал:
    
    procedure TfmMain.btStopServiceStartCommandClick(Sender: TObject);
    begin
      Log('Service to be stoped by StartCommand');
      FService := TJIntent.Create;
      FService.setClassName(TAndroidHelper.Context.getPackageName(),
        TAndroidHelper.StringToJString('com.embarcadero.services.LBCRService'));
      FService.setAction(StringToJString('StopService'));
      TAndroidHelper.Activity.startService(FService);
    end;

     

    а зачем здесь "startService" последней строкой?

    StartCommand вызывается каждый раз, когда мы вызываем из приложения StartService.

    А как обрабатывать намерение (Intent) переданный в этот метод — это наше дело.

    У меня в этой команде обрабатывался и старт и стоп.

    Убивать приложение через KillBackgroundProcess не обязательно, это осталось от моего другого приложения, где выгрузить процесс из памяти было критичным.

     

  10. 19 часов назад, x11 сказал:

    Пока я не понял, что прописать в XML

    
    <receiver android:name=".OutgoingCallReceiver" >

    вместо ".OutgoingCallReceiver"

    Нет Дельфи под рукой, трудно подсказать.
    А можно весь манифест увидеть, и monitor log желательно, права в проекте все предоставлены?

    Кстати Android какой, а то может права дополнительно Runtime запрашивать надо?

    На форуме есть все примеры для этого.

    Свой пример писал кажется под Android 5.0.

     

    JSON

    В 01.06.2016 в 15:07, krapotkin сказал:

    тут уже не раз хвалили, и я в том числе, X-SuperObject

    Да, очень удобная библиотека.

    Денек позаморачиваться — для дельфиста в новинку.
    Зато потом с API общаться вообще нет проблем.

     

  11. Я предлагаю использовать вызовы методов этого интерфейса. Уже все написано за вас.

    Не зная, как пользоваться Android Developer, под Android не получится ничего толкового написать.

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

    Предполагаю, что здесь https://developer.android.com/reference/android/telephony/TelephonyManager.html

     

  13. Сто пятьсот причин. Я бы плясал от версии андроид, наличие прав на сохранение файлов у приложения, куда приложение установлено, куда пишется файл.

    Примерно в такой последовательности.

  14. В 11.09.2017 в 17:09, Rusland сказал:

    Проверил, запускает и работает (Xiaomi Redmi Note 4 MIUI Global 8.5).

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

     

     

    Проблема в MUI.

    Предполагаю, что надо искать решение в запросе разрешений на уведомления, разбудить телефон, показать приложение поверх других окон, еще что-нибудь такое. Потому что в MUI большой упор на энергосбережение, безопасность и спам.

    Я замучился уже с MUI, не для разработчиков ось =)

  15. 3 минуты назад, MikeWuzHere сказал:

    Вроде писал start sticky, но почему то по выходу с приложения и сервиса не видно. С логами не разобрался как работать, но вот вроде что то нарыл (до этого видел что туда летят координаты).

    592d0eb0736bc_.png.43c3d68ca30bfad7884457bac1b9d0a4.png

    Судя по логам по завершеню работы самой программы - умирает и сервис, но старт стики почему то не срабатывает О_О

    Что-то не так в логах. Фигурирует три пакета com.embarcadero... А должно быть максимум два.

    Надо всё почистить и заново собрать. Если не заработает, смотреть код.

    GPS трекер отлично работает нас телефонах. Только Xiomi не победил пока.

  16. 1 час назад, MikeWuzHere сказал:

    Андроид (Le Eco Le 2, самсунг гал 3), 10 seattle. Проблема в том, что как только чистится память или закрывается приложени в ручную умирает и сервис, точнее не сам сервис, а координаты идти перестают.

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

    Лог монитор в помощь. Что показывает?

  17. 16 минут назад, Barbanel сказал:

    Поставили такую же задачу - удалять оставшиеся фото из галереи.

    Взяли за основу твое решение - работает через раз, и только при отладке:

    - перед созданием фото получаем id последнего фото (id_last)

    - фотографируем

    - ищем все id которые больше id_last и удаляем их.

    На последнем шаге и получаем фейл - из под работающего приложения никогда не возращаются id больше id_last. Из под отладки - получаем лишь иногда. Причем если в момент отладки переключиться в галерею, то там есть свежие фото.

    Есть идеи, в какую сторону копать? Может перед vCursor := vContent.query(...) нужно какой кеш обновить?

    Сразу приходит в голову разумная пауза перед запросом. Не пробовали?

  18. HBITMAP — это и есть VCL.TBitmap

    var
      hWinDC   : THandle;
      w, h     : integer;
      tmpStream: TMemoryStream;
    begin
      GetTargetDimensions(w, h);
      hWinDC           := GetWindowDC(TargetHandle);
      BitmapVCL.Width  := w;
      BitmapVCL.Height := h;
      hWinDC           := GetWindowDC(TargetHandle);
      BitBlt(BitmapVCL.Canvas.Handle, 0, 0, BitmapVCL.Width, BitmapVCL.Height, hWinDC, 0, 0, SRCCOPY);
      ReleaseDC(TargetHandle, hWinDC);
      tmpStream := TMemoryStream.Create;
      try
        BitmapVCL.SaveToStream(tmpStream);
        BitmapFMX.LoadFromStream(tmpStream);
      finally
        tmpStream.Free;
      end;
    end;

     

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