-
Постов
321 -
Зарегистрирован
-
Посещение
-
Победитель дней
55
Сообщения, опубликованные OnePeople
-
-
В 12.03.2024 в 12:51, Slym сказал:
Загружать картинки не в Stream а в битмап сразу
Я думаю почему так кадров много, тоже делал на днях как у вас, только проблема не в этом, вся загвоздка в bringtofront, вот эту проблему как решить? Забил на это так как времени не было.
Так же делал все это в потоке с использованием floatanimation, но прирост не большой получился.
-
procedure MyCurrentForm.MyButtonClick(Sender: TObject); var dlg: TMyModalForm; begin // Create an instance of a form. dlg := TMyModalForm.Create(nil); // Configure the form. For example, give it a display name. dlg.Caption := 'My Modal Dialog Box'; // Show your dialog box and provide an anonymous method that handles the closing of your dialog box. dlg.ShowModal( procedure(ModalResult: TModalResult) begin // Do something. end ); end;
Из docwiki.embarcadero.com
-
В 30.01.2024 в 17:03, vanechka25 сказал:
Проблема в примере от Embarcadero в том, что прием сообщений и отправка происходят через два разных соединения
Да не проблема это, может быть такая ситуация что вам устройство будет отправлять данные допустим "12" потом в JInputStream будет доступных байт ноль, потом придет "345", поэтому тут нужно делать проверку на завершающий символ сообщения и на необходимый таймаут. Все делается через java код, за 10 минут.
-
В 23.02.2024 в 19:02, Саша сказал:
GPS-координаты, то в СВЕРНУТОМ приложении ПОТОК НЕ РАБОТАЕТ.
android.permission.ACCESS_BACKGROUND_LOCATION, а так да приложение крякнет ос, делайте сервис.
-
Конечно тут есть кучу вопросов, как будут добавляться вкладки, кнопки вкладок в каком виде нужны, эффекты перехода, плюс много чего еще, описание задачи слабое, но я скажу вам так:
TabControl - пойдет. -
Androidapi.AppGlue в uses добавьте странно но у вас что то не так, что то вы намудрили, PAndroid_poll_source описан должен быть тут Androidapi.AppGlue
-
Target Platform -> Android (32/64) -> Libraries. правая кнопка мыши, сбросить по умолчанию.
-
Target Platform -> Android (32/64) -> Libraries. правая кнопка мыши, сбросить по умолчанию.
-
-
Зачем он вам вообще нужен, делайте как говорит гугл, создавайте LocatioListner!
Для вас сделал пример, как надо сами допишите.
-
В 04.01.2024 в 15:16, KazakOFF сказал:
Добрый день, а вас не затруднит выложить полностью рабочий проект?
Так у меня его нет) Себе делал 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
-
Может их нет, новых, а есть устройства которые уже подключались ранее 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;
-
Не работал со стандартным JSON, но может так? TJSONArray* arr2 = arr1<TJSONArray*>(Object->GetValue(_D("arr2")));
-
Файл hosts смотрели?
-
Ну и android 13 поддерживает только Rad studio 11.3
-
Для начала доступ к памяти проверьте
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" -
И FormActivate добавьте
myIntent := TAndroidHelper.Activity.getIntent;
if myIntent <> nil then
Form1.OnNewIntent(myIntent); -
Добавьте это
MainActivity.registerIntentAction(TJIntent.JavaClass.ACTION_VIEW);
перед этим
IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage( TMessageReceivedNotification, HandleIntentMessage);
-
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>
-
В 23.11.2023 в 14:34, krapotkin сказал:
А почему TThread.CurrentThread.ThreadID.ToString, а не TThread.CurrentThread.ClassName? Тоже с логами вожусь. Для чего именно Id?
-
10 часов назад, Firemonkey сказал:
За счет чего FMX дает более красивый UI ?
Отрисовки
-
-
1. Разрешения приложения на чтение запись файлов
2. Файлы в Deployment для 32 и 64 бит разные, проверьте
-
Как работать с Bluetooth?
в Bluetooth
Опубликовано · Изменено пользователем OnePeople
Это просто использовать Androidapi.JNI.Bluetooth
Это для примера Допустим инициализировали адаптер BtObject := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.BLUETOOTH_SERVICE); if BtObject <> nil then FJBluetoothManager := TJBluetoothManager.Wrap((BtObject as ILocalObject).GetObjectID); if FJBluetoothManager <> nil then FJBluetoothAdapter := FJBluetoothManager.getAdapter; тут подключились mmBluetoothDevice := FJBluetoothAdapter.GetRemoteDevice(StringTOJString(mac)); tmpBluetoothSocket := mmBluetoothDevice.createInsecureRfcommSocketToServiceRecord (TJUUID.JavaClass.fromString(StringToJString('00001101-0000-1000-8000-00805F9B34FB'))); mmBluetoothSocket.Connect(); отправка и прием ответа repeat if mmBluetoothSocket.isConnected = true then begin isOk := false; Answer := ''; mmInStream := mmBluetoothSocket.getInputStream; mmOutStream := mmBluetoothSocket.getOutputStream; try mmOutStream.Write(StringToJAMove(command + #13#10)); mmOutStream.Flush(); except end; isClose := false; SW := TStopwatch.StartNew; milisec := 0; repeat try if mmInStream.available > 0 then begin LData := mmInStream.read(); isDataAviable := True; end else isDataAviable := false; except LData := -1; end; if (LData <> -1) and (isDataAviable = true) then begin try Wdata := LData; sym := Chr(WData); except LData := -1; end; if sym <> '>' then Answer := Answer + sym; end; try if Assigned(OBDListner) then isClose := OBDListner.Terminated; except Form1.LogOBDAdd('SendBTData except 3'); end; milisec := SW.ElapsedMilliseconds; until (LData = -1) or (sym = '>') or (isClose = true) or (milisec > 5000);