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

OnePeople

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

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

  • Посещение

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

    64

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

  1. Зачем он вам вообще нужен, делайте как говорит гугл, создавайте LocatioListner! Для вас сделал пример, как надо сами допишите. Android.LocationListener.rar
  2. Так у меня его нет) Себе делал callback для поиска количества спутников. Пишите на java callback (GnssStatusCallback.rar) Через codex генерируете jar файл, добавляете его себе в проект в Libraries Пишите объявления методов (Androidapi.JNI.GnssStatusCallback.rar) Создаем класс type TGnnsStatusCallbackDelegate = class(TJavaLocal, JGnssStatusCallbackDelegate) private class var FConnectivityManager: JConnectivityManager; private FCallback: JGnssStatusCallback; protected public procedure onFirstFix(ttffMillis: Integer); cdecl; procedure onSatelliteStatusChanged(status: JGnssStatus); cdecl; procedure onStarted; cdecl; procedure onStopped; cdecl; public constructor Create(); end; constructor TGnnsStatusCallbackDelegate.Create; begin inherited Create; FCallback := TJGnssStatusCallback.JavaClass.init(TAndroidHelper.Context, Self); end; GnnsStatusCallbackDelegate := TGnnsStatusCallbackDelegate.Create; Androidapi.JNI.GnssStatusCallback.rar GnssStatusCallback.rar
  3. Может их нет, новых, а есть устройства которые уже подключались ранее Bluetooth.GetPairedDevices; FPairedDevices := Bluetooth.GetPairedDevices; if FPairedDevices.Count > 0 then for I:= 0 to FPairedDevices.Count - 1 do ListBox.Items.Add(FPairedDevices[I].DeviceName) Ну и если Android API >= 31 if TJBuild_VERSION.JavaClass.SDK_INT >= 31 then begin FPermissionBTConnectSettings := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_CONNECT); FPermissionBTScanSettings := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_SCAN); FPermissionBTAdvertiseSettings := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_ADVERTISE); PermissionsService.RequestPermissions([FPermissionBTConnectSettings] + [FPermissionBTScanSettings] + [FPermissionBTAdvertiseSettings], nil); end;
  4. Не работал со стандартным JSON, но может так? TJSONArray* arr2 = arr1<TJSONArray*>(Object->GetValue(_D("arr2")));
  5. Файл hosts смотрели?
  6. Для начала доступ к памяти проверьте if TJBuild_VERSION.JavaClass.SDK_INT >= 30 then begin if TJEnvironment.JavaClass.isExternalStorageManager = false then begin Intent := TJIntent.Create; Intent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); if intent.resolveActivity(TAndroidHelper.Context.getPackageManager) <> nil then TAndroidHelper.Context.startActivity(Intent); end; end; В <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" Должна быть строка android:requestLegacyExternalStorage="true"
  7. И FormActivate добавьте myIntent := TAndroidHelper.Activity.getIntent; if myIntent <> nil then Form1.OnNewIntent(myIntent);
  8. Добавьте это MainActivity.registerIntentAction(TJIntent.JavaClass.ACTION_VIEW); перед этим IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage( TMessageReceivedNotification, HandleIntentMessage);
  9. var IMessageSubscriptionID: Integer; // в создании формы IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage( TMessageReceivedNotification, HandleIntentMessage); procedure TForm1.HandleIntentMessage(const Sender: TObject; const M: TMessage); begin try if M is TMessageReceivedNotification then begin OnNewIntent(TMessageReceivedNotification(M).Value); end; except Form1.LogAdd('HandleIntentMessage except'); end; end; function TForm1.OnNewIntent(Intent: JIntent): Boolean; var insPath: String; uri: Jnet_Uri; begin Result := False; try if Intent <> nil then begin uri := Intent.getData; if uri <> nil then begin insPath:= JStringToString( uri.getEncodedPath); if (ExtractFileExt(insPath)='.x10') then begin // работаете с файлом end; end; end; except LogAdd('OnNewIntent except'); end; end; Также в манифест добавить <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="file" /> <data android:scheme="content" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:host="*" /> <data android:pathPattern=".*\\.x10" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.EDIT"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="file" /> <data android:scheme="content" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:host="*" /> <data android:mimeType="*/*" /> <data android:pathPattern=".*\\.x10" /> </intent-filter>
  10. А почему TThread.CurrentThread.ThreadID.ToString, а не TThread.CurrentThread.ClassName? Тоже с логами вожусь. Для чего именно Id?
  11. Отрисовки
  12. Вам уже ответили, но можете конечно сделать так в главном потоке procedure Test; const n = 200; var I: Integer; begin pb1.Min := 0; pb1.Max := n - 1; for I := 0 to n - 1 do begin pb1.Value := I; sleep(10); Application.ProcessMessages; end; end;
  13. 1. Разрешения приложения на чтение запись файлов 2. Файлы в Deployment для 32 и 64 бит разные, проверьте
  14. Посмотрите это видео
  15. Ну я судил поэтому Если нет, то тут только как написали вы, делать все самому, хотя я думаю накрутить и в TabControl можно красивостей)
  16. Написал за 5 минут для примера как можно Новая папка.rar
  17. Исходники не полные у rad studio вручную добавьте методы, путем перемещения соответствующих файлов (т.е. загаловочные файлы с описанием TJEnvironment и TJSettings) в папку проекта и добавлением в них отсутствующих функций и переменных.
  18. try if TJBuild_VERSION.JavaClass.SDK_INT >= 30 then begin if TJEnvironment.JavaClass.isExternalStorageManager = false then begin Intent := TJIntent.Create; Intent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); if intent.resolveActivity(TAndroidHelper.Context.getPackageManager) <> nil then TAndroidHelper.Context.startActivity(Intent); end; end; except end; if TJBuild_VERSION.JavaClass.SDK_INT <= 29 then begin FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); PermissionsService.RequestPermissions([FPermissionReadExternalStorage] + [FPermissionWriteExternalStorage], nil); end; Типо того
  19. Ищите android:requestLegacyExternalStorage
  20. Вам нужно делать через GnssStatus.Callback Т.е. на java писать сервис.
  21. В файле System.Android.Sensors ваша функция выглядит так class function TPlatformGpsStatus.GetGpsStatusImplementer: TGpsStatusClass; begin Result := nil; end;
  22. Скорее всего потому что GetGpsStatusImplementer = nil
  23. Ну правильно компонент не перерисовывется когда он невидим иначе бы приложение тормозило конкретно. Вам или в ручную перерисовывать или зачем вам листбокс, если там несколько итемов. Возьмите лайоут, и добавляйте туда динамически контролы
×
×
  • Создать...