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

fsdb

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

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

  • Посещение

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

    3

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

  1. скрин лог из втоей программы. тоже на секьюрность вроде как жалуется
  2. что такоепоследний параметр. поясните пожалуйста. не понимаю. на что влияет ServerConnectionTH.FServerSocket := FAdapter.CreateServerSocket(ServiceName, StringToGUID(ServiceGUI), False);
  3. Classic Bluetooth Basic app, прошу прокоментировать мои скрины кто что скажет и почему ошибки. имя точки моей называется FilamentExtruder
  4. Добрый день. На андройде пытаюсь воять что нибудь что бы работало с моей arduino по bluetooch Со стороны ардуины проблем нет. я все спаял. как только подается питание - ардуина сразу шлет на блютух данные. моя задача принять их в андройде. я скачал для проверки из гугл плей маркета терминал и все ок- данные с ардуины в терминал чужого приложения идут. -hello word теперь пытаюсь сам что то сделать но я столкнулся с полным не пониманием как работает блютуз помогите хотя бы объяснить последовательность моих дествий. у меня есть включенный блютух на ардуине и его имя всегда hc-06. В настройках системы андройда я вбил пароль 1234 и все он показывается как сопряженное. теперь вопросы: 1. если я знаю имя блютуха (HC-06) то нужно ли мне в первый раз производить поиск этого устройства? 2. если я уже в настройках системы подключился к блютуху - нужно ли мне заново как бы в нутри моего приложения заново подключаться к нему? если да, то почему 3. как получать текст по блютузу с другого устройства? я понимаю например TCPIP/UP там есть onRead а тут.. не понятно. я смотрел примеры от стандартные по блютуху но они для меня оказались слишком сложными и ниодин из откомилированных примеров не смог получить данные с ардуино - (хотя чужое приложение с плей маркета смогло) помогите хотя бы псевдокодом. я не понимаю порядок моих действий. кто чем может. хелп.
  5. fsdb

    exited with code 9009.

    Ребята помогите, бъюсь уже целый день. что нужно добавить в path что бы вылечить exited with code 9009 при попытки компиляции Проект работает под win 10 x64 компилируется. а на win7 x86 не хочет. java установил одинаковой версии. path одинаковый и изменен с учетом разрядности
  6. спасибо! научили! все получилось.
  7. Спасибо, а как создать интент для сервиса? Intent intent2=new Intent(); так ничего Intent intent2=new Intent(context, ?????????????.class);
  8. fsdb

    не стартует сервис.

    https://yadi.sk/i/logBm8J1qYY9T не стартует сервис. Unable to start service Intent U=0: not found я так понимаю мой код рабочий на старт в JAVA AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent intent2=new Intent(context, BootCompletedReceiver.class); PendingIntent pi= PendingIntent.getService(context,0, intent2,0); MainActivity.pi.cancel(); am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),10000,pi); просто я что то не прописал в манифесте. в каком? приложения или сервиса? вот манифест шаблон активити <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%"> <%application-meta-data%> <%services%> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <%activity%> <%receivers%> <receiver android:name="com.PanelControlReceiver.BootCompletedReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application> </manifest> <!-- END_INCLUDE(manifest) --> пред шаблон актвити <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.embarcadero.PanelControl" android:versionCode="10" android:versionName="1.0.1" android:installLocation="internalOnly"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_USER_DICTIONARY" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" /> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="true" android:restoreAnyVersion="False" android:label="Panel Control Debug" android:debuggable="True" android:largeHeap="true" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme" android:hardwareAccelerated="true"> <service android:exported="false" android:name="com.embarcadero.services.PanelControlService" /> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="Panel Control Debug" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="PanelControl" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" /> <receiver android:name="com.PanelControlReceiver.BootCompletedReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application> </manifest> <!-- END_INCLUDE(manifest) -->
  9. я просто закоментировал строчки на которые ругался компилятор. что то про аккаунт - не знаю откуда но я так понял они мне не нужны. Вроде все работает, но скажите пожалуйста почему когда я добавляю строчку у меня просто рушится выполнение в OnRecive? я хотел обработать событие загрузки ОС... if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Скажите пожалуйста как мне идентифицировать событие AlarmManager в OnReciver - как например что ОС только что загрузилась intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) встает вопрос а сами классы можно как то разделить? что бы оба обрабатывали onRecive но один из них только для загрузку ОС обрабатывал что бы избжать проблему что я описал выше После перезагрузки ОС, мой таймер установленный в AlarmManager перестал работать. т.е. обнулился. это нормально? я думал один раз поставил и больше не забудет AlarmManager В вашем проекте я нашел строчку написанную ниже, скажите где можно увидеть этот самый лог. Log.d("FMX", "AlarmReceiver.onReceive"); Я заметил что интерфейс (например ['{A27E897E-3AE0-4953-BA9C-FD2056EBAF2C}'] ) меняется каждый раз.. на сколько критично что бы там были цифры самые актуальные, т.е. последнесгенерированные.
  10. отредактировал Делаю по статье с небольшими отклонениями, на скрине стрелкой у меня возникает ошибка - не могу разобраться https://yadi.sk/i/wuXpygfIqVjxr Я пытаюсь добиться того что я из программы поставил таймер на автозапуск сервиса каждые 10 секунд. сгенерировал вот такой файл unit Androidapi.JNI.BootCompletedReceiver; interface uses Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os; type // ===== Forward declarations ===== JAccount = interface;//android.accounts.Account JBootCompletedReceiver = interface;//com.PanelControlReceiver.BootCompletedReceiver // ===== Interface declarations ===== JAccountClass = interface(JObjectClass) ['{94EE6861-F326-489F-8919-E20B39E3D9C1}'] {class} function _GetCREATOR: JParcelable_Creator; cdecl; {class} function _Gettype: JString; cdecl; {class} function init(name: JString; type: JString): JAccount; cdecl; overload;//Deprecated {class} function init(in: JParcel): JAccount; cdecl; overload;//Deprecated {class} function hashCode: Integer; cdecl; {class} function toString: JString; cdecl; {class} procedure writeToParcel(dest: JParcel; flags: Integer); cdecl; {class} property CREATOR: JParcelable_Creator read _GetCREATOR; {class} property type: JString read _Gettype; end; [JavaSignature('android/accounts/Account')] JAccount = interface(JObject) ['{71476381-8B6E-471F-9189-9857ECD7508C}'] function _Getname: JString; cdecl; function describeContents: Integer; cdecl; function equals(o: JObject): Boolean; cdecl; property name: JString read _Getname; end; TJAccount = class(TJavaGenericImport<JAccountClass, JAccount>) end; JBootCompletedReceiverClass = interface(JBroadcastReceiverClass) ['{8DF216DC-3DF7-4344-A5C9-927DCAFABA3F}'] {class} function init: JBootCompletedReceiver; cdecl;//Deprecated {class} procedure onReceive(P1: JContext; P2: JIntent); cdecl;//Deprecated end; [JavaSignature('com/PanelControlReceiver/BootCompletedReceiver')] JBootCompletedReceiver = interface(JBroadcastReceiver) ['{07FF690C-FF5F-423D-B884-FB7EF3D91E78}'] end; TJBootCompletedReceiver = class(TJavaGenericImport<JBootCompletedReceiverClass, JBootCompletedReceiver>) end; implementation procedure RegisterTypes; begin TRegTypes.RegisterType('Androidapi.JNI.BootCompletedReceiver.JAccount', TypeInfo(Androidapi.JNI.BootCompletedReceiver.JAccount)); TRegTypes.RegisterType('Androidapi.JNI.BootCompletedReceiver.JBootCompletedReceiver', TypeInfo(Androidapi.JNI.BootCompletedReceiver.JBootCompletedReceiver)); end; initialization RegisterTypes; end. часть кода из класса вырезал, но суть оставил - это вызов запуска сервиса. и не совсем понятно - можно ли как то ловить только события будильника. как например ловится при автостарте if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import java.text.Format; import java.text.SimpleDateFormat; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.os.Bundle; import android.os.PowerManager; import android.widget.Toast; import java.util.Calendar; import java.util.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.io.File; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Intent TestLauncher = new Intent(); //создаем класс TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); //Обычный запуск сервиса } }
  11. Не знал в какой раздел задать вопрос. поэтому тут. мне нужно что бы мой сервис стартовал каждые 10 секунд. прошу помочь исправить вот эту часть: Intent restartIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); PendingIntent intent1 = PendingIntent.getService(context, 0,restartIntent, 0); AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),10*1000,intent1); привожу общий код, все остальное в нем работает кроме участка что выше: package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import java.text.Format; import java.text.SimpleDateFormat; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.os.Bundle; import android.os.PowerManager; import android.widget.Toast; import java.util.Calendar; import java.util.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.io.File; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); //создаем класс File f = new File("/sdcard/Android/data/com.embarcadero.PanelControl/files/ehs_setting/profile/working/autorun_app.txt"); //файл - при наличии которого выполняется автозапуск if(f.exists()){ Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, 30); Intent restartIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); PendingIntent intent1 = PendingIntent.getActivity(context, 0,restartIntent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); manager.set(AlarmManager.RTC, System.currentTimeMillis() + 30000, intent1); //TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); // TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // context.startActivity(TestLauncher); //запуск приложения } Intent restartIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); PendingIntent intent1 = PendingIntent.getService(context, 0,restartIntent, 0); AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),10*1000,intent1); // TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); // context.startService(TestLauncher); // Обычный запуск сервиса } } }
  12. как из сервиса узнать, что приложение основное сейчас закрыто. есть ли на андройде что то типа Мьютекса. или как получить список активных процессов что бы понять что мое работает. или предложите что нибудь еще. мне нужно что бы сервис не делал полезной работы пока приложение активно. после закрытия продолжал делать полезную работу
  13. albionseo - дайте пожалуйста хотя бы в личку пример беконечного паринга в сервисе без запущенного приложения. плизззз. уже голову сломал
  14. попробывал создать интентсервис - тоже пока не получается. не хватает опыта. через локалсервис точно не получится. об этом написано .. что это часть приложения а не отдельный поток. ну я так понял
  15. umkes, да так наверное сработает Давайте подождем ответа еще админа или модератора. надеюсь расскажут. уж больно не понятно все же про потоки. кто нибудь компитентный объясните как сделать постоянную обработку (в бесконечном цикле) в сервисе нормально???
  16. Добрый день! Не совсем понял - получается я заранее немогу что ли указать с каким паролем пытаться соединиться с bluetoch?? мне обязательно нужно вводить подтвержение????? Например у менять есть такой модуль от ардуины. я бы хотел скрытно подключиться к модулю с указанным паролем - передать ему цифру 1 и отсодениться.
  17. master webs - я не против пуш уведомлений но * что мешает отправить данные серверу * - у меня в сервисе как раз не получается при не запущеном приложении. тем более мои координаты по мере движения меняются. и возникает задача снова их отправить. вообще по любому нужно разбираться с сервисом. umkes, а как я буду повторять и повторять свою задачу если я разрешу выйти из цикла. по идее это же поток. он должен выполняться параллельно. Батарея для меня дело скажем последнее. переодичность можно настроить когда все работать. тут ведь дело какое. сервис после рестарта ОС - работает но ничего не делает в потоке. и работает с уведомлениями только когда приложение запущено. самостоятельно не хочет ничего.
  18. Rusland, автостарт я делал по этой статье. тут суть что уведомления не сыпятся. никак master webs, про push - все бы ничего но мне нужна двусторонняя связь. например я возле дома . сервис в фоне определил мои координаты и послал http запрос. не подходит push под мои задлачи
  19. после потери фокуса приложением появляются баги- описание; приложение имеет форму1, имеется форма2 с Visble=false и прозрачная. на ней 2 png Рисунка перекрывающие друг друга. пепрвый рисунок полупрозрачный черный а второй часики - отображение ожидания работы в первой форме. все нормально но стоит в шторке открыть любое другое приложение то после возврата из него в свое форма 2 с прозрачностями безбожно артефачит - показывает разрушенную графику и т.п. 1 форма в порядке при этом
  20. Добрый день. допустим я хочу следить в сервисе что мне вернет http запрос, возможно выполнить математические/логические операции, и в случае чего выдать уведомление. как мне правильно организовать это? когда приложение работает то все ок. как только приложение закрывается - уведомления перестают идти. хотя сервис продолжает работать. почему после запуска потока дебагер остается в бесконечном потоке и нет брекпоинта на Result?????? после рестарта ОС, сервис стартовавший автоматически - не выводит никаких сообщений вообще.... unit Unit1; interface uses System.SysUtils, System.Classes, System.Android.Service, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Os, System.Notification; ///////////////////////////////////////////////////////////// // Основной поток Execute type TExecuteThread = class(TThread) private protected procedure Execute; override; public end; // Основной поток Execute ///////////////////////////////////////////////////////////// type TAndroidServiceDM = class(TAndroidService) NotificationCenter1: TNotificationCenter; function AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; private { Private declarations } procedure LaunchNotification(title,body:string); public { Public declarations } end; var AndroidServiceDM: TAndroidServiceDM; implementation {%CLASSGROUP 'FMX.Controls.TControl'} {$R *.dfm} uses Androidapi.JNI.App, System.DateUtils; procedure TAndroidServiceDM.LaunchNotification(title,body:string); var MyNotification: TNotification; begin MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := 'PanelControl'; MyNotification.Title := title; MyNotification.AlertBody := body; MyNotification.FireDate := IncSecond(Now, 0); NotificationCenter1.ScheduleNotification(MyNotification); except MyNotification.Free; end; end; procedure TExecuteThread.Execute; begin { Place thread code here } while true do begin Unit1.AndroidServiceDM.LaunchNotification('Запуск','Успешная работа сервиса'); sleep(1000); end; end; function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; var MyExecuteThread: TExecuteThread; begin MyExecuteThread:=TExecuteThread.Create(false); MyExecuteThread.FreeOnTerminate:=true; MyExecuteThread.Resume; Result := TJService.JavaClass.START_STICKY; end; end.
  21. Andrey Efimov Да, спасибо, именно так и поступил. это оказалось самым быстрым. все прекрасно работает... извиняюсь за беспокойство. очень хотелось бы увидеть новые статьи от Вас. темы предложены пользователями
  22. Добрый день. отличия в Deployment есть Вот Debug https://yadi.sk/i/kkf6KCCDqB6Pg Вот Release; https://yadi.sk/i/t0DRoaEsqB6Z3 Я с Deployment ранее не работал до сервисов и методика работы меня смущает. например если я в Debug Добавил сервис, сервис соотвественно добавился и обращаю внимание что путь лежит из папки Debug сервиса... когда я переключаюсь на Release то там уже сервис как бы не добавлен а пытаясь добавить он первое что ему попалось - папку Debug пытается добавить. приходится удалять папку Debug И снова передобавить сервис что бы он уже подтянул из Release. как то не много запустанно показалось. при публикации Release сам сервис тоже должен быть подписан как приложение? его тоже нужно компилировать в Release И соотвественно цеплять только из папки Release ? и важно - как корректно удалить не существующие пути в Deployment . просто галочкой штатными средствами не удается - кнопка удаления серая. более того даже если кнопочка отключена, а ранее ссылалось все на диск допустим Е, которого уже нет то я вижу как дельфи выдает 1000 ошибок обращения к жескому диску не существующему... за каждый отключенный пункт в Deployment UPDATE: После сброса на дефолт он не может найти libProxyAndroidService и получается не выполняет Deployment как положено до конца потому что в папке просто нет этого файла https://yadi.sk/i/Ws-DE_8WqBKfV я зашел в папку и его действительно там не было. я взял из папке debug и скопировал в Release и все заработало...... вопрос закрыт вроде бы
  23. Добрый день! Компилирую в режиме Debug- приложение работает нормально. все ок. без ошибок. Когда переключаю в Release, приложение компилируется и запускается на телефоне, первую форму показывает и надпись на ней а затемсразу пишет - приложение будет закрыто - и закрывает приложение. как найти ошибку? методика поиска проблем? что проверить в первую очередь? Спасибо!
  24. Как узнать из сервиса запущено ли основное приложение? допустим я в сервисе слежу за критичными параметрами и раз в минуту посылаю http запрос, и если приложение не запущено посылаю в шторку уведомление. если приложение запущено, то смысла нет в сервисе посылать сообщения в шторку. и собственно хочу из сервиса хочу знать - как узнать из сервиса запущено ли основное приложение?
×
×
  • Создать...