r@di0

Пользователи
  • Публикаций

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

  • Посещение

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

    4

Весь контент r@di0

  1. Вы вообще пробовали приведенный код? Он не имеет отношения к WakeLock, а как раз добавляет приложение в WhiteList. Если Вы хотите сделать "неубиваемое" приложение, то Вам не получится обойтись каким-то легким решением. Особенно если приложению необходимо использовать сеть. Почитайте про doze mode. Можете ещё посмотреть эту статью: http://delphiworlds.com/2018/01/monitoring-location-updates-on-android/ Там предпринята попытка сделать подобное "неубиваемое" приложение.
  2. Пожалуйста, поясните почему не то, и что всё же Вам действительно нужно. Надеюсь ответ займет менее 10 дней )
  3. Такое поведение на Андроиде с 5 версии. function GetPowerManager: JPowerManager; var PowerServiceNative: JObject; begin PowerServiceNative := TAndroidHelper.Context.getSystemService (TJContext.JavaClass.POWER_SERVICE); if not Assigned(PowerServiceNative) then raise Exception.Create('Could not locate Power Service'); Result := TJPowerManager.Wrap((PowerServiceNative as ILocalObject) .GetObjectID); if not Assigned(Result) then raise Exception.Create('Could not access Power Manager'); end; //Intent: JIntent; if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin pw := GetPowerManager; if Assigned(pw) then if not pw.isIgnoringBatteryOptimizations (StringToJString('ВАШ ПАКЕТ')) then begin Intent := TJIntent.Create; try Intent.setAction (TJSettings.JavaClass. ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); Intent.setData(TJnet_Uri.JavaClass.parse (StringToJString('package:ВАШ ПАКЕТ'))); TAndroidHelper.Context.startActivity(Intent); except on e: Exception do fgToast(e.Message, 3); end; end; end;
  4. http://www.un4seen.com/forum/?topic=13225.0 Документация: http://www.un4seen.com/doc/
  5. r@di0

    Убрать поле при сериализации

    TFoo = class(TObject) private [JSONMarshalled(False)] FAge: Byte; public FName : string; FSurname : string; end;
  6. Дополнение: иногда нужно, чтобы уведомления не накапливались, а отображалось только последнее. Поправил класс NotificationPublisher (см. аттач), чтобы при наличии в данных параметра "unique": false обновлялось последнее сообщение, а не добавлялись новые. NotificationPublisher.zip
  7. В версии Берлин есть свои особенности. 1. Берём берлиновские java-исходники: C:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\androiddex\java\fmx\src\ Далее в файле NotificationPublisher.java в buildNotification правим код, чтобы использовался переданный параметр Sound (если передан): if (msgSound == "") { //если не передан, используем стандартный звук уведомлений mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); } else { mBuilder.setSound(Uri.parse("android.resource://" + this.mContext.getPackageName() + "/raw/" + msgSound)); } Подключаете класс import android.net.Uri; Прокидываете параметр String msgSound выше до publishGCM, а в publishGCM нужно получить из бандла параметр Sound по аналогии с другими параметрами (см. приложенный файл NotificationPublisher.java). Можете так же прописать mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(msgText)); для MultiLine сообщений и сразу сделать обработку параметра icon для использования в пушах иконок отличных от иконки приложения. 2. После того как Вы воссоздали структуру нужного пакета (в java иерархия классов определяется вложенностью папок) в нужном каталоге и внесли необходимые изменения в исходники, необходимо откомпилировать измененные классы, добавить их в исходный пакет (fmx.jar) и сформировать файл classes.dex (cм. приложенный файл install.bat): @echo off setlocal if x%ANDROID_SDK% == x set ANDROID_SDK="C:\Users\Public\Documents\Embarcadero\Studio\18.0\PlatformSDKs\android-sdk-windows" if x%JAVA% == x set JAVA="C:\Program Files\Java\jdk1.8.0_60\bin" set ANDROID_PLATFORM=%ANDROID_SDK%\platforms\android-22 set DX_LIB=%ANDROID_SDK%\build-tools\27.0.3\lib set EMBO_DEX="C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\android\release\classes.dex" set FMX_JAR="C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\android\release\fmx.jar" set PROJ_DIR="C:\fmx" echo COMPILLING NotificationPublisher.java %JAVA%\javac -d "%PROJ_DIR%" "%PROJ_DIR%\com\embarcadero\rtl\notifications\NotificationPublisher.java" -cp "%ANDROID_PLATFORM%\android.jar";"C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\android\debug\android-support-v4.jar" pause echo COPY ORIGINAL fmx.jar copy %FMX_JAR% %PROJ_DIR%\fmx.jar" echo UPDATE FILE NotificationPublisher.class %JAVA%\jar uf "fmx.jar" com\embarcadero\rtl\notifications\NotificationPublisher.class echo CONVERTING FROM jar TO dex call %DX_LIB%\dx.jar --dex --verbose --output=%PROJ_DIR%\output\dex\test_classes.dex --positions=lines %PROJ_DIR%\fmx.jar echo MERGING dex FILES mkdir output\dex 2> nul java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger %PROJ_DIR%\output\dex\classes.dex %PROJ_DIR%\output\dex\test_classes.dex %EMBO_DEX% del output\dex\test_classes.dex echo Now we have the end result, which is output\dex\classes.dex pause :Exit endlocal Поправьте PROJ_DIR на свой каталог, в котором всё лежит (у меня в C:\fmx), а так же проверьте правильность остальных путей. 3. После того как Вы получили новый пакет fmx.jar, а так же файл classes.dex, оба файла необходимо скопировать в каталог со своим Delphi-проектом. 4. Добавьте новый файл classes.dex в Deployment и отключите старый файл classes.dex; 5. У нового файла classes.dex пропишите Remote Path как у старого файла (classes\); 6. Добавьте звуковой(ые) файл(ы) для уведомлений в Deployment и пропишите Remote Path: res\raw\ На этом подготовка IDE завершена. Что-либо отключать в IDE в разделе Libraries (напр. fmx.dex.jar) не требуется. Добавлять так же ничего не требуется. Если Вы ранее подключали свой fmx.dex.jar, то удалите его и включите стандартный. 7. При отправке Push с сервера параметр Sound передавать не в Notification!, а в Data: $fields['data'] = array('body' => $text, 'title' => $title, 'sound' => 'neworder'); Имя звукового файла указывается без расширения. fmx.zip
  8. Всем привет! Под Андроид у некоторых сообщений внизу создаётся лишнее пустое пространство. В примере это видно (выделил красным). Rad Studio 10.2 Tokyo. Никто это не правил?
  9. Удалось найти java2op. Утилиту и полученный бридж-файл прикрепляю. Здесь можно почитать как подключить и использовать свой JAVA-класс 30007_java2op.exe_for_rad_studio_delphi_and_c_builder_xe7.ZIP YandexSpeechKit.zip
  10. Сообществу, привет! Проблема следующая: необходимо использовать Speechkit Mobile SDK в RAD Studio XE 6. Это sdk идет в виде Android library project. Для использования сторонних java-библиотек в RAD Studio формируются некие "файлы-переходники" (Native Bridge File for a Java Library): ссылка1, ссылка2 Для автоматического создания таких файлов имеются две утилиты: 1. для создания бриджа для версий XE5 и XE6 можно использовать утилиту Java2Pas, но для неё не удается найти ключ; 2. для версии XE7 используется утилита Java2OP, но её нигде не удается скачать. Есть ли у кого-нибудь ключ для Java2Pas или утилита Java2OP - пожалуйста, выложите в теме. Так же просьба, откликнуться тем кто владеет какой-нибудь информацией, которая может помочь в решении данного вопроса. Java2Pas.zip