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

Pax Beach

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

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

  • Посещение

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

    12

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

  1. Like
    Pax Beach получил реакцию от Rusland в Программное удаление приложения из списка последних   
    На StackOverflow подсказали решение, адаптировал для Delphi (модуль для работы с процессами Android описан здесь):
    if TOSVersion.Check(5, 0) then begin TAndroidHelper.Activity.finishAndRemoveTask; Log('- finishAndRemoveTask - OK'); end else if TOSVersion.Check(4, 1) then begin TAndroidHelper.Activity.finishAffinity; Log('- finishAffinity - OK'); end else begin TAndroidHelper.Activity.finish; Log('- finish - OK'); end; TJProcess.JavaClass.killProcess(TJProcess.JavaClass.myPid); Log('- killProcess - OK');  
  2. Like
    Pax Beach получил реакцию от Rusland в Медиа громкость   
    Управление громкостью звуковых потоков в Android:
    Модуль Androidapi.OpenSles.pas содержит готовые константы для управления громкостью с помощью метода контекста setVolumeControlStream:
    { Audio playback stream type values } { same as android.media.AudioManager.STREAM_VOICE_CALL } SL_ANDROID_STREAM_VOICE: SLint32 = $00000000; {$EXTERNALSYM SL_ANDROID_STREAM_VOICE} { same as android.media.AudioManager.STREAM_SYSTEM } SL_ANDROID_STREAM_SYSTEM: SLint32 = $00000001; {$EXTERNALSYM SL_ANDROID_STREAM_SYSTEM} { same as android.media.AudioManager.STREAM_RING } SL_ANDROID_STREAM_RING: SLint32 = $00000002; {$EXTERNALSYM SL_ANDROID_STREAM_RING} { same as android.media.AudioManager.STREAM_MUSIC } SL_ANDROID_STREAM_MEDIA: SLint32 = $00000003; {$EXTERNALSYM SL_ANDROID_STREAM_MEDIA} { same as android.media.AudioManager.STREAM_ALARM } SL_ANDROID_STREAM_ALARM: SLint32 = $00000004; {$EXTERNALSYM SL_ANDROID_STREAM_ALARM} { same as android.media.AudioManager.STREAM_NOTIFICATION } SL_ANDROID_STREAM_NOTIFICATION: SLint32 = $00000005; {$EXTERNALSYM SL_ANDROID_STREAM_NOTIFICATION} А библиотека Androidapi.JNI.Media.pas описывает специальный класс TJAudioManager для работы с медиа.
     
  3. Like
    Pax Beach получил реакцию от Kitty в Медиа громкость   
    Управление громкостью звуковых потоков в Android:
    Модуль Androidapi.OpenSles.pas содержит готовые константы для управления громкостью с помощью метода контекста setVolumeControlStream:
    { Audio playback stream type values } { same as android.media.AudioManager.STREAM_VOICE_CALL } SL_ANDROID_STREAM_VOICE: SLint32 = $00000000; {$EXTERNALSYM SL_ANDROID_STREAM_VOICE} { same as android.media.AudioManager.STREAM_SYSTEM } SL_ANDROID_STREAM_SYSTEM: SLint32 = $00000001; {$EXTERNALSYM SL_ANDROID_STREAM_SYSTEM} { same as android.media.AudioManager.STREAM_RING } SL_ANDROID_STREAM_RING: SLint32 = $00000002; {$EXTERNALSYM SL_ANDROID_STREAM_RING} { same as android.media.AudioManager.STREAM_MUSIC } SL_ANDROID_STREAM_MEDIA: SLint32 = $00000003; {$EXTERNALSYM SL_ANDROID_STREAM_MEDIA} { same as android.media.AudioManager.STREAM_ALARM } SL_ANDROID_STREAM_ALARM: SLint32 = $00000004; {$EXTERNALSYM SL_ANDROID_STREAM_ALARM} { same as android.media.AudioManager.STREAM_NOTIFICATION } SL_ANDROID_STREAM_NOTIFICATION: SLint32 = $00000005; {$EXTERNALSYM SL_ANDROID_STREAM_NOTIFICATION} А библиотека Androidapi.JNI.Media.pas описывает специальный класс TJAudioManager для работы с медиа.
     
  4. Like
    Pax Beach получил реакцию от Kitty в Программное удаление приложения из списка последних   
    На StackOverflow подсказали решение, адаптировал для Delphi (модуль для работы с процессами Android описан здесь):
    if TOSVersion.Check(5, 0) then begin TAndroidHelper.Activity.finishAndRemoveTask; Log('- finishAndRemoveTask - OK'); end else if TOSVersion.Check(4, 1) then begin TAndroidHelper.Activity.finishAffinity; Log('- finishAffinity - OK'); end else begin TAndroidHelper.Activity.finish; Log('- finish - OK'); end; TJProcess.JavaClass.killProcess(TJProcess.JavaClass.myPid); Log('- killProcess - OK');  
  5. Like
    Pax Beach получил реакцию от Andrey Efimov в Программное удаление приложения из списка последних   
    На StackOverflow подсказали решение, адаптировал для Delphi (модуль для работы с процессами Android описан здесь):
    if TOSVersion.Check(5, 0) then begin TAndroidHelper.Activity.finishAndRemoveTask; Log('- finishAndRemoveTask - OK'); end else if TOSVersion.Check(4, 1) then begin TAndroidHelper.Activity.finishAffinity; Log('- finishAffinity - OK'); end else begin TAndroidHelper.Activity.finish; Log('- finish - OK'); end; TJProcess.JavaClass.killProcess(TJProcess.JavaClass.myPid); Log('- killProcess - OK');  
  6. Like
    Pax Beach отреагировална Кривяков Виталий в Мобильное рабочее место кассира   
    Добрый день, коллеги!
    Хочу рассказать о выходе нашего нового продукта 
    1С-Рарус:Мобильное РМК
    Приложение написано в 10 версии Delphi (Seatlle), предназначено для автоматизации рабочего места кассира. Есть встроенный демо режим.
    Работа пока возможна только на планшетах, поддержка смартфонов в будущем.
    Готов воспринять критику, пожелания и ответить на вопросы.
  7. Like
    Pax Beach получил реакцию от Kitty в Error "Message must be shown in the main UI thread"   
    Вызов необходимо осуществлять в UI потоке:
    CallInUiThread( procedure begin ... show ur banner end);  
  8. Like
    Pax Beach отреагировална Rusland в Изменить цвет фона в DesignTime режиме   
    Полагаю что раскрашивается через сменю стиля...  типа у кнопки нажимаем Edit Custom Style, в редакторе удаляем background, ставим вместо него Rectangle, меняем ему Align на Client, StyleName=background, Fill.Color=цвет (ну и Stroke поменять). Перенести Text на Rectangle... как-то так.
    Создать несколько вариантов стиля и в рантайме менять StyleLookup кнопки, не?
  9. Like
    Pax Beach отреагировална Rusland в Error "Message must be shown in the main UI thread"   
    Может быть такой код поможет?
    unit UntNetwork; interface function IsConnected: Boolean; function IsWiFiConnected: Boolean; function IsMobileConnected: Boolean; implementation uses System.SysUtils, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android, Androidapi.Helpers{, Misc}; type JConnectivityManager = interface; JNetworkInfo = interface; JNetworkInfoClass = interface(JObjectClass) ['{E92E86E8-0BDE-4D5F-B44E-3148BD63A14C}'] end; [JavaSignature('android/net/NetworkInfo')] JNetworkInfo = interface(JObject) ['{6DF61A40-8D17-4E51-8EF2-32CDC81AC372}'] {Methods} function isAvailable: Boolean; cdecl; function isConnected: Boolean; cdecl; function isConnectedOrConnecting: Boolean; cdecl; end; TJNetworkInfo = class(TJavaGenericImport<JNetworkInfoClass, JNetworkInfo>) end; JConnectivityManagerClass = interface(JObjectClass) ['{E03A261F-59A4-4236-8CDF-0068FC6C5FA1}'] {Property methods} function _GetTYPE_WIFI: Integer; cdecl; function _GetTYPE_WIMAX: Integer; cdecl; function _GetTYPE_MOBILE: Integer; cdecl; {Properties} property TYPE_WIFI: Integer read _GetTYPE_WIFI; property TYPE_WIMAX: Integer read _GetTYPE_WIMAX; property TYPE_MOBILE: Integer read _GetTYPE_MOBILE; end; [JavaSignature('android/net/ConnectivityManager')] JConnectivityManager = interface(JObject) ['{1C4C1873-65AE-4722-8EEF-36BBF423C9C5}'] {Methods} function getActiveNetworkInfo: JNetworkInfo; cdecl; function getNetworkInfo(networkType: Integer): JNetworkInfo; cdecl; end; TJConnectivityManager = class(TJavaGenericImport<JConnectivityManagerClass, JConnectivityManager>) end; function GetConnectivityManager: JConnectivityManager; var ConnectivityServiceNative: JObject; begin ConnectivityServiceNative := SharedActivityContext.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); if not Assigned(ConnectivityServiceNative) then raise Exception.Create('Could not locate Connectivity Service'); Result := TJConnectivityManager.Wrap( (ConnectivityServiceNative as ILocalObject).GetObjectID); if not Assigned(Result) then raise Exception.Create('Could not access Connectivity Manager'); end; function IsConnected: Boolean; var ConnectivityManager: JConnectivityManager; ActiveNetwork: JNetworkInfo; begin ConnectivityManager := GetConnectivityManager; ActiveNetwork := ConnectivityManager.getActiveNetworkInfo; Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected; end; function IsWiFiConnected: Boolean; var ConnectivityManager: JConnectivityManager; WiFiNetwork: JNetworkInfo; begin ConnectivityManager := GetConnectivityManager; WiFiNetwork := ConnectivityManager.getNetworkInfo(TJConnectivityManager.JavaClass.TYPE_WIFI); Result := WiFiNetwork.isConnected; end; function IsMobileConnected: Boolean; var ConnectivityManager: JConnectivityManager; MobileNetwork: JNetworkInfo; begin ConnectivityManager := GetConnectivityManager; MobileNetwork := ConnectivityManager.getNetworkInfo(TJConnectivityManager.JavaClass.TYPE_MOBILE); Result := MobileNetwork.isConnected; end; end. Хотя лично мне интересно как пропинговать какой-нибудь сервер (желательно без Indy компонент)...
  10. Like
    Pax Beach получил реакцию от Alex7wrt в Запретить переход другим страницам.   
    ну тогда только так как-то, через костыли:
    procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject); begin cannotloadlinks := true; end; procedure TForm1.WebBrowser1DidStartLoad(ASender: TObject); begin if cannotloadlinks and (WebBrowser1.URL <> Edit1.Text) then begin WebBrowser1.Stop; WebBrowser1.URL := Edit1.Text; WebBrowser1.Navigate; end else Edit1.Text := WebBrowser1.URL; end;  
  11. Like
    Pax Beach получил реакцию от Rusland в Error "Message must be shown in the main UI thread"   
    Вызов необходимо осуществлять в UI потоке:
    CallInUiThread( procedure begin ... show ur banner end);  
  12. Like
    Pax Beach получил реакцию от toland в Error "Message must be shown in the main UI thread"   
    Вызов необходимо осуществлять в UI потоке:
    CallInUiThread( procedure begin ... show ur banner end);  
  13. Like
    Pax Beach получил реакцию от Brovin Yaroslav в Error "Message must be shown in the main UI thread"   
    Вызов необходимо осуществлять в UI потоке:
    CallInUiThread( procedure begin ... show ur banner end);  
  14. Like
    Pax Beach получил реакцию от Vitaldj в Хранение данных   
    Сам для кроссплатформенных приложений храню в SQLite.
    krapotkin, хороший пример от Andrey Efimov привел.
     
  15. Like
    Pax Beach получил реакцию от Rusland в Зависимость от регистра русских символов при использовании LIKE   
    Я говорю про все диалекты SQL. Когда идет речь о том, что не работает сравнение в where или like, нужно смотреть настройки кодировки на сервере и в строке соединения.
    UPD:
    Прочитал, что есть проблема сортировки в SQLite. Проверил — есть, и LIKE, и ORDER BY. Прочитал ответ разработчиков — подход порадовал.
    Потребуется воспользоваться функцией sqlite3_create_collation (есть в компонентах FireDAC, UniDAC, модуле RTL\System.Sqlite.pas). Я нашел пример только на C.
    Может у Вас получится воспользоваться — будем рады посмотреть пример.
  16. Like
    Pax Beach отреагировална Кривяков Виталий в Зависимость от регистра русских символов при использовании LIKE   
    Добрый день!
    В стандартных компонента есть механизм по встраиванию своих функций в SQLite. 
    ... // создаю встроенную функцию ru_lower F1 := TFDSQLiteFunction.Create(nil); F1.DriverLink := WC1; F1.FunctionName := 'ru_lower'; F1.ArgumentsCount := 1; F1.OnCalculate := ru_lower; ... procedure TORMmanager.ru_lower(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin AOutput.AsString := AInputs[0].AsString.ToLower; end; SQL:
    select name from users where ru_lower(name) like '%иван%'
    Запрос вернет все имена содержащие иван в любом регистре.
  17. Like
    Pax Beach отреагировална krapotkin в Хранение данных   
    да, я на 3 платформах проверил
    ios, win, android
  18. Like
    Pax Beach отреагировална Rusland в [Статья][Android] Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде   
    Выложили вебинар по Будильнику на Андроид 
     
  19. Like
    Pax Beach получил реакцию от Kitty в Новая БД в Android   
    Стандартные компоненты, аля xxxConnection, поддерживают создание БД.
    В Android SDK есть библиотека, для работы с SQLite, можно использовать ее. Об этом можно прочитать здесь, подзаголовок «Создание базы данных с помощью SQL Helper», и я на форуме писал ранее по теме.
     
  20. Like
    Pax Beach получил реакцию от Andrey Efimov в Новая БД в Android   
    Стандартные компоненты, аля xxxConnection, поддерживают создание БД.
    В Android SDK есть библиотека, для работы с SQLite, можно использовать ее. Об этом можно прочитать здесь, подзаголовок «Создание базы данных с помощью SQL Helper», и я на форуме писал ранее по теме.
     
  21. Like
    Pax Beach получил реакцию от Rusland в Какие статьи вы хотели бы видеть в блогах?   
    Пример создания будильника для iOS — тоже очень интересно.
  22. Like
    Pax Beach отреагировална #WAMACO в Какие статьи вы хотели бы видеть в блогах?   
    Обновление базы данных в фоновом режиме.
    Есть сеть - обновляем БД! Нет, работаем в оффлайн режиме!
    ОС: iOS, Android
  23. Like
    Pax Beach отреагировална #WAMACO в Какие статьи вы хотели бы видеть в блогах?   
    Статья хорошая, подробная... Хорошо бы ещё такую же для AppStore!
  24. Like
    Pax Beach отреагировална fsdb в Какие статьи вы хотели бы видеть в блогах?   
    1. как воспроизвести потоковое видео с IP камеры на Андройд
    2. пример использования распознания речи google api на Андройд
    3. пример передачи даных из сервиса в приложение / узнать из севиса что приложение работает
  25. Like
    Pax Beach отреагировална Alex7wrt в Какие статьи вы хотели бы видеть в блогах?   
    Как воспроизводить видео из одного файла одновременно на двух компонентах разного размера.
×
×
  • Создать...