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

Pax Beach

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

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

  • Посещение

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

    12

Активность репутации

  1. Like
    Pax Beach получил реакцию от Kitty в Как закрыть процесс стандартного приложения?   
    Получилось использовать android.os.Process.killProcess, к сожалению, на С++ перекладывать не умею.
    Пример в теме по ссылке.
  2. Like
    Pax Beach получил реакцию от Евгений Корепов в Работа с классом android.os.Process   
    Для работы с процессами Android портировал библиотеку android.os.Process. (UPD: API 21, Android 5.0.1)
    Можно получить информацию о процессах системы и управлять отдельными процессами.
    Меня интересовал вопрос убийства процесса из самого себя, в частности метод killProcess.
    В результате использования портированной библиотеки, получился такой компактный код:
    TJProcess.JavaClass.killProcess(TJProcess.JavaClass.myPid); Пожалуйста, пользуйтесь.
     
    Androidapi.JNI.Os.Process.pas.zip
  3. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в Динамическая подгрузка картинок в ListView   
    Привет Всем!
    Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.
    я взял картинки пользователей этого форума

    Seattle LVdynamicLoadBitmap.zip
    Berlin LVdynamicLoadBitmap(Berlin).zip
  4. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток   
    Вот посмотрите эту тему, там есть пример который вам поможет
  5. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в Вопрос по компонентам   
    Вот так делал для себя
    PresentedButtonsRecalPosition.7z
  6. Like
    Pax Beach отреагировална fsdb в как узнать из сервиса запущено ли основное приложение?   
    Как узнать из сервиса запущено ли основное приложение? допустим я в сервисе слежу за критичными параметрами и раз в минуту посылаю http запрос, и если приложение не запущено посылаю в шторку уведомление. если приложение запущено, то смысла нет в сервисе посылать сообщения в шторку. и собственно хочу из сервиса хочу знать - как узнать из сервиса запущено ли основное приложение?
  7. Like
    Pax Beach отреагировална konung в [Руководство] Отладка программы на Android устройстве через Wi-Fi   
    Чуток добавлю (тоже интересовался), но сразу оговорюсь - ещё не пробовал:
     
    От тут про отладку по wifi несколько ссылок (android вообще, не к BDS привязано):
    http://vadimrm.livejournal.com/179949.html
     
    И в частности комрад дает ссылки на ADB коим не нужен root:
    https://play.google.com/store/apps/details?id=com.sherdle.adbwireless
    http://sherdle.com/adb/
  8. Like
    Pax Beach отреагировална AndreyS в Распространение ПО для OSX   
    Доброго всем дня. Столкнулся со следующей проблемой:
    Есть приложение для OSX, написанное на FMX (.app, упакованное в dmg). Если пользователь скачивает это приложение с сайта (сторонний сайт, не AppStore), то при запуске OSX говорит, что это приложение нельзя запускать, т. к. неизвестен издатель и пр. Так вот, что конкретно нужно сделать с этим приложением (перед деплоем или уже после), чтобы OSX не ворчала? Просто хочется заранее узнать, до того, как заплатить $99 для подключения к Developer program. Заранее спасибо.
  9. Like
    Pax Beach получил реакцию от zairkz в GCMIntentService или Multiline Push and Local Notification   
    Жалко, что смог только сейчас подключиться к теме.
    Спасибо большое за ваше решение!
    Если говорить о больших Notifications, хотелось бы не просто весь текст всех уведомлений читать на экране, а разворачивать только те, что заинтересовали. Т.е. сделать у себя расширяемые и управляемые (с кнопками) уведомления. И хотелось бы, делать это без импорта дополнительных JAVA классов, если уж Embarcadero предоставляет нам возможность делать мосты, а Android SDK содержит все необходимые классы.
    К сожалению, я завис на своем проекте, и не могу сейчас предоставить готовый PAS код. Но вот, с чего бы я начал в первую очередь:
    1. Взял пример работы с GSM из \Embarcadero\Studio\18.0\source\rtl\common\System.Android.Notification.pas;
    2. Использовал порт \Embarcadero\Studio\18.0\source\rtl\android\Androidapi.JNI.Support.pas или выдернул последний из SDK
    3. Изучил готовые примеры на Java, которые используют bigText и setAction;
    4. Сделал бы свой Unit (компоненты я не научился пока хорошо делать) для работы с Big Smart Notifications (название сам придумал).
     
    Удачи в этом. Ваши исследования очень полезны для нас.
     
  10. Like
    Pax Beach получил реакцию от PowerOwl в Использование нативных LocalBroadcastManager и BroadcastReceiver   
    Из 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
  11. Like
    Pax Beach получил реакцию от Kitty в Как закрыть процесс стандартного приложения?   
    var LJO: JObject; AM: JActivityManager; begin try LJO := TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE); AM := TJActivityManager.Wrap((LJO as ILocalObject).GetObjectID); Log('Try to kill ' + JStringToString(TAndroidHelper.Context.getPackageName())); AM.killBackgroundProcesses(TAndroidHelper.Context.getPackageName()); except Log('Can not Access Activity Service!'); end; end; Этот код у меня работает.
    Добавил разрешение:
        <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
     
    Еще есть такая тема
     
  12. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в GCMIntentService или Multiline Push and Local Notification   
    то о чем вы говорите, действует для локальных уведомлении.
    С пушами (те что генерит GCM) обстоит немного иначе, тут именно нужен java код и правки в классе который публикует нотификации.
    При реализации расширенных уведомлении, нужно будет библиотеку писать под каждый отдельный проект (что в принципе и правильно)
    А это решение универсальное, который даёт пользователям просматривать полный текст и разработчикам "свободу слова"
    это кстати так и работает,
    когда уведомление одно в шторке, оно показывается на полную, когда много любое можно раздвинуть и прочитать
  13. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в TNotification с переносом строк   
    теперь можно сделать
    http://fire-monkey.ru/topic/2965-gcmintentservice-или-multiline-push-notification/#comment-17705
  14. Like
    Pax Beach получил реакцию от Ingalime в Использование нативных LocalBroadcastManager и BroadcastReceiver   
    Из 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
  15. Like
    Pax Beach отреагировална Kitty в Как закрыть процесс стандартного приложения?   
    Чтобы убить процесс нужной программы на андроид устройстве разработчикам java справка дает такую рекомендацию:
    Можно ли эту рекомендацию применить в Delphi/C++ Builder? Если да то, как будет выглядеть этот код? Я пробовала использовать альтернативную эту рекомендацию: Delphi Android ActivityManager
    ActivityManager.killBackgroundProcesses(String packageName) Но в С++ этот PAS файл у меня не заработал.
  16. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в Скайп или видео связь   
    у скайпа есть такие штуки
    [android] https://msdn.microsoft.com/en-us/library/office/dn745884.aspx [ios] https://msdn.microsoft.com/en-us/library/office/dn745885.aspx
  17. Like
    Pax Beach получил реакцию от Alex Bozhko в Открытие окна настроек Wi-Fi, Способ определения координат   
    Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.
    Качайте, кому нужно.
     
    TestWifi.zip
  18. Like
    Pax Beach отреагировална Rusland в TMapsEngine   
    enatechno, kitty спасибо. Уже выложили. 
     
    Даже ZuBy там засветился c TMapsEngine  
  19. Like
    Pax Beach отреагировална Tyler Durden в THTTPClient не работает при слабом сигнале   
    I Recommend threading it, here is a quick threading example that works for fmx. simple project with a button and a memo, uses System.Net.Httpclientcomponent
    procedure TForm1.Button1Click (Sender: TObject); begin TThread.CreateAnonymousThread (procedure () var body: tstringstream; http: tnethttpclient; begin http: = TNetHTTPClient.Create (nil); body: = TStringStream.Create; try http.Get ( 'https://www.google.com',body); tthread.Synchronize (nil, procedure begin memo1.text: = body.DataString; end); finally http.free; body.free; end; end).Start; end;  
  20. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в [Android] [XE7] Как получить GPS координаты без компонента?   
    если брать реализацию для андроида, то есть решение без сенсора в этой  теме
    там в первом сообщении, вложение
  21. Like
    Pax Beach отреагировална Brovin Yaroslav в [Android] [XE7] Как получить GPS координаты без компонента?   
    TThread.Synchronize; Вызывать из кода обработчика таймера Чтобы понять, как это происходит, нужно почитать о том, как работает UI Thread (например тут). В этой статье, как раз рассказывает, что такое лупер и как организуется "якобы многозадачность" (отрисовка, обработка событий и тд) в рамках одного треда. Синхронизация не передает контекст. В данном случае контекст привязан к потоку. Он является частью потока. Поэтому по сути, когда вы синхронизируете (по сути просто вызываете ваш код из лупера, то по сути вы уже работаете в контексте :-) Если заглянуть в исходники андроида:
    public final class Looper { // Вырезан код public static void loop() { final Looper me = myLooper(); if (me == null) { throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread."); } final MessageQueue queue = me.mQueue; // Make sure the identity of this thread is that of the local process, // and keep track of what that identity token actually is. Binder.clearCallingIdentity(); final long ident = Binder.clearCallingIdentity(); for (;;) { Message msg = queue.next(); // might block if (msg == null) { // No message indicates that the message queue is quitting. return; } // This must be in a local variable, in case a UI event sets the logger Printer logging = me.mLogging; if (logging != null) { logging.println(">>>>> Dispatching to " + msg.target + " " + msg.callback + ": " + msg.what); } msg.target.dispatchMessage(msg); if (logging != null) { logging.println("<<<<< Finished to " + msg.target + " " + msg.callback); } // Make sure that during the course of dispatching the // identity of the thread wasn't corrupted. final long newIdent = Binder.clearCallingIdentity(); if (ident != newIdent) { Log.wtf(TAG, "Thread identity changed from 0x" + Long.toHexString(ident) + " to 0x" + Long.toHexString(newIdent) + " while dispatching to " + msg.target.getClass().getName() + " " + msg.callback + " what=" + msg.what); } msg.recycleUnchecked(); } } ///------------------------------ } То есть по сути это просто бесконечный цикл, в котором из очереди вытаскиваются задания и выполняются по очереди. Как только возникает событие, оно просто складывается в очередь, и лупер в UI треде его просто обрабатывает. Когда вы вызываете TThread.Synchronize, то в конечном итоге ваш код завернется в сообщение, которое будет вызвано из этого куска кода
  22. Like
    Pax Beach отреагировална Brovin Yaroslav в [Android] [XE7] Как получить GPS координаты без компонента?   
    Эта реализация с Posix таймерами работает в отдельном треде. Который никак не связан с джава и андроидом. Поэтому, если вы хотите работать с сенсорами, вам достаточно синхронизировать вызов с главным тредом.
  23. Like
    Pax Beach получил реакцию от Kitty в Вызов приложения из нофитикейшена   
    У меня почему-то умирает приложение, я так подозреваю, что в момент, когда приходит сигнал от устройства.
    Последнее сообщение в monitor, что сервис запущен. А потом:
    06-24 20:15:22.894: I/art(5078): Thread[2,tid=5083,WaitingInMainSignalCatcherLoop,Thread*=0xb9c54f00,peer=0x12d200a0,"Signal Catcher"]: reacting to signal 3 06-24 20:15:23.036: I/art(5078): Wrote stack traces to '/data/anr/traces.txt'  
    UPD:
    А... пардон. Доблестные документаторы забыли дописать, что для приложения нужно установить разрешения на работу с BlueTooth
    <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />  
    UP-UPD:
    Все приходит, монитор сообщает о событии в сервисе каждые несколько секунд:
    06-24 20:27:29.121: I/info(14450): Beacon1BeaconProximity: {B9407F30-F5F8-466E-AFF9-25556B57FE6D}
    06-24 20:27:29.121: I/info(14450): Beacon1BeaconProximity: {B9407F30-F5F8-466E-AFF9-25556B57FE6D} Правда Notification вылетает в StatusBar только по первому событию, а потом, молчит. Думаю, что Bluetooth здесь уже не причем.
     
  24. Like
    Pax Beach получил реакцию от master webs в Вызов приложения из нофитикейшена   
    У меня почему-то умирает приложение, я так подозреваю, что в момент, когда приходит сигнал от устройства.
    Последнее сообщение в monitor, что сервис запущен. А потом:
    06-24 20:15:22.894: I/art(5078): Thread[2,tid=5083,WaitingInMainSignalCatcherLoop,Thread*=0xb9c54f00,peer=0x12d200a0,"Signal Catcher"]: reacting to signal 3 06-24 20:15:23.036: I/art(5078): Wrote stack traces to '/data/anr/traces.txt'  
    UPD:
    А... пардон. Доблестные документаторы забыли дописать, что для приложения нужно установить разрешения на работу с BlueTooth
    <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />  
    UP-UPD:
    Все приходит, монитор сообщает о событии в сервисе каждые несколько секунд:
    06-24 20:27:29.121: I/info(14450): Beacon1BeaconProximity: {B9407F30-F5F8-466E-AFF9-25556B57FE6D}
    06-24 20:27:29.121: I/info(14450): Beacon1BeaconProximity: {B9407F30-F5F8-466E-AFF9-25556B57FE6D} Правда Notification вылетает в StatusBar только по первому событию, а потом, молчит. Думаю, что Bluetooth здесь уже не причем.
     
  25. Like
    Pax Beach отреагировална master webs в Вызов приложения из нофитикейшена   
    MyBeacon
     
×
×
  • Создать...