-
Постов
75 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент fsdb
-
спасибо. я думал что из BroadcastReceiver нельзя установить задачу на запуск . это хорошее решение на мой взгляд... буду пробовать!!! to Andrey Efimov: Спасибо, извиняюсь, сообщения лишние удалил Update: Короче вот рабочий код - нормальный автозапуск отложенный!!! мое приложение больше не закрывает ОС и все работает отлично!!!! Отредактировано: 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/run_app.txt"); //файл - при наличии которого выполняется автозапуск if(f.exists()){ Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, 30); //PendingIntent pi = PendingIntent.getBroadcast(context, 0, TestLauncher, 0); //AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); //manager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi); 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); } else { TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } } } }
-
Andrey Efimov понял. а как хотя бы на 5 секунд отложить старт? по моим ощущениям код просто игнорируется. Ява компилятор вроде ошибку не пишет, import java.*; ...................... long currenttime = System.currentTimeMillis(); long checktime = 0; // waits for 30 seconds (30000 milliseconds) while ((checktime = System.currentTimeMillis()) < (currenttime + 30000)){ //do nothing } Про AlarmManager я ознакомился в Вашей статье, но там получается что нужно знать точное время. в данном случае я не знаю точного времени рестарта ОС.
-
подскажите пожалуйста отложенный запуск после старта ОС....... на данный момент код такой и НЕ РАБОТАЕТ старт именно прилоежния - закрывается после старта. сервис стартует норм. package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; 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/run_app.txt"); //файл - при наличии которого выполняется автозапуск if(!f.exists()){ TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } else { TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(TestLauncher); } } } }
-
в общем не стал париться особо и просто сделал так: package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; 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/run_app.txt"); //файл - при наличии которого выполняется автозапуск if(!f.exists()){ TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } else { TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(TestLauncher); } } } }
-
Добрый день, как сделать паузу, что бы приложение стартовало на много позже. например секунд через 30 после перегрузки ОС. пытался так - не вышло . У меня ОС убивает мое приложение почти сразу на старте - 1-3 секунды работы моей программы long currenttime = System.currentTimeMillis(); long checktime = 0; // waits for 30 seconds (30000 milliseconds) while ((checktime = System.currentTimeMillis()) < (currenttime + 30000)){ //do nothing } Intent AppLauncher = new Intent(); AppLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); AppLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(AppLauncher);
-
Ребята, я перечитал тему и понял что сервис не может общаться с формой. но мне это не нужно. можно ли просто запустить из сервиса приложение - не передавая ему никакие данные... просто запустить?.. суть проблемы - сервис запустился после старта ОС. если есть файл run.txt на внешней карте, то запускает само приложение. если нету то ничего не далает. самое оптимальное это писать в BootCompletedReceiver.java код (склеивать classes.dex)? привел примерный псевдокод. я не знаю как на яве проверить есть ли такой файл.. а есть ли другие способы просто запустить из сервиса само приложение? или железно нет.??? дополнительно может ли сервис как то знать - запущено ли приложение основное - надо ли давать в шторку информацию или мы и так её видем в приложении package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); //запустили сервис. нужен всегда что бы давать в шторки сообщения >>>>>>>>>>>>>>>>>>>>>>>> if (fileexist("run.txt")) then { TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(TestLauncher); } >>>>>>>>>>>>>>>>>>>>>>>> //запустили сразу приложение если нужно } } }
-
Ваш проект прекрасно запускается после растарта системы Насколько я понял упоминание есть в манифестах: Промежуточный: https://yadi.sk/i/X3XfifkfpvWHE Конечный: https://yadi.sk/i/gkMucscxpvWHn Вероятно вторая причина. classes.dex не правильно клеился или формируется. Хотелось бы узнать причину. Как понять, что файлы формируются не верные. Исходный код я скинул в личку. Спасибо!!!!
-
Andrey Efimov спасибо что ответили, ошибок не получаю. пути в бат файле if x%ANDROID% == x set ANDROID=C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\ set ANDROID_PLATFORM=%ANDROID%\platforms\android-22 set DX_LIB=%ANDROID%\build-tools\22.0.1\lib set EMBO_DEX="C:\DB\eHomeSmartMobile\eHSforAndroid\Application\Android\Debug\classes.dex" set PROJ_DIR=%CD% set VERBOSE=0 если удалить папку output то она каждый раз создается заново с файлами test_classes.dex, classes.dex, BootCompletedReceiver.class,test_classes.jar Скриншот конечного манифеста https://yadi.sk/i/EreQmlmtpvE7h Очень хотелось бы реализовать это по Вашей статье... у меня с сервисами вообще какая то большая проблема. ниразу не удалось Остановить работу по breakpoint в внутри сервиса. я перечитал форум и у одного формутчанина тоже так не работало - даже тут не работает дебагер м.б. проблема в этом как раз...... uses Androidapi.JNI.App; function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin Result := TJService.JavaClass.START_STICKY; end; В стандартных Samples где есть примеры по сервисам - тоже нигде не останавливается по breakpoint порекомендуйте пожалуйста что нибудь для решения проблемы
-
Все равно не смог по статье повторить. прошу помочь и поправьте меня в манифесте добавил <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> в яве файле написал, запустил батник. все файлы создались. package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } } } сервис запускаю так, он запускается, когда приложение закрываю - вижу что сервис дальше работает. после перезагрузки не стартует сервис заново ServiceHandle:=TLocalServiceConnection.Create; ServiceHandle.StartService('PanelControlService'); ServiceHandle.Free; замену класса сделал. вот скрин https://yadi.sk/i/FbVOPXOSpv3Qs права дал приложению . https://yadi.sk/i/WwAwCWEypv3iB надо ли давать права такие же сервису?
-
1. как воспроизвести потоковое видео с IP камеры на Андройд 2. пример использования распознания речи google api на Андройд 3. пример передачи даных из сервиса в приложение / узнать из севиса что приложение работает
-
Я попробывал на телефоне с другой версией андройда - 5.0.2 - то же самое . точка оставнова не срабатывает. подскажите порядок. может я что то элементарное не знаю, не так давно пользуюсь Firemonkey?.. В любом сервисе не могу поймать брекпоинт. Я в менеджере проекта активирую двойным кликом приложение (а не сервис) и запускаю приложение. это верно? или что то еще нужно делать?
-
Rusland я так и понял. у вас update 1 есть?
-
Добрый день. на андройде в D10 Seattle компилируется без ошибок и запускается пример. C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidNotificationServiceDemo я подозреваю что у меня не работает на телефоне данный пример. что должно произойти? я пытаюсь отловить событие тут, но оно просто не наступает . вообще любое приложение где я добавляю сервис и пытаюсь отдебажить в сервисе событие в данном участке кода - не удается поймать. в приложении получается. в приложениях сервис не появляется. как должно было быть? у меня опыта нет
-
куда в сервисе прописать данный код что бы он выводил сообщения n:= form1.NotificationCenter1.CreateNotification; n.Name:='123'; n.Title:='567'; n.AlertBody:='890'; n.AlertAction:='qwe'; n.EnableSound:=true; form1.NotificationCenter1.ScheduleNotification(n);
-
Вы получили в сервисе сигнал, создавайте локальное сообщение и будет там все и вибро и звук все как у Push. Затем по клику сообщения и откроется ваша программа. Здравствуйте , я не понимаю всех возможностей и поэтому спрошу. Хочу в сервисе для андройда (10 дельфи), обратиться по tcp/ip, послать через NotificationCenter сообщеение (ярлык) что есть новые данные. - по нему запустится приложение
-
автозапуск приложения после перезагрузки телефона
fsdb опубликовал вопрос в Широковещательные сообщения (Broadcast)
как организовать автозапуск приложения после перезагрузки телефона? есть сторонние программы на плей маркете но хотелось бы собственными средствами -
ребята скажите как сделать так что бы после перезагрузки телефона сервис дальше работал допустим запустил я приложение. оно запустило сревис.. я вышел из приложения и смотрю что сервис реальноработает как на видео, но процессо рабочих пишет :0 открываю другие приложения чужие - там всегда висит кроме сервиса хотя бы 1 процесс. майл агент например: процессов 1, серовосв: 1. и так далее. т.е. везде процесс не закрыт. я выбрал LocalService как на видео. где прочесть что такое IntentLocalService
-
создаю пустое приложение. кидаю кнопку и в ней пишу Application.FormFactor.Orientations := [TFormOrientation.InvertedLandscape]; после выполнения этого приложение закрывается. другие приложения где это есть - сразу на segmentation fault ругаются в Delpphi 10 Seatte, в Delphi xe8 работало. и почему combobox.text:=st1.Text; не добавляет позиций а делает combobox.text ипустым
-
тот же самый баг. никак не могу сохранить настройки и запуститься в отладке. в Project Explorer выбрал debug
- 6 ответов
-
- Provisioning
- Android
-
(и ещё 1 )
C тегом: