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

chaplin.u@gmail.com

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

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

  • Посещение

Сообщения, опубликованные chaplin.u@gmail.com

  1. файл есть ...\Android\Debug\System.Android.Bluetooth.dcu но я вижу что нужно как сказал ZuBy ещё раз всё уточнить.

    1. Устройства я понятно предоставить не могу но и можно без него т.к. речь идёт о добавлении функции/метода к готовой компоненте.

    2. Как я понял мульти-платформенность в студии работает перенаправлением вызовов функций в студии к нативным функциям платформы. поэтому в директории c:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\net\

    есть System.Android.Bluetooth.pas,System.Mac.Bluetooth.pas,System.Win.Bluetooth.pas.

    3. В компоненте BluetoothLE есть TBluetoothLEDevice у которого есть  функции/методы  http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Bluetooth.TBluetoothLEDevice.

    В этом списке отсутствует function requestMtu(mtu: Integer): Boolean; cdecl; и procedure onMtuChanged(gatt: JBluetoothGatt; mtu: Integer; status: Integer); cdecl;
    которые присутсвуют в c:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\android\Androidapi.JNI.Bluetooth.pas 

    задача в том чтобы подключить их к компоненте. т.е чтобы они появились в меню доступных функций ( см. катинку) и компилятор не матюкнулся когда я напишу FBLEDevice->requestMtu(200)

    т.е. ты можешь положить компоненту на форму и проверить что такая функция присутствует. задача выполнена.

     

     

    ble.png

  2. я думаю что ты глубоко копнул. методы для подключения и др. в стандартной компоненте есть. я могу подключиться, получить все данные . послать и т.д. 

    BLEDevice->Connect();
    BLEDevice->DiscoverServices();
    ....

    нужно только после подключения послать запрос на увеличение размера пакета. т.е. наверное что-то типа вызова интента.

  3. во-первых это невозможно как примеру закрыть дверь изнутри до того как ты вошёл в дом. но ты можешь зайти, поставить код на замок и потом заходить по этому только тебе известному коду.

    во-вторых как я установил процедуры установки пароля в компоненте нет ! 

  4. как-то реализовать функцию по увеличению пакета.  вот её описание : https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#requestMtu(int)

    в файле c:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\android\Androidapi.JNI.Bluetooth.pas  есть её вызов  :  function requestMtu(mtu: Integer): Boolean; cdecl;
    а в компоненте её нет.

  5. Ребята вы меня не за того принимаете. Чукча не писатель.Чукча - читатель. Я не дельфиец а бильдеровец и могу только пользоваться готовой компонентой а не переделывать Абракадабру.

    скажем такой код на жабе можно закатать в студию ?

     public static void exchangeGattMtu(int mtu) {
            int retry = 5;
            boolean status = false;
            while (!status && retry > 0) {
                status = mBluetoothGatt.requestMtu(mtu);
                retry--;
            }
  6. В 9/12/2016 в 23:40, chaplin.u@gmail.com сказал:

    BTHLEENUM_ATT_MTU_INITIAL_NEGOTIATION = 525; 

    докопался до истины и она посредине. 

    стандартно обмен идёт по минимуму - 20 байт

    но есть процесс переговоров (NEGOTIATION ) между телефоном и устройством который может привести к увеличению пакета до 525 байт.

    апликация должна запросить устройство на увеличение пакета. так вот несмотря на то что в файле этот параметр как видите есть в поставляемой от Абракадабры компоненте нет реализации этого процесса.

    как и полностью отсутствует обмен паролем для защиты от постороннего вмешательства. т.е. любой посторонний может получить полный контроль над вашим устройством.

    Вывод : компонента поставляется в ознакомительных целях и для создания коммерческих приложений запрещена !

    Ну и если кто знает где есть нормальная компонента - просьба сообщить.

     

  7. Оказалось что нужно класть в общедоступные папки а это чревато удалением нужного файла. А как в случае отсутствия файла дать ссылку на скачивание и запуск скаченного файла ?

  8. Виталий просьба осветить вопрос поподробнее.

    1. Что за внешнее хранилище ? Какой путь нужно ставить в деплоймент менеджере и какую функцию использовать для поиска файла ( GetDocumentsPath или GetSharedDocumentsPath) ?

    2. Если у файла имя myDoc.pdf   Нужно ли указать : AFileName =  System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDocumentsPath(), L"file:MyDoc.pdf"); или как-то иначе ?

     

×
×
  • Создать...