sinuke

Пользователи
  • Публикаций

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

  • Посещение

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

    21

sinuke стал победителем дня 10 сентября

sinuke имел наиболее популярный контент!

1 Подписчик

Информация о sinuke

  • Звание
    Продвинутый пользователь

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. я когда отвечал, там даже вопроса не было... а утверждение. автор уже просто хоть чуток изменил первоначальное сообщение
  2. sinuke

    FPushService.DeviceTokenValue = nil Что делать?

    Получилось получить DeviceToken? А то у меня такая же проблема... Upd: В чате выяснилось, что код создания подключения и получения токена нужно выполнять в отдельном потоке. Например так: TTask.Run( procedure () begin FPushService := nil; FPushServiceConnection := nil; {$IF defined(ANDROID)} FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); FPushService.AppProps[TPushService.TAppPropNames.GCMAppID] := ANDROID_SEND_ID; {$ENDIF} if Assigned(FPushService) then begin FPushServiceConnection := TPushServiceConnection.Create(FPushService); FPushServiceConnection.OnChange := OnServiceConnectionChange; FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; FPushServiceConnection.Active := True; FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; TThread.Synchronize(TThread.CurrentThread, procedure () begin Log('DeviceID: ' + FDeviceID); Log('DeviceToken: ' + FDeviceToken); end); end; end); Так все работает!
  3. sinuke

    Tswitch скорость переключения

    скопируйте исходник в папку с проектом и можете редактировать как угодно. наверное с С++ так можно
  4. Ну может сделать ленту с акциями и скидками... А также, при просмотре детализации по акции сделать что-то типа "Принять участие / Записаться и т.д."
  5. Edit положить на Layout. Настройки у Layout такие, чтобы он занимал весь экран поверх всех компонентов. В Layout.OnTap скрывать Layout
  6. Всем привет Как все знаете, с весны этого года Google требует для всех новых приложений поддержку новейших API (а осенью затребует и от уже опубликованных). В FMX-приложениях это делается изменением targetAPI в манифесте. Что я собственно и сделал. Но столкнулся с неприятной особенностью. А именно: невозможно отправить картинку с помощью ShareSheetAction. При попытке отправить вылетает вот такая ошибка: В интернете наткнулся на статью (ссылка), в которой говорится, что начиная с API 24 механизм отправки картинок через Intent поменялся. Там же приводится решение того, как это сделать по новым требованиям. И конечно же это решение на Java, в Delphi решения данного вопроса нет. Решил попробовать реализовать, но столкнулся с непреодолимыми для себя проблемами.... Там получается три действия: 1) Создать и задеплоить файл res/xml/provider_paths.xml со следующим содержимым: <?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="."/> </paths> С этим проблем не возникло. Создал, задеплоил 2) Добавить в манифест провайдер: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" ... <application ... <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> </provider> </application> </manifest> Вот тут возникли проблемы. После добавления данных строк в манифест проект перестал деплоиться - ругается на недоступный символ "$" 3) Поменять код получения Uri картинки... Uri photoURI = Uri.fromFile(createImageFile()); ...меняется на: Uri photoURI = FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID + ".provider", createImageFile()); Однако, в FMX.MediaLibrary.Android.pas код для получения Uri выглядит следующим образом: procedure TSharingManagerAndroid.AddImage(var AIntent: JIntent; const AImage: TBitmap); var ImageFile: JFile; ImageUri: Jnet_Uri; ArrayList: JArrayList; OutputDir: JFile; begin Assert(AIntent <> nil); Assert(AImage <> nil); OutputDir := TAndroidHelper.Context.getExternalCacheDir(); ImageFile := TJFile.JavaClass.createTempFile(StringToJString('attachment'), StringToJString('.png'), OutputDir); ImageUri := TJnet_Uri.JavaClass.fromFile(ImageFile); AImage.SaveToFile(JStringToString(ImageFile.getAbsolutePath)); if FDataType = TSharingDataType.Image then AIntent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((ImageUri as ILocalObject).GetObjectID)) else begin // If we use ACTION_SEND_MULTIPLE action of Intent, we should put image throught Parcelable Array List. // Because in this case other application read EXTRA_STREAM like a ArrayList<Uri> ArrayList := TJArrayList.Create; ArrayList.add(ImageUri); AIntent.putParcelableArrayListExtra(TJIntent.JavaClass.EXTRA_STREAM, ArrayList); end; end; И тут также возникает сложность для меня, т.к. я не представляю как можно получить ImageUri новым способом. В общем, давайте разбираться, как можно решить данный вопрос...
  7. sinuke

    Просмотр картинок в ListView FMX

    Я бы сделал это кодом. Отключил бы стандартное выделение ЛВ. А кодом бы уже смотрел в какую область был клик/тап. В зависимости от этого рисовал бы ректагл вокруг нужного изображения Но код получился бы конечно немного громоздкий.
  8. sinuke

    Увеличение содержимого TImage

    Посмотрите вот этот пример - https://github.com/sinuke/Image-Zoom-Demo Там есть увеличение жестами. И мышью. И увеличение выбранной области
  9. 10.2 (Tokyo) или Berlin?
  10. опечатался. верно. ListBox тормозит
  11. Компонент ListView предназначен для вывода списков. При этом на Андройде он не тормозит, в отличие ListView. Но кроме списков его можно приспособить для вывода практически любой информации. Правда сложновато. MultiView - для бокового меню Label - текстовые метки SpeedButton - кнопки TrackBar - в настройках используется для изменения какого либо значения Tlayout - "прозрачный" компонент, удобный для группировки других компонентов и их выравнивания Ну а вам, как человеку, который не знает даже, что это за компоненты, наверное самым простым будет использование WebBrowser, в который будете загружать нужные страницы. Думаю это самый простой случай, хотя и не самый стабильный
  12. можно сделать как здесь - https://play.google.com/store/apps/details?id=com.sinukeapps.locksmithery основной компонент, на котором все сделано - ListView (списки, меню, вывод информации и тесты, а также "о приложении") остальное - TMultiView для бокового дровера, лейблы, пару кнопок, трекбар. Для выравнивания - TLayout