Главная » Файлы » Delphi » Статьи |
Tethering. Часть 1. Обновление списков, отправка сообщения.
[ Скачать проект (65.9 Kb) ] | 03.05.2015, 14:10 |
Технология App Tethering (далее Tethering) появилась в Rad Studio XE6. Tethering работает как в VCL так и в FM. Цель всего курса статей по Tethering написание собственной информационной системы позволяющей:
Для основы проекта воспользуемся готовым примером от разработчиков, а именно проектом PhotoWall. Информационная система будет состоять из двух проектов:
Рассмотрим передачу сообщения от передатчика (Android) приёмнику (Windows). Сама передача текста выглядит просто: TAP.SendString(TM.RemoteProfiles[LbWalls.ItemIndex], 'String', Memo1.Text);Где:
Memo.Lines.Add(AResource.Value.AsString); Где:
Приемник: На форме имеется три компонента: TMemo, TTetheringManager, TTetheringAppProfile: а также две процедуры: процедура OnRequestManagerPassword компонента TTetheringManager (RTM), отвечающая за получение пароля (для своего проекта заменить на другой): procedure TRecieveForm.RTMRequestManagerPassword(const Sender: TObject; const RemoteIdentifier: string; var Password: string); begin Password := '1234'; end;процедура OnResourceReceived компонента TTetheringAppProfile(RTAP), вызываемая при получении данных: procedure TRecieveForm.RTAPResourceReceived(const Sender: TObject; const AResource: TRemoteResource); begin Memo.Lines.Add(AResource.Value.AsString); end; Передатчик устроен несколько сложнее: На форме: TTaskBar, TButton/TSpeedButton, TText, TListBox, TMemo, TTetheringManager, TTetheringAppProfile: Процедуры: Для удобства созданы дополнительно две процедуры, процедура FindWalls отвечает за разъединение соединений между устройствами, процедура RefreshList отвечает за обновление списка удаленных устройств, а также автоматически подключается к первому удаленному профилю: procedure TSendForm.FindWalls; var I: Integer; begin LbWalls.Clear; for I := TM.PairedManagers.Count - 1 downto 0 do TM.UnPairManager(TM.PairedManagers[I]); TM.DiscoverManagers; end; procedure TSendForm.RefreshList; var I: Integer; begin LbWalls.Clear; for I := 0 to TM.RemoteProfiles.Count - 1 do LbWalls.Items.Add(TM.RemoteProfiles[I].ProfileText); if LbWalls.Count > 0 then begin LbWalls.ItemIndex := 0; Connected := TAP.Connect(TM.RemoteProfiles[0]); end; end;а также процедуры обращающиеся к ним: OnShow формы: procedure TSendForm.FormShow(Sender: TObject); begin FindWalls; end;OnEndManagersDiscovery компонента TTetheringManager(TM), вызывается при завершении поиска удаленных TTetheringManager: procedure TSendForm.TMEndManagersDiscovery(const Sender: TObject; const RemoteManagers: TTetheringManagerInfoList); var I: Integer; begin for I := 0 to RemoteManagers.Count - 1 do TM.PairManager(RemoteManagers[I]); end;OnEndProfilesDiscovery компонента TTetheringManager(TM), вызывается при завершении поиска удаленных TTetheringAppProfile: procedure TSendForm.TMEndProfilesDiscovery(const Sender: TObject; const RemoteProfiles: TTetheringProfileInfoList); begin RefreshList; end;OnRemoteManagerShutdown компонента TTetheringManager(TM), вызывается при разъединении связи с удаленным TTetheringManager: procedure TSendForm.TMRemoteManagerShutdown(const Sender: TObject; const ManagerIdentifier: string); begin RefreshList; end;OnRequestManagerPassword компонента TTetheringManager(TM): procedure TSendForm.TMRequestManagerPassword(const Sender: TObject; const RemoteIdentifier: string; var Password: string); begin Password := '1234'; end;OnClick компонента TSpeedButton, с помощью которой отправляется сообщение: procedure TSendForm.SendButtonClick(Sender: TObject); begin TAP.SendString(TM.RemoteProfiles[LbWalls.ItemIndex], 'String', Memo1.Text); end; Проверяем работоспособность приложений: в списке приёмников отображены два найденных приемника, отправим на один из них сообщение: Как видно сообщение доставлено. В следующий раз более подробно рассмотрим свойства и процедуры компонентов TTetheringManager и TTetheringAppProfile. Передача файлов рассматриваться не будет, т.к. она отлична показана в оригинальном проекте PhotoWall. | |
Просмотров: 1945 | Загрузок: 358 | |
Всего комментариев: 0 | |