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

mazayhin

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

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

  • Посещение

  • Победитель дней

    19

Активность репутации

  1. Like
    mazayhin получил реакцию от Anatoliy в Как узнать Device Name на Андроиде?   
    Это будет имя Bluetooth-адаптера.
    //uses System.Bluetooth; TBluetoothManager.Current.CurrentAdapter.AdapterName  
  2. Like
    mazayhin получил реакцию от Barbanel в Как узнать Device Name на Андроиде?   
    Ну видимо, не для всех это очевидно.
    Ну и да, называется оно "имя", а про БТ не слова )
  3. Like
    mazayhin отреагировална Dmitry_4501 в [РЕШЕНО]: Как отловить кнопки пульта ДУ   
    В общем удалось решить проблему с кнопками пульта. Теперь приложение распознает все кнопки с пульта. Если кому-то нужно, прикрепил архив. (Delphi 10.3.1 Rio)
     
    fmx_androidkey_fix.zip
  4. Thanks
    mazayhin получил реакцию от Татьяна в Как узнать Device Name на Андроиде?   
    Это будет имя Bluetooth-адаптера.
    //uses System.Bluetooth; TBluetoothManager.Current.CurrentAdapter.AdapterName  
  5. Like
    mazayhin получил реакцию от Barbanel в Как узнать Device Name на Андроиде?   
    Это будет имя Bluetooth-адаптера.
    //uses System.Bluetooth; TBluetoothManager.Current.CurrentAdapter.AdapterName  
  6. Like
    mazayhin отреагировална msp888 в Wifi Multicast packets   
    Жаль, что никто не помог...
    Проблему решил.
    Как всегда embarcadero ничего не доводит до конца!
    Обертка для мультиплатформенного сокета (TSocket)  криво работает как под windows так и под android.
    Для работы с Multicast-пакетами под android используйте JMulticastSocket из android api.
  7. Thanks
    mazayhin отреагировална Евгений Корепов в Передача и прием JSON в PHP   
    Я бы переделал и код отправки и код приема.
    При отправке вы выполняете лишние действия, проверяете наличие интернет, преобразуете json в лист.
    Отправка любым способом желательна в виде "Ключ=Значение", чтоб на стороне сервера корректно распознать данные.
    Вот отправка POST (добавьте в uses System.Net.Mime):
    function TForm1.PostURL(const aurl, json: string): string; var AHTTPClient : THTTPClient; AHttpResponse: IHttpResponse; ASource: TMultipartFormData; begin result:= ''; AHTTPClient:= THTTPClient.Create; ASource:=TMultipartFormData.Create(); ASource.AddField('request', json); try try AHttpResponse := AHTTPClient.Post(aurl, ASource); if AHttpResponse.StatusCode <> 200 then Result := AHttpResponse.StatusText else Result := AHttpResponse.ContentAsString(); except on E: exception do ShowMessage('Ошибка сети: '+E.Message); end; finally FreeAndNil(ASource); FreeAndNil(AHTTPClient); end; end; Но гораздо проще и быстрее делать GET (добавьте в uses System.NetEncoding):
    function TForm1.GetURL(const aurl, json: string): string; var AHTTPClient : THTTPClient; AHttpResponse: IHttpResponse; AEncodedJSON : String; begin result:= ''; AHTTPClient:= THTTPClient.Create; AEncodedJSON:=System.NetEncoding.TURLEncoding.URL.Encode(json); try try AHttpResponse := AHTTPClient.Get(aurl + '?request=' + AEncodedJSON); if AHttpResponse.StatusCode <> 200 then Result := AHttpResponse.StatusText else Result := AHttpResponse.ContentAsString(); except on E: exception do ShowMessage('Ошибка сети: '+E.Message); end; finally FreeAndNil(AHTTPClient); end; end; file_get_contents("php://input", "r") - это тоже вариант, но никогда такое не используйте.
    На стороне сервера, в php есть специальные глобальные переменные для получения данных $_REQUEST, $_POST и $_GET.
    $_POST и $_GET - для соответствующих HTTP методов. $_REQUEST - универсальный.
    Вот вам код php для сервера, я там описал вспомогательную функцию лога MyLog, измените путь логов на свой.
    <?php @ini_set("display_errors", "1"); error_reporting(E_ALL); //@ini_set("display_errors", "0"); error_reporting(0); function MyLog($Title, $Value = "", $Debug = false) { $LogFile = "/var/log/service/test001.log"; if (is_array($Title)) $Title = "\n".print_r($Title, true)."\n"; if (is_array($Value)) $Value = "\n".print_r($Value, true)."\n"; $Message = date("Y.m.d H:i:s")." ".$Title.$Value."\r\n"; if ($Debug) echo $Message; file_put_contents($LogFile, $Message, FILE_APPEND); } // Проверяем наличие параметра request if (!isset($_REQUEST["request"])) { echo "Нет параметров"; return; } // Декодируем строку из $_REQUEST["request"] в массив $RequesrArray = json_decode($_REQUEST["request"], true); // Проверяем прошло ли декодирование нормально if (!isset($RequesrArray)) { echo "Ошибочный JSON"; return; } MyLog('*************************************************************************************************************************'); MyLog('$_REQUEST:', $_REQUEST); MyLog('$_POST:', $_POST); MyLog('$_GET:', $_GET); MyLog('$RequesrArray:', $RequesrArray); // Работаем с массивом $RequesrArray $lessongrid_type = $RequesrArray['lessongrid_type']; $schedule0 = $RequesrArray['schedule'][0]; Обратите внимание json_decode($_REQUEST["request"], true); используется с вторым параметром true - при этом создается не объект (медленно), а ассоциативный массив (быстрее некуда).
    Вот код Delphi
    procedure TForm1.FormCreate(Sender: TObject); Var AURL : String; AJSON : String; begin AURL:='http://myserver.ru/api/test001.php'; AJSON:='{"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]}'; PostURL(AURL, AJSON); GetURL(AURL, AJSON); end; А вот логи на стороне сервера:
    2019.06.06 13:29:13 ************************************************************************************************************************* 2019.06.06 13:29:13 $_REQUEST: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $_POST: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $_GET: Array ( ) 2019.06.06 13:29:13 $RequesrArray: Array ( [lessongrid_idpartner] => 2 [lessongrid_type] => 0 [lessongrid_idpointcity] => 1 [lessongrid_iddircourses] => 1 [lessongrid_idteacher] => 1 [schedule] => Array ( [0] => 0:00 [1] => 5:00 [2] => 0:00 [3] => 0:00 [4] => 0:00 [5] => 0:00 [6] => 0:00 ) ) 2019.06.06 13:29:13 ************************************************************************************************************************* 2019.06.06 13:29:13 $_REQUEST: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $_POST: Array ( ) 2019.06.06 13:29:13 $_GET: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $RequesrArray: Array ( [lessongrid_idpartner] => 2 [lessongrid_type] => 0 [lessongrid_idpointcity] => 1 [lessongrid_iddircourses] => 1 [lessongrid_idteacher] => 1 [schedule] => Array ( [0] => 0:00 [1] => 5:00 [2] => 0:00 [3] => 0:00 [4] => 0:00 [5] => 0:00 [6] => 0:00 ) ) Как видите можно использовать код с $_REQUEST в обоих случаях.
    Вот итоговый код php
    <?php @ini_set("display_errors", "1"); error_reporting(E_ALL); //@ini_set("display_errors", "0"); error_reporting(0); // Проверяем наличие параметра request if (!isset($_REQUEST["request"])) { echo "Нет параметров"; return; } // Декодируем строку из $_REQUEST["request"] в массив $RequesrArray = json_decode($_REQUEST["request"], true); // Проверяем прошло ли декодирование нормально if (!isset($RequesrArray)) { echo "Ошибочный JSON"; return; } // Работаем с массивом $RequesrArray $lessongrid_type = $RequesrArray['lessongrid_type']; $schedule0 = $RequesrArray['schedule'][0];  
  8. Like
    mazayhin получил реакцию от Ingalime в Пути к ресурсам андройд   
    Вот статья, что куда деплоить надо, и как получить доступ к этому
    http://delphifmandroid.blogspot.com/2014/02/deployment-manager.html
  9. Like
    mazayhin получил реакцию от Barbanel в Пути к ресурсам андройд   
    Вот статья, что куда деплоить надо, и как получить доступ к этому
    http://delphifmandroid.blogspot.com/2014/02/deployment-manager.html
  10. Like
    mazayhin отреагировална dnekrasov в помогие код сделать рабочим в firemonkey   
    Не надо никак менять этот модуль. Скомпилился сразу и без ошибок (только варнинги).
    Насчет Ваших ошибок - похоже Вы просто uSMBIOS и System.TypInfo в uses забыли подключить.
  11. Like
    mazayhin отреагировална Tumaso в подключения   PostgreSQL   
    как насчет воспользоваться поиском нужных файлов по своей файловой системе? например проводником или Far Manager или Total Commander или еще чем нибудь подобным...
    плюс в ссылке выше есть своя ссылка на скачивание
  12. Like
    mazayhin получил реакцию от Dev в Требования к целевому уровню API с августа 2018 г.   
    Странно, что смогли разобраться с тем, что надо заменять в папках студии, ну и подключать уже кастомное активити в манифесте.
    Из 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. )
  13. Like
    mazayhin получил реакцию от Dev в Требования к целевому уровню API с августа 2018 г.   
    Ставьте целевой уровень 26 и используйте KastriFree https://github.com/DelphiWorlds/KastriFree
  14. Like
    mazayhin получил реакцию от Ingalime в Конвертация JParcelable в JPendingIntent   
    Проверить возможности нет, но скорее всего
    PIntent := JPendingIntent(Parcelable);
  15. Like
    mazayhin получил реакцию от Евгений Корепов в Андроид, WebBrowser, Geolocation - запрос разрешения на геолокацию   
    Использовать LocationSettingsReqest, транслировав его. Но или устаревшее SettingsApi.
    К сожалению нет возможности самому посмотреть и воспроизвести это все, временно нет подходящего аппарата
  16. Like
    mazayhin получил реакцию от Tumaso в Как выгрузить приложение   
    Ну это вопросы к разработчикам системы, почему они решили что то, что пользователь закрыл, должно из памяти выгружаться системой (да, оно висит в recent, но на деле может быть выгружено - это вы видите, когда запускаете снова от туда, и все данные и состояние теряется.) JNI тут не причем. 
    Почитайте первоисточник (доки по андроиду от гугла, про жц активити. Оно одно, обычно, для всего приложения на делфи)
    Ну и попробуйте "закрыть" тот же навигатор гугла. Что будет? - поделитесь результатом
  17. Like
    mazayhin получил реакцию от Ingalime в Как выгрузить приложение   
    Ну это вопросы к разработчикам системы, почему они решили что то, что пользователь закрыл, должно из памяти выгружаться системой (да, оно висит в recent, но на деле может быть выгружено - это вы видите, когда запускаете снова от туда, и все данные и состояние теряется.) JNI тут не причем. 
    Почитайте первоисточник (доки по андроиду от гугла, про жц активити. Оно одно, обычно, для всего приложения на делфи)
    Ну и попробуйте "закрыть" тот же навигатор гугла. Что будет? - поделитесь результатом
  18. Like
    mazayhin отреагировална krapotkin в Рисование маркеров на определенных уровнях Zoom-a   
    origin насколько я помню это точка изображения, которая встанет на указанную координату
    если у вас стрелочка нарисована, вы же хотите, чтобы конец стрелки указывал на нужную точку, а не пустая точка (0,0) вашей картинки
  19. Like
    mazayhin получил реакцию от Ingalime в Как выгрузить приложение   
    Первым делом, конечно, обновиться.
    Люди пишут что https://developer.android.com/reference/android/app/Activity.html#finishAndRemoveTask()
    Но сам не проверял (может завтра), ну и флаг для активити в манифесте 
    android:autoRemoveFromRecents="true"/>  
  20. Like
    mazayhin получил реакцию от Barbanel в api KeyStore как реализовать в с++ Builder   
    Пример во вложении. Первым делом надо сделать Init.
    Пример написан как попало, все надергано кусками, к сожалению.
    Если кто-нибудь доведет до ума, и выложит на форум - будет замечательно!
    Обратите внимание - операция CreateRSAEntry - длительная, чем больше ключ, тем дольше. В тесте после нажатия на кнопку подвиснет на пару секунд.
    Шифрованные строки в примере надо смотреть в logcat. Так же для AES туда выведен вектор IV.
    Преобразование в/из base64 - нативное.
     
     
    KeyStore.zip
  21. Like
    mazayhin получил реакцию от Ingalime в api KeyStore как реализовать в с++ Builder   
    Пример во вложении. Первым делом надо сделать Init.
    Пример написан как попало, все надергано кусками, к сожалению.
    Если кто-нибудь доведет до ума, и выложит на форум - будет замечательно!
    Обратите внимание - операция CreateRSAEntry - длительная, чем больше ключ, тем дольше. В тесте после нажатия на кнопку подвиснет на пару секунд.
    Шифрованные строки в примере надо смотреть в logcat. Так же для AES туда выведен вектор IV.
    Преобразование в/из base64 - нативное.
     
     
    KeyStore.zip
  22. Like
    mazayhin получил реакцию от Ingalime в api KeyStore как реализовать в с++ Builder   
    Ок! А если кто нибудь листнер на java для сканера отпечатков напишет, что б колбэк в делфи прокинуть, то покажу и работу со сканером....
  23. Like
    mazayhin получил реакцию от Ingalime в api KeyStore как реализовать в с++ Builder   
    Я могу отправить пример работы с кейстором, и шифрование/расшифровка на симметричном и асимметричном ключах из стора, но он для делфи. Вроде, к билдеру можно подключить. Разберетесь?
  24. Like
    mazayhin получил реакцию от Женя в api KeyStore как реализовать в с++ Builder   
    Я могу отправить пример работы с кейстором, и шифрование/расшифровка на симметричном и асимметричном ключах из стора, но он для делфи. Вроде, к билдеру можно подключить. Разберетесь?
  25. Like
    mazayhin получил реакцию от Barbanel в api KeyStore как реализовать в с++ Builder   
    Ок! А если кто нибудь листнер на java для сканера отпечатков напишет, что б колбэк в делфи прокинуть, то покажу и работу со сканером....
×
×
  • Создать...