Перейти к содержанию
  • Регистрация

Активность

Лента обновляется автоматически     

  1. Вчера
  2. Еще вопрос, а как вы реализовали отслеживание, если отключится от брокера? или будет переподключаться сам? но у меня так не происходит и через время телефон отрубает WiFi и видимо происходит отключение, сообщения не приходят.
  3. Восстановил столбец с последними сообщениями. После обновления форума слетел блок.
  4. Последняя неделя
  5. Подписка чуть больше, а так да все верно. topicArray:=TJavaObjectArray<Jtopic>.Create(1); topic:=TJTopic.JavaClass.init(StringToJString('android/java/'), TJQoS.JavaClass.AT_LEAST_ONCE); topicArray.Items[0]:=topic; connection.subscribe(topicArray); Очень рад, что у вас получилось)
  6. Сори, разобрался, неправильно собирал приложение) все работает!
  7. Пробовал сделать приложение с сервисом, в самом приложении MQTT работает, а вот сервис запускается и останавливается, но не работает с MQTT, ни отсылает на брокер ни принимает. Я правильно понимаю, этот код принимает сообщения и выдает сообщение MyNotification? Procedure TDM.MqttMonitor; var MyNotification: TNotification; mess:Jclient_Message; Bytes: TJavaArray<Byte>; JS2: JString; begin running:=True; MyNotification := NotificationCenter1.CreateNotification; MyNotification.Title := 'Mqtt Service'; //заголовок while True do begin mess:=connection.receive; Bytes:=mess.getPayload; JS2:=TJString.JavaClass.init(bytes); MyNotification.AlertBody := (JStringToString(JS2));//текст MyNotification.EnableSound:=True; NotificationCenter1.PresentNotification(MyNotification); end; end; А при создании сервиса подписка на топик, который будет мониторится, верно? topic:=TJTopic.JavaClass.init(StringToJString('android'), TJQoS.JavaClass.AT_LEAST_ONCE);
  8. Обновлено 1.Исправлено сохранение игры, если игра установлена на диск С:. 2.Исправления сетевой синхронизации 3.Мелкие ошибки интерфейса
  9. Тогда следующий вопрос (смотрим исходный код страницы): <article class="quote" data-quote="455502"> <div class="quote__frame"> <header class="quote__header"> <a class="quote__header_permalink" href="/quote/455502">#455502</a> <div class="quote__header_date"> 18.04.2019 в 11:45 </div> </header> <div class="quote__body"> xxx: Мой кот как-то пару раз написал в углу под компьютерным столом. Так я в тот угол положила грязные носки мужа. Как кот переживал! Целый день время от времени подходил, обнюхивал, жалобно мявкал. Больше в этот угол не гадит. </div> и видим, что все-таки написано div - в нижнем регистре... Пишем в процедуре в нижнем регистре - не работает! И, о чудо, пишем в верхнем (DIV) работает... Мой мозг зашкаливает )) Ткните пальцем (кодом) :)
  10. Здравствуйте, я создал свой ListBoxItem (FMX) который выглядит следующим образом: затем я добавил Items динамически в ListBox и получилось следующее: Когда я запускаю программу на Windows 10 и выбираю мышкой Item он селектируется, а если запускаю на Андроид- таблете, то я не могу выбрать (селектировать) Item. Подскажите пожалуйста, какие могут быть причины длы такого поведения. Заранее спасибо.
  11. Потому что 'DIV 'и 'div' - это внезапно разные строки. Я б удивился если бы у вас заработало))) Да че там я, все бы удивились))) Можно. Просто нужно преобразовать из одного типа в другой.
  12. начиная с API 26 недостаточно указать разрешения в манифесте, их нужно запрашивать динамически у пользователя (причем пользователь может в настройках приложения отозвать отдельные права). В частности для использования камеры нужно динамически проверять наличие прав и, если их нет, запрашивать у пользователя (а именно CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)
  13. Хм, по умолчанию не разрешено ничего такого особого, кроме как запуститься. Все выставляется в манифесте и разрешения даются при установке (напр. доступ в интернет). Не разу не видел такого, что бы что-то запрашивало разрешение на то, что можно, указанное в манифесте (да то же интернет). Но увы, возможности проверить нет. И да, все что вы хотите, в манифесте все равно должно быть. мне кажется, что вы сам себе противоречите? Хотите использовать WifiManager, разрешения все равно надо запросить, но только при установке - возвращаемся к манифесту. Ну а что бы уследить за изменениями, что надо, а что не надо, это уже на https://developer.android.com все ведь меняется. Указали поддержку более позднего API, извольте соответствовать этому, но и не забывать про старое...
  14. На чем остановились? Кто-то завел приложение в background-e ?
  15. как насчет воспользоваться поиском нужных файлов по своей файловой системе? например проводником или Far Manager или Total Commander или еще чем нибудь подобным... плюс в ссылке выше есть своя ссылка на скачивание
  16. Добрый день! Прочитал, но у меня стоит visual studio 2005,2008,2010,2013,2015; подскажите расположение нужных мне dll файлов.
  17. добился нужного эффекта через TLinkObservers.ListSelectionChanged(ListBox.Observers) в данном случае это корректный способ? используется в unit FMX.ListBox; в TCustomComboBox.DoOnValueChangedFromDropDownList
  18. Добрый день! ListBox с LiveBindings, Click мыши на ListBoxItem автоматом вызывает DataSourceDataChange, а также установку в необходимый DataSet значения SelectedValue из Listbox согласно настройкам LiveBindings как добиться того же при нажатии клавиши Enter? пробовал ListBoxItem.SetIsSelectedInternal(true, true) - не лечит
  19. Добрый день! Создал List box в нем нашел MetropolisUIListBoxItem1 как изменить размер шрифта так чтобы первая строка была синей жирной размером 24 вторая синей обычной но размером 12 и не жирной.
  20. pie.o.my00

    Need Help Java to Pascal

    Hi, I am trying to use Admob Rewarded Video on Delphi and found this solution https://enhance.co/documentation/native-android/rewarded-ads They have java connector and I converted this Jar library with Java2OP.exe to pascal. (files attached post) I can use basic java classes but I dont know how to use java procedures, I need help this level. can any one help me how can run this java example code on delphi. Thank you. This code working and showing rewarded video successful. if TJEnhance.JavaClass.isRewardedAdReady=true then begin TJEnhance.JavaClass.showRewardedAd(TJEnhance_RewardCallback.Wrap(TJEnhance.GetClsID)); end; This is what I need to pascal if(Enhance.isRewardedAdReady()) { // The ad is ready, show it Enhance.showRewardedAd(new RewardCallback() { // Callbacks: @Override public void onRewardGranted(int rewardValue, RewardType rewardType) { if(rewardType == RewardType.ITEM) writeLog("Reward granted (item)"); else if(rewardType == RewardType.COINS) writeLog("Reward granted (coins), value: " + rewardValue); } @Override public void onRewardDeclined() { writeLog("Reward declined"); } @Override public void onRewardUnavailable() { writeLog("Reward unavailable"); } }); } Enhance-Connector.pas about TJEnhance_RewardCallback JEnhance_RewardCallbackClass = interface(IJavaClass) ['{CC51ED09-CBAB-43A9-A7C7-73675C3B6F55}'] end; [JavaSignature('co/enhance/Enhance$RewardCallback')] JEnhance_RewardCallback = interface(IJavaInstance) ['{46C10767-D981-4109-9D96-6B9C43900405}'] procedure onRewardDeclined; cdecl; procedure onRewardGranted(P1: Integer; P2: JEnhance_RewardType); cdecl; procedure onRewardUnavailable; cdecl; end; TJEnhance_RewardCallback = class(TJavaGenericImport<JEnhance_RewardCallbackClass, JEnhance_RewardCallback>) end; JEnhance_RewardTypeClass = interface(JEnumClass) ['{BE09443C-986F-4419-9C51-30E565A4648D}'] {class} function _GetCOINS: JEnhance_RewardType; cdecl; {class} function _GetITEM: JEnhance_RewardType; cdecl; {class} function valueOf(P1: JString): JEnhance_RewardType; cdecl; {class} function values: TJavaObjectArray<JEnhance_RewardType>; cdecl; {class} property COINS: JEnhance_RewardType read _GetCOINS; {class} property ITEM: JEnhance_RewardType read _GetITEM; end; [JavaSignature('co/enhance/Enhance$RewardType')] JEnhance_RewardType = interface(JEnum) ['{CA724C25-BB1E-41D7-B106-CBA3E07077E1}'] end; TJEnhance_RewardType = class(TJavaGenericImport<JEnhance_RewardTypeClass, JEnhance_RewardType>) end; Enhance-Connector.rar
  21. Did you try that? TThread.Synchronize(nil, procedure begin ShowMessage('Your Message'); end);
  22. Good Morning, Using TfgActivityDialog on iOS when finalizing the thread often returns this error. Here is the code snippet: if not TabGlobal.dlgAguarde.IsShown then begin FDialogThread := TThread.CreateAnonymousThread(procedure begin try TThread.Synchronize(nil, procedure begin TabGlobal.dlgAguarde.Message := 'Salvando informações.'; TabGlobal.dlgAguarde.Show; end); try CM2 := TCM2.Create(nil); Lista := TFDJSONDataSets.Create; TabGlobal.QryDetalheMembro.Post; TFDJSONDataSetsWriter.ListAdd(Lista, 'membros', TabGlobal.QryDetalheMembro); Codigomembro := CM2.SMClient.AtualizaInformacoesMembro2(iEdicao,iCelula,Lista); if iEdicao = 'I' then begin TabGlobal.QryDetalheMembro.Edit; TabGlobal.QryDetalheMembromem_codigo.Value := Codigomembro; TabGlobal.QryDetalheMembro.Post; if iCelula > 0 then begin with TabGlobal.QryComando do begin Active := False; SQL.Clear; SQL.Add('insert into celulasdiscipulos'); SQL.Add('(cel_codigo, cel_item, mem_codigo)'); SQL.Add('values'); SQL.Add('(:cel_codigo, :cel_item, :mem_codigo)'); ParamByName('cel_codigo').AsInteger := iCelula; ParamByName('cel_item').AsInteger := RetornaAutoIncremento('celulasdiscipulos','cel_item','cel_codigo = '+ IntToStr(iCelula),1); ParamByName('mem_codigo').AsInteger := Codigomembro; ExecSQL; end; {$IF DEFINED(ANDROID)} FiltraCelulasMembros(iCelula,''); {$ENDIF} end; end; with TabGlobal.QryComando do begin Active := False; SQL.Clear; SQL.Add('update membros set'); SQL.Add('mem_batizado = "'+Copy(cmbBATIZADO.Items[cmbBATIZADO.ItemIndex],1,1)+'",'); SQL.Add('mem_fezencontro = "'+Copy(cmbFEZENCONTRO.Items[cmbFEZENCONTRO.ItemIndex],1,1)+'",'); SQL.Add('mem_fezclassebatismo = "'+Copy(cmbCURSOBATISMO.Items[cmbCURSOBATISMO.ItemIndex],1,1)+'",'); SQL.Add('mem_fezescoladelideres = "'+Copy(cmbCURSOLIDERES.Items[cmbCURSOLIDERES.ItemIndex],1,1)+'",'); SQL.Add('mem_fezcursosupervisao = "'+Copy(cmbCURSOSUPERVISORES.Items[cmbCURSOSUPERVISORES.ItemIndex],1,1)+'",'); SQL.Add('mem_fezcursoobreiro = "'+Copy(cmbCURSOOBREIROS.Items[cmbCURSOOBREIROS.ItemIndex],1,1)+'",'); SQL.Add('mem_fezcursoteologia = "'+Copy(cmbCURSOTEOLOGIA.Items[cmbCURSOTEOLOGIA.ItemIndex],1,1)+'",'); SQL.Add('mem_consolidacao1 = "'+Copy(cmbCONSOLIDACAO1.Items[cmbCONSOLIDACAO1.ItemIndex],1,1)+'",'); SQL.Add('mem_consolidacao2 = "'+Copy(cmbCONSOLIDACAO2.Items[cmbCONSOLIDACAO2.ItemIndex],1,1)+'",'); SQL.Add('mem_consolidacao3 = "'+Copy(cmbCONSOLIDACAO3.Items[cmbCONSOLIDACAO3.ItemIndex],1,1)+'",'); SQL.Add('mem_consolidacao4 = "'+Copy(cmbCONSOLIDACAO4.Items[cmbCONSOLIDACAO4.ItemIndex],1,1)+'",'); SQL.Add('mem_consolidacao5 = "'+Copy(cmbCONSOLIDACAO5.Items[cmbCONSOLIDACAO5.ItemIndex],1,1)+'"'); SQL.Add('where mem_codigo = '+IntToStr(TabGlobal.QryDetalheMembromem_codigo.Value)); ExecSQL; end; AtualizaTotalizadoresCelula(iCelula); ok := True; CM2.DisposeOf; except on E : Exception do begin CM2.DisposeOf; TThread.Synchronize(nil, procedure begin TDialogService.MessageDialog('Não foi possível salvar o membro' + sLineBreak + 'Contate a secretaria de células da sua igreja.' + sLineBreak + E.Message, TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0, nil); end); end; end; finally if not TThread.CheckTerminated then TThread.Synchronize(nil, procedure begin TabGlobal.dlgAguarde.Hide; if ok then Close; end); end; end); FDialogThread.FreeOnTerminate := False; FDialogThread.Start; end; The error usually occurs when I close the form. Anyone know how to work around this error? Thank you,
  23. http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_PostgreSQL_(FireDAC)
  24. может быть неправильно, но я делаю так, выбираю разрешения которые нужны в опциях проекта, удаляю из проекта файл AndroidManifest.template.xml и папку Android если они до этого были уже созданы и студия сама сформирует и добавит в манифест выбранные разрешения. если мы в коде укажем что нужно получить разрешение, то приложение будет его запрашивать даже если оно разрешено по умолчанию андроидом. В Rio сделали классно, разбили на три категории и наглядно видно для каких пунктов понадобятся от пользователя разрешения. повторюсь, у меня вся беда началась с того что если в файле AndroidManifest.template.xml оставить строку <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> то в приложении все функции связанные с Wifi работают, но с этой строкой не получится выложить приложение в плей маркет, нужно менять в наглую на <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" /> но с этой строкой функции Wifi переставали работать и я подумал что это из-за того что нужно разрешения пользователя. Прошло много времени с того момента когда задал здесь этот вопрос, теперь конечно уже разобрался, Вы правы, для ACCESS_WIFI_STATE, CHANGE_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE не нужны разрешения начиная с Андроид 6, но функции Wifi работать не будут, даже если запросить разрешения у пользователя и он их разрешит, оказывается с Андроид 6 нужно еще включить ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION тогда все функции WiFi будут работать, но для этих 100% нужно разрешение пользователя. Огромное спасибо за Ваши ответы и отдельное Спасибо за эту полезную ссылку! P. S.Ставил последнюю SDK и ставил последнюю NDK, разницы не заметил, все работает и с теми что идет с Tokyo
  25. Странно, что смогли разобраться с тем, что надо заменять в папках студии, ну и подключать уже кастомное активити в манифесте. Из DW надо подключить только пару файлов и все. Вы в манифесте добавили эти разрешения? И да, запрашивать у пользователя их не надо (потому, думаю, запрос и не выдает система). Для всех ваших разрешений указано Protection level: normal. Запрос нужен для тех, что dangerous. https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_WIFI_STATE и далее по тексту https://developer.android.com/guide/topics/permissions/overview (If your app lists normal permissions in its manifest (that is, permissions that don't pose much risk to the user's privacy or the device's operation), the system automatically grants those permissions to your app. )
  1. Загрузить ещё активность
×
×
  • Создать...