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

r@di0

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

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

  • Посещение

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

    4

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

  1. Like
    r@di0 получил реакцию от Ingalime в Специальные разрешения   
    Вы вообще пробовали приведенный код? Он не имеет отношения к WakeLock, а как раз добавляет приложение в WhiteList.
    Если Вы хотите сделать "неубиваемое" приложение, то Вам не получится обойтись каким-то легким решением. Особенно если приложению необходимо использовать сеть. Почитайте про doze mode.
    Можете ещё посмотреть эту статью: http://delphiworlds.com/2018/01/monitoring-location-updates-on-android/
    Там предпринята попытка сделать подобное "неубиваемое" приложение.
  2. Like
    r@di0 получил реакцию от Barbanel в Специальные разрешения   
    Вы вообще пробовали приведенный код? Он не имеет отношения к WakeLock, а как раз добавляет приложение в WhiteList.
    Если Вы хотите сделать "неубиваемое" приложение, то Вам не получится обойтись каким-то легким решением. Особенно если приложению необходимо использовать сеть. Почитайте про doze mode.
    Можете ещё посмотреть эту статью: http://delphiworlds.com/2018/01/monitoring-location-updates-on-android/
    Там предпринята попытка сделать подобное "неубиваемое" приложение.
  3. Like
    r@di0 получил реакцию от x11 в Специальные разрешения   
    Вы вообще пробовали приведенный код? Он не имеет отношения к WakeLock, а как раз добавляет приложение в WhiteList.
    Если Вы хотите сделать "неубиваемое" приложение, то Вам не получится обойтись каким-то легким решением. Особенно если приложению необходимо использовать сеть. Почитайте про doze mode.
    Можете ещё посмотреть эту статью: http://delphiworlds.com/2018/01/monitoring-location-updates-on-android/
    Там предпринята попытка сделать подобное "неубиваемое" приложение.
  4. Thanks
    r@di0 получил реакцию от x11 в Специальные разрешения   
    Такое поведение на Андроиде с 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;  
  5. Like
    r@di0 получил реакцию от Barbanel в Специальные разрешения   
    Такое поведение на Андроиде с 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;  
  6. Like
    r@di0 получил реакцию от Евгений Корепов в Специальные разрешения   
    Такое поведение на Андроиде с 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;  
  7. Like
    r@di0 получил реакцию от Ingalime в Специальные разрешения   
    Такое поведение на Андроиде с 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;  
  8. Like
    r@di0 получил реакцию от ENERGY в libbass.so не загружается.   
    http://www.un4seen.com/forum/?topic=13225.0

    Документация:

    http://www.un4seen.com/doc/
  9. Like
    r@di0 получил реакцию от rareMax в Убрать поле при сериализации   
    TFoo = class(TObject)
      private
        [JSONMarshalled(False)]
        FAge: Byte;
      public
        FName    : string;
        FSurname : string;
      end;
  10. Like
    r@di0 получил реакцию от Rusland в Изменение стандартного звука а push-уведомлении   
    Дополнение: иногда нужно, чтобы уведомления не накапливались, а отображалось только последнее. Поправил класс NotificationPublisher (см. аттач), чтобы при наличии в данных параметра "unique": false обновлялось последнее сообщение, а не добавлялись новые.
    NotificationPublisher.zip
  11. Like
    r@di0 получил реакцию от Rusland в Изменение стандартного звука а push-уведомлении   
    В версии Берлин есть свои особенности.
    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
  12. Like
    r@di0 получил реакцию от #WAMACO в Изменение стандартного звука а push-уведомлении   
    Дополнение: иногда нужно, чтобы уведомления не накапливались, а отображалось только последнее. Поправил класс NotificationPublisher (см. аттач), чтобы при наличии в данных параметра "unique": false обновлялось последнее сообщение, а не добавлялись новые.
    NotificationPublisher.zip
  13. Like
    r@di0 получил реакцию от Равиль Зарипов (ZuBy) в Изменение стандартного звука а push-уведомлении   
    Дополнение: иногда нужно, чтобы уведомления не накапливались, а отображалось только последнее. Поправил класс NotificationPublisher (см. аттач), чтобы при наличии в данных параметра "unique": false обновлялось последнее сообщение, а не добавлялись новые.
    NotificationPublisher.zip
  14. Like
    r@di0 получил реакцию от Ingalime в Изменение стандартного звука а push-уведомлении   
    Дополнение: иногда нужно, чтобы уведомления не накапливались, а отображалось только последнее. Поправил класс NotificationPublisher (см. аттач), чтобы при наличии в данных параметра "unique": false обновлялось последнее сообщение, а не добавлялись новые.
    NotificationPublisher.zip
  15. Like
    r@di0 отреагировална Равиль Зарипов (ZuBy) в Как сделать стандартные диалоговые окна не такими скучными?   
    ну вот такая есть штука у меня
     
    Это нативные окошки пока только под андроид
    NativeView.zip
  16. Like
    r@di0 отреагировална Rusland в Сообщения чата в виде сообщений в iphone.   
    Подправил uChatBox.pas под себя, заменил TLabel на TText, теперь проблем с отрисовкой бордюра не наблюдаю. Добавил выделение заголовка и градиент в "облачка".

    ChatBox.zip
  17. Like
    r@di0 получил реакцию от repetitor1986 в Подключение сторонних JAVA-библиотек   
    Удалось найти java2op.
    Утилиту и полученный бридж-файл прикрепляю.
    Здесь можно почитать как подключить и использовать свой JAVA-класс
    30007_java2op.exe_for_rad_studio_delphi_and_c_builder_xe7.ZIP
    YandexSpeechKit.zip
  18. Like
    r@di0 получил реакцию от Brovin Yaroslav в Подключение сторонних JAVA-библиотек   
    Удалось найти java2op.
    Утилиту и полученный бридж-файл прикрепляю.
    Здесь можно почитать как подключить и использовать свой JAVA-класс
    30007_java2op.exe_for_rad_studio_delphi_and_c_builder_xe7.ZIP
    YandexSpeechKit.zip
×
×
  • Создать...