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

Компоненты для передачи данный из Windows- в Android-приложение


Delpher-X

Вопрос

Итак, я пробовал использовать компоненты AppTethering для передачи данных между VCL-приложением работающим под Windows и мобильным FMX-приложением и потерпел неудачу, так как выяснилось что потоки данных данные компоненты на деле не передают. И у меня возник вопрос: а нет ли каких других компонентов в современной Embarcadero Studio, которые бы позволяли передавать как строковые данные, так и файлы между приложениями? Особенно меня интересуют все же файлы. 

Ссылка на комментарий

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Похожий контент

    • Автор Delpher-X
      Итак, у меня была Delphi 10.3 Community Editon, которой я пользовался год. Затем, бесплатная лицензия истекла и я поставил себе новую Community Edition - на этот раз, версию 10.4. Однако она оказалась полным отстоем - ничего нового и интересного в ней нет, а вот целая куча нужных вещей оказалась выпилена (включая то, что многие старые компоненты больше не работают). 
      А посему у меня вопрос - как реанимировать установленную у меня Delphi 10.3, как продлить ее Community Edition лицензию? 
    • Автор Delpher-X
      Итак, я установил себе новую Delphi 10.4 CE, так как у старой Delphi 10.3 CE кончился годовой срок. Однако, у меня возникла проблема с разработкой, точнее - с компиляцией приложений для Android. Дело в том, что в поставке новой Embarcadero RAD 10.4 отсутствует AVD Manager (эмулятор для Android), что вы и можете видеть на втором скрине. А когда я пытаюсь использовать старый, из набора Embarcadero RAD 10.3, компиляция вылетает с ошибкой, которую вы можете видеть на первом скрине.   


    • Автор Delpher-X
      Итак, как добавить в приложение проверку наличия соединения с Интернетом? Я всегда пользовался кодом: 
      var NetControl : DWORD; begin NetControl := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY; Result := InternetGetConnectedState(@NetControl, 0); end; Однако здесь он явно не подходит, так как предназначен для Windows, а меня интересует Android. Я пробовал использовать компонент IdIPWatch, но он все время верещал о том что Интернета нет, несмотря на то что смартфон был вполне подключен к сети. 
    • Автор Delpher-X
      Пытаюсь программно добавить в своем проекте компонент IdFTP: 
      FTPBot : TIdFTP; FTPBot := TIdFTP.Create(); FTPBot.Name := 'FTPGhost'; FTPBot.Passive := True; FTPBot.Host := ''; FTPBot.Username := ''; FTPBot.Password := ''; Код компилируется нормально. 
      Однако, когда я пытаюсь обратиться к свойству TransferType полученного объекта: 
      FTPBot.TransferType.ftBinary; Программа при компиляции вылетает с ошибкой, утверждает что нельзя так писать. В чем дело? 
    • Автор Simons Cat
      У меня среда программирования rad studio Delphi 10.4.2. Собственно ищу совета как отправить и получить ответ на запрос USSD.
      Нашел в интернете единственный пример более или менее который похож на правду.
      Привел его к виду нормальному виду, но не хватает знаний как передать функцию CallBack.
      procedure TForm7.Button6Click(Sender: TObject); var Temp:Jstring; ResponceCallBack: JTelephonyManager_UssdResponseCallback; handler: JHandler; begin     TM :=TJTelephonyManager.Create;   handler := TJHandler.Create;   ResponceCallBack := TJTelephonyManager_UssdResponseCallback.Wrap(   TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE));    TM.sendUssdRequest(StringToJString('*100#'), ResponceCallBack,handler);   end;  
      На java делается вот так. Не знаю как этот код переделать в delphi.
      TelephonyManager =  telephonyManager(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);     Handler handler = new Handler();     TelephonyManager.UssdResponseCallback callback = new TelephonyManager.UssdResponseCallback() {         @Override         public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {             super.onReceiveUssdResponse(telephonyManager, request, response);             Log.e("ussd",response.toString());           }           @Override         public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager, String request, int failureCode) {             super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);             Log.e("ussd","failed with code " + Integer.toString(failureCode));         }     };       try {            Log.e("ussd","trying to send ussd request");            telephonyManager.sendUssdRequest("*123#",                     callback,                     handler);         }catch (Exception e){                 String msg= e.getMessage();             Log.e("DEBUG",e.toString());             e.printStackTrace();         }  
    • Автор Aigazy
      Добрый день всем!

      Сейчас пишу десктопное приложение на Delphi FMX.
      На тач скринах не визуализируется эффект нажатия на кнопки (TButton, TSpeedButton, TCornerButton и тд.) и на другие компоненты, которые должны иметь эффект нажатия. Обработчик события onClick при этом работает стабильно, а вот эффект нажатия нет. Событие onMouseDown работает через раз.
      На стандартных приложениях FMX эффект нажатия на кнопки проявляется через раз или зависит от силы нажатия на тач экран или от нажатия подушкой пальца.
      В других стандартных приложениях Windows (проводник, калькулятор, блокнот и т.д.) все работает, эффект нажатия правильно визуализируется.
      Я хотел использовать FMX стили в своем проекте, но без визуального эффекта нажатия, портится общая картина всего приложения и не понятно нажалась ли кнопка.
      Кто-нибудь сталкивался с данной проблемой? Мне посоветовали обратиться в Embarcadero's Quality Portal, но у меня увы нет аккаунта, с которого я смог бы опубликовать данный баг (если это баг, конечно же :)).
      Буду очень признателен за помощь)
      Я снял на видео данный баг. Заранее прошу прощения за качество съемки.
      https://drive.google.com/file/d/1UQnZ-K_F_l3bOfp81Zl9WNym2t7RbxC0/view?usp=sharing
      https://drive.google.com/file/d/16KN5HXXrgPseL54iMzPk3umJvjaqDisU/view?usp=sharing
    • Автор Delpher-X
      У меня есть следующий код, который передает данные из потока в объект типа TStrings: 
      var F : TMemoryStream; S : TStrings; begin F := TMemoryStream.Create; S := TStringList.Create; F.LoadFromFile('C:/File.jpg'); S.LoadFromStream(F); Из TMemoryStream в TStrings все передается нормально. Однако - как обратно? Как снова преобразовать объект TString в поток данных, дабы снова можно было бы сохранить его в полноценный файл? 
    • Автор slav_z
      Все разработчики при работе с FMX рано или поздно сталкиваются с одной и той же проблемой: необходимо исключить "случайное" срабатывание нажатий элементов внутри скроллбокса во время его скроллинга. Идут годы, а решения так и нет. Давайте попробуем это исправить. Поехали!
      Запускаем IDE, создаем новый проект, кидаем на форму TVertScrollBox и на него чего-нибудь побольше... запускаем на мобильном устройстве, пытаемся скроллировать,

      получаем проблемы в виде срабатывания разных событий типа OnClick элементов.
      Решение состоит в том, чтобы сделать элементы "невидимыми" для событий связанных с действиями пользователя с экраном во время скроллинга.
      Делаем следующее:

      Все. Переносим код в базовую форму, делаем его более гибким, убираем все те костыли, которые мы уже успели сделать ранее...
      Удачи!
      https://github.com/slav-libx/scroll-click.git
    • Автор Вадим Смоленский
      В FireMonkey приходится перехватывать сообщения Windows, чтобы обеспечить корректное сворачивание и разворачивание окон. Это здесь уже обсуждалось. Я в итоге сделал у себя так:
      var TheFormIsMinimized: Boolean = False; TheFormWasMaximized: Boolean = False; function NewWndProc(Wnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; begin if (Msg = WM_SHOWWINDOW) and (LParam = SW_PARENTCLOSING) and (not TheFormIsMinimized) then begin TheFormIsMinimized := True; TheFormWasMaximized := (MainForm.WindowState=TWindowState.wsMaximized); SendMessage(FormToHWND(MainForm), WM_SYSCOMMAND, SC_MINIMIZE, 0); MainFormp.WindowState := TWindowState.wsMinimized; end else if (Msg = WM_SHOWWINDOW) and (LParam = SW_PARENTOPENING) and (TheFormIsMinimized) then begin TheFormIsMinimized := False; SendMessage(FormToHWND(MainForm), WM_SYSCOMMAND, SC_RESTORE, 0); if TheFormWasMaximized then begin SendMessage(FormToHWND(MainForm),WM_SYSCOMMAND,SC_MAXIMIZE,0); LookUp.WindowState:=TWindowState.wsMaximized; end else begin SendMessage(FormToHWND(MainForm),WM_SYSCOMMAND,SC_RESTORE,0); LookUp.WindowState:=TWindowState.wsNormal; end; end else Result:=CallWindowProc(OldWndProc, Wnd, Msg, WParam, LParam); end; Это работает — но восстановленное из трея окно находится не в фокусе. Пользователь должен дополнительно щелкнуть по нему мышкой. Вставка оператора SetFocus(FormToHWND(MainForm)) непосредственно сюда же ничего не дает — равно как и операторов SendMessage(FormToHWND(MainForm),WM_ACTIVATE,WA_ACTIVE,0),   Winapi.Windows.SetActiveWindow(FormToHwnd(MainForm)) или SetForegroundWindow(FormToHWND(MainForm)). Мне приходится запускать из этого места специальный таймер — и уже в обработчике таймера, после некоторой задержки, вызывать SetFocus(FormToHWND(MainForm)). Но и это работает не всегда. Например, если окно было развернуто на весь экран, а свернуто было щелчком по кнопке «Свернуть все окна», то после его разворачивания опять фокуса нет (насколько могу судить, в этом случае не запускается таймер). Нет ли более изящного и надежного способа наладить фокус?
    • Автор uakmal
      Здравствуйте!
      Создаю медиаплеер для Android TV. 
      Запускаю плеер, нажимаю на условную кнопку, которая делает следующее: 
      MediaPlayer1.FileName:='/storage/emulated/0/download/1.mp4'; После нажатия вылетает окошко с надписью:
      java.lang.java.lang.illegalargumentexception после закрытия окошки нажимаю на play, но ничего не происходит.
      Подскажите, пожалуйста как исправить это?
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...