-
Постов
414 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Активность репутации
-
Pax Beach получил реакцию от Kitty в Как закрыть процесс стандартного приложения?
Получилось использовать android.os.Process.killProcess, к сожалению, на С++ перекладывать не умею.
Пример в теме по ссылке.
-
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
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Динамическая подгрузка картинок в ListView
Привет Всем!
Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.
я взял картинки пользователей этого форума
Seattle LVdynamicLoadBitmap.zip
Berlin LVdynamicLoadBitmap(Berlin).zip
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток
Вот посмотрите эту тему, там есть пример который вам поможет
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Вопрос по компонентам
Вот так делал для себя
PresentedButtonsRecalPosition.7z
-
Pax Beach отреагировална fsdb в как узнать из сервиса запущено ли основное приложение?
Как узнать из сервиса запущено ли основное приложение? допустим я в сервисе слежу за критичными параметрами и раз в минуту посылаю http запрос, и если приложение не запущено посылаю в шторку уведомление. если приложение запущено, то смысла нет в сервисе посылать сообщения в шторку. и собственно хочу из сервиса хочу знать - как узнать из сервиса запущено ли основное приложение?
-
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/
-
Pax Beach отреагировална AndreyS в Распространение ПО для OSX
Доброго всем дня. Столкнулся со следующей проблемой:
Есть приложение для OSX, написанное на FMX (.app, упакованное в dmg). Если пользователь скачивает это приложение с сайта (сторонний сайт, не AppStore), то при запуске OSX говорит, что это приложение нельзя запускать, т. к. неизвестен издатель и пр. Так вот, что конкретно нужно сделать с этим приложением (перед деплоем или уже после), чтобы OSX не ворчала? Просто хочется заранее узнать, до того, как заплатить $99 для подключения к Developer program. Заранее спасибо.
-
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 (название сам придумал).
Удачи в этом. Ваши исследования очень полезны для нас.
-
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
-
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" />
Еще есть такая тема
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в GCMIntentService или Multiline Push and Local Notification
то о чем вы говорите, действует для локальных уведомлении.
С пушами (те что генерит GCM) обстоит немного иначе, тут именно нужен java код и правки в классе который публикует нотификации.
При реализации расширенных уведомлении, нужно будет библиотеку писать под каждый отдельный проект (что в принципе и правильно)
А это решение универсальное, который даёт пользователям просматривать полный текст и разработчикам "свободу слова"
это кстати так и работает,
когда уведомление одно в шторке, оно показывается на полную, когда много любое можно раздвинуть и прочитать
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в TNotification с переносом строк
теперь можно сделать
http://fire-monkey.ru/topic/2965-gcmintentservice-или-multiline-push-notification/#comment-17705
-
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
-
Pax Beach отреагировална Kitty в Как закрыть процесс стандартного приложения?
Чтобы убить процесс нужной программы на андроид устройстве разработчикам java справка дает такую рекомендацию:
Можно ли эту рекомендацию применить в Delphi/C++ Builder? Если да то, как будет выглядеть этот код? Я пробовала использовать альтернативную эту рекомендацию: Delphi Android ActivityManager
ActivityManager.killBackgroundProcesses(String packageName) Но в С++ этот PAS файл у меня не заработал.
-
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 -
Pax Beach получил реакцию от Alex Bozhko в Открытие окна настроек Wi-Fi, Способ определения координат
Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.
Качайте, кому нужно.
TestWifi.zip
-
Pax Beach отреагировална Rusland в TMapsEngine
enatechno, kitty спасибо. Уже выложили.
Даже ZuBy там засветился c TMapsEngine
-
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;
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в [Android] [XE7] Как получить GPS координаты без компонента?
если брать реализацию для андроида, то есть решение без сенсора в этой теме
там в первом сообщении, вложение
-
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, то в конечном итоге ваш код завернется в сообщение, которое будет вызвано из этого куска кода
-
Pax Beach отреагировална Brovin Yaroslav в [Android] [XE7] Как получить GPS координаты без компонента?
Эта реализация с Posix таймерами работает в отдельном треде. Который никак не связан с джава и андроидом. Поэтому, если вы хотите работать с сенсорами, вам достаточно синхронизировать вызов с главным тредом.
-
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 здесь уже не причем.
-
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 здесь уже не причем.
-