-
Постов
414 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Активность репутации
-
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');
-
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 для работы с медиа.
-
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 для работы с медиа.
-
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');
-
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');
-
Pax Beach отреагировална Кривяков Виталий в Мобильное рабочее место кассира
Добрый день, коллеги!
Хочу рассказать о выходе нашего нового продукта
1С-Рарус:Мобильное РМК
Приложение написано в 10 версии Delphi (Seatlle), предназначено для автоматизации рабочего места кассира. Есть встроенный демо режим.
Работа пока возможна только на планшетах, поддержка смартфонов в будущем.
Готов воспринять критику, пожелания и ответить на вопросы.
-
Pax Beach получил реакцию от Kitty в Error "Message must be shown in the main UI thread"
Вызов необходимо осуществлять в UI потоке:
CallInUiThread( procedure begin ... show ur banner end);
-
Pax Beach отреагировална Rusland в Изменить цвет фона в DesignTime режиме
Полагаю что раскрашивается через сменю стиля... типа у кнопки нажимаем Edit Custom Style, в редакторе удаляем background, ставим вместо него Rectangle, меняем ему Align на Client, StyleName=background, Fill.Color=цвет (ну и Stroke поменять). Перенести Text на Rectangle... как-то так.
Создать несколько вариантов стиля и в рантайме менять StyleLookup кнопки, не?
-
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 компонент)...
-
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;
-
Pax Beach получил реакцию от Rusland в Error "Message must be shown in the main UI thread"
Вызов необходимо осуществлять в UI потоке:
CallInUiThread( procedure begin ... show ur banner end);
-
Pax Beach получил реакцию от toland в Error "Message must be shown in the main UI thread"
Вызов необходимо осуществлять в UI потоке:
CallInUiThread( procedure begin ... show ur banner end);
-
Pax Beach получил реакцию от Brovin Yaroslav в Error "Message must be shown in the main UI thread"
Вызов необходимо осуществлять в UI потоке:
CallInUiThread( procedure begin ... show ur banner end);
-
Pax Beach получил реакцию от Vitaldj в Хранение данных
Сам для кроссплатформенных приложений храню в SQLite.
krapotkin, хороший пример от Andrey Efimov привел.
-
Pax Beach получил реакцию от Rusland в Зависимость от регистра русских символов при использовании LIKE
Я говорю про все диалекты SQL. Когда идет речь о том, что не работает сравнение в where или like, нужно смотреть настройки кодировки на сервере и в строке соединения.
UPD:
Прочитал, что есть проблема сортировки в SQLite. Проверил — есть, и LIKE, и ORDER BY. Прочитал ответ разработчиков — подход порадовал.
Потребуется воспользоваться функцией sqlite3_create_collation (есть в компонентах FireDAC, UniDAC, модуле RTL\System.Sqlite.pas). Я нашел пример только на C.
Может у Вас получится воспользоваться — будем рады посмотреть пример.
-
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 '%иван%'
Запрос вернет все имена содержащие иван в любом регистре.
-
Pax Beach отреагировална krapotkin в Хранение данных
да, я на 3 платформах проверил
ios, win, android
-
Pax Beach отреагировална Rusland в [Статья][Android] Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде
Выложили вебинар по Будильнику на Андроид
-
Pax Beach получил реакцию от Kitty в Новая БД в Android
Стандартные компоненты, аля xxxConnection, поддерживают создание БД.
В Android SDK есть библиотека, для работы с SQLite, можно использовать ее. Об этом можно прочитать здесь, подзаголовок «Создание базы данных с помощью SQL Helper», и я на форуме писал ранее по теме.
-
Pax Beach получил реакцию от Andrey Efimov в Новая БД в Android
Стандартные компоненты, аля xxxConnection, поддерживают создание БД.
В Android SDK есть библиотека, для работы с SQLite, можно использовать ее. Об этом можно прочитать здесь, подзаголовок «Создание базы данных с помощью SQL Helper», и я на форуме писал ранее по теме.
-
Pax Beach получил реакцию от Rusland в Какие статьи вы хотели бы видеть в блогах?
Пример создания будильника для iOS — тоже очень интересно.
-
Pax Beach отреагировална #WAMACO в Какие статьи вы хотели бы видеть в блогах?
Обновление базы данных в фоновом режиме.
Есть сеть - обновляем БД! Нет, работаем в оффлайн режиме!
ОС: iOS, Android
-
Pax Beach отреагировална #WAMACO в Какие статьи вы хотели бы видеть в блогах?
Статья хорошая, подробная... Хорошо бы ещё такую же для AppStore!
-
Pax Beach отреагировална fsdb в Какие статьи вы хотели бы видеть в блогах?
1. как воспроизвести потоковое видео с IP камеры на Андройд
2. пример использования распознания речи google api на Андройд
3. пример передачи даных из сервиса в приложение / узнать из севиса что приложение работает
-
Pax Beach отреагировална Alex7wrt в Какие статьи вы хотели бы видеть в блогах?
Как воспроизводить видео из одного файла одновременно на двух компонентах разного размера.