-
Постов
396 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Активность репутации
-
Martifan отреагировална AliZairov в YouTubeApi VCL & FMX
Привет. Я сделал новую версию YouTubeApi компоненты. Поддерживаемые VCL & FMX + Mobile.
Никаких официальных YouTube Api компоненты. Только данные с парсинг. Пример доступен в архиве.
Новый
===
v1.4 - 25/02/2018
+ Устранение проблем
YouTubeApiDelphi
-
Martifan отреагировална Brovin Yaroslav в AlarmManager
Ну раз так звезды совпали, то еще и мой вариант :-)
Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде
-
Martifan отреагировална Andrey Efimov в AlarmManager
[Статья][Android][AlarmManager] Простой пример использования в RAD Studio
-
Martifan отреагировална Andrey Efimov в [Статья][Android] AlarmManager - Автозапуск приложения в назначенное время
Ссылка: http://delphifmandroid.blogspot.ru/2016/02/alarmmanager-rad-studio.html
Автор: Ефимов Андрей
Описание: [AlarmManager] Автозапуск приложения в назначенное время
-
Martifan отреагировална Rusland в GPS
Если знать как определяются координаты (по ЖПС или по сотовым вышкам), то можно выбирать какие координаты использовать, а какие отбрасывать...
Узнать тип сенсора можно вот так
function getLocationSensorType(const ASensor : TLocationSensor) : String; begin with ASensor do case Sensor.SensorType of TLocationSensorType.GPS: result := 'GPS'; TLocationSensorType.Static: result := 'Static'; TLocationSensorType.Lookup: result := 'Lookup'; TLocationSensorType.Triangulation: result := 'Triangulation'; TLocationSensorType.Broadcast: result := 'Broadcast'; TLocationSensorType.DeadReckoning: result := 'DeadReckoning'; TLocationSensorType.Other: result := 'Other'; else result := 'Unknown'; end; end; procedure TFrmMain.LocationSensorLocationChanged(Sender: TObject; const [Ref] OldLocation, NewLocation: TLocationCoord2D); var Lat,Lon:String; lSensorType : String; begin Lat:=Format('%2.6f',[NewLocation.Latitude]); Lon:=Format('%2.6f',[NewLocation.Longitude]); lSensorType := GetLocationSensorType(LocationSensor); Memo1.Lines.Add('Lat='+Lat+' Lon='+Lon+' lSensorType='+lSensorType); end; однако он мне выдает lSensorType=GPS всегда, даже в случае отключения GPS на устройстве... не знаю почему
-
Martifan отреагировална Равиль Зарипов (ZuBy) в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?
Тема оказалась настолько интересна что занялся ей подробней.
Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
также написал процедуру для определения высоты статус бара и панели навигации
procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
// Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
-
Martifan отреагировална Brovin Yaroslav в Thoma Bravo Announces Sale of Embarcadero to Idera, Inc.
http://community.embarcadero.com/article/news/16211-embarcadero-rad-studio-2016-product-approach-and-roadmap-2
-
Martifan отреагировална Andrey Efimov в RAD 11 на подходе?
Сами себе противоречите, хотите всё и сразу, но при этом чтобы приложение не "пухло". Это невозможно... Для примера, вспомните сколько раньше весили приложения для Андроида, когда было мало функционала (XE5, XE6), но с появлением новых функций, которые просил народ, размер естественно увеличивался. Сейчас приложение с сервисом весит примерно 40 МБ, хотя с сегодняшним развитием технологий и повсеместной установкой модулей памяти на 16 ГБ и более, увеличение не так заметно. Да и к тому же некоторые очень популярные (во всём мире) приложения весят намного больше.
-
Martifan отреагировална Rusland в Android Service + GPS
Вот пожалуйста https://yadi.sk/d/X2zfmhAxo9ZF2
Адрес там на свой подправите
LocationSensorPatch2.zip
-
Martifan отреагировална Rusland в Android Service + GPS
Вроде с XE8 этот нативный компонент. Тут подробности о том как его использовать
-
Martifan отреагировална Rusland в Android Service + GPS
Точно, нельзя, там вызывается Activity, которого в сервисе нет...
Используйте NetHTTPClient... хотя если у вас используется шифрование SSL, то возможны проблемы (видимо компонент сыроват)
-
-
Martifan отреагировална Rusland в Android Service + GPS
Исходники есть здесь http://fire-monkey.ru/topic/2242-poluchenie-gps-koordinat-iz-servisa/
Вариант 1 рабочий, вам нужно только организовать запись в файл
-
Martifan отреагировална Равиль Зарипов (ZuBy) в TMapsEngine
а что именно не понятно?
1) создаём
mEngine := TMapsEngine.Create; 2) указываем что будем использовать
mEngine.SetOptionsYandex(''); mEngine.SetOptionsGoogle(GoogleAPI); mEngine.SetOptionsHere(HereAPI, HereAPP); 3) получаем данные по координатам
mEngine.Geocoding(myCoordLoc, myGeoLoc); 4) получаем координаты по адресу
mEngine.GeocodingReverse(myGeoLoc, myCoordLoc); 5) отрисовать маршрут
mEngine.SetOptionsGoogleDistance(GoogleDistance); // тут !!distance!! api_key google mEngine.GoogleDistance(myCoordLoc, myCoordTap, myRoutePoints, myRouteInfo); // данные о маршруте Примера нет, т.к. я уже им не пользуюсь (из-за android 6.0, в нём нет поддержки open-ssl на которых работает indy)
-
Martifan отреагировална Равиль Зарипов (ZuBy) в TUITabControl
обновите вот эту процедурку
procedure TUITabControl.PaintChildren; var Tab: TTabItem; begin inherited; if FSlide then for Tab in TransitionTabs do begin TMyTabItem(Tab).PaintInternal; TMyTabItem(Tab).PaintChildren; // fix end; end; -
Martifan отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой
Привет Всем!
vkbdhelper.pas
Давно пользовался vkbdhelper'ом, но он был только для андроида.
руки добрались и до этого, теперь его можно использовать и на IOS
изменения
* почистил uses секцию
* убрал зависимость от платформ (кросс-платформенный)
* добавил глобальную переменную VKOffset
VKOffset - расстояние между контролом и клавиатурой
для тех случаев когда включены подсказки/автозамена
и контрол оказывается под доп. панелькой
Не все клавиатуры включают доп. панели в свой размер!
Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
{$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
-
Martifan отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой
Как пользоваться:
поместить файл в папку с проектом, прописать в uses желательно в .dpr файле. Всё
-
Martifan отреагировална Камышев Александр в Альтернатива FMX
Ядро Андроида - Linux Kernel, написан, в основном, на си, и серьезность проекта коррелируется скорее с навыками программера чем со средой RAD.
Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.
Программы для Dalvik пишутся на языке Java. Несмотря на это, стандартный байт-код Java не используется, вместо него Dalvik исполняет байт-код собственного формата. После компиляции исходных текстов программы на Java (при помощи javac) утилита dx из Android SDK преобразует файлы классов (расширение .class) в файлы собственного формата (с расширением .dex), которые и включаются в пакет приложения (.apk).
Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.
-
Martifan отреагировална Равиль Зарипов (ZuBy) в Альтернатива FMX
Такой вопрос глупо задавать на форуме который посвящён только fmx. Здесь нет наверное людей которые для стеба сидят. А вообще, кто вам мешает изучать разные языки и фреймворки. Что душе будет ближе и рукам удобней то и выбирайте.
-
Martifan получил реакцию от Dev в [Android] Как свернуть приложение?
Нашел еще один способ:
Uses Androidapi.Helpers; procedure TfMain.SpeedButton11Click(Sender: TObject); begin SharedActivity.moveTaskToBack(True); end; -
Martifan получил реакцию от MrAnderson в Получить голос из микрофона потоками
Доброго времени сутки
недавно для себя открыл что можно из микрофона получить данные потоками:
Uses ..., Androidapi.JNI.Media; procedure TForm1.Button1Click(Sender: TObject); var bufferSize: integer; buffer: TJavaArray<Byte>; M: TMemoryStream; begin audioRecord := TJAudioRecord.JavaClass.init(TJMediaRecorder_AudioSource.JavaClass.MIC, 44100, TJAudioFormat.JavaClass.CHANNEL_IN_MONO, TJAudioFormat.JavaClass.ENCODING_PCM_16BIT, 44100 * 2); (audioRecord as JAudioRecord).startRecording; buffer := TJavaArray<Byte>.Create(8820); (audioRecord as JAudioRecord).read(buffer, 0, 8820); (audioRecord as JAudioRecord).stop; audioRecord.release; buffer заполняется данными я проверил все работает (можно код прописать чтобы этот buffer проигрывал)
audioRecord := TJAudioRecord.JavaClass.init(TJMediaRecorder_AudioSource.JavaClass.MIC, 44100, TJAudioFormat.JavaClass.CHANNEL_IN_MONO, TJAudioFormat.JavaClass.ENCODING_PCM_16BIT, 44100 * 2); <--- как мне кажется здесь видно что это формат Wave
я пытаюсь передать это все серверу:
IdUDPClient1.SendBuffer(IdUDPClient1.Host, IdUDPClient1.Port, RawToBytes(buffer, buffer.Length)); сервер запущен на Windows но не получается я слышу только пикание
Вопрос:
как мне передать этот поток серверу (среды Windows) и как его проигрывать на сервере, может у кого есть опыт работы с этом сфере или какой нибудь документация имеется или какой нибудь предложение есть как все это сделать все совете и предложении очень важен
Заранее спасибо согласитесь интересно использовать микрофон так и не дожидая пока он создаст файл
всем удачи
-
Martifan отреагировална Равиль Зарипов (ZuBy) в Динамическая подгрузка картинок в ListView
Привет Всем!
Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.
я взял картинки пользователей этого форума
Seattle LVdynamicLoadBitmap.zip
Berlin LVdynamicLoadBitmap(Berlin).zip
-
Martifan получил реакцию от Rusland в Поздравляю всех с Новым Годом!
Присоединяюсь всех поздравляю с новым годом
-
Martifan отреагировална AngryOwl в Поздравляю всех с Новым Годом!
Друзья!
Поздравляю вас всех с Новым Годом!
Желаю всем вам здоровья, счатья и благополучия в наступившем 2016 году!
Пожелаю всем нам успехов в наших делах, проектах, разработках!
Чтобы все у нас с вами сложилось)
Отдельно хочу поздравить Бровина Ярослава и Ефимова Андрея!
Пожелать Вам, ребята, и Вашим близким, успехов и благополучия!
Еще раз - с Новым Годом!
p.s. Надеюсь не забанят за то, что "не в тему" )))
-
Martifan отреагировална Равиль Зарипов (ZuBy) в ListView Color Helper
Привет Всем!
Много тем на форуме про раскраску TListView, нашел в интернете решение и доработал его
Вот что получилось
LV_Helper.zip ColorListView.zip
Доступно для Seattle
ListView1.SetColorItemSelected(TAlphaColorRec.Orangered); //выделенный ListView1.SetColorItemFill(TAlphaColorRec.Gray); // обычный цвет Item ListView1.SetColorItemFillAlt(TAlphaColorRec.Lightgrey); // альтернативный цвет Item ListView1.SetColorBackground(TAlphaColorRec.Black); // цвет самого TListView ListView1.SetColorItemSeparator(TAlphaColorRec.Lightgray); // Линия разделения Item'ов ListView1.SetColorText(TAlphaColorRec.Red); // Обычный текст ListView1.SetColorTextSelected(TAlphaColorRec.White); // выделенный текст ListView1.SetColorTextDetail(TAlphaColorRec.Yellow); // текст доп. инфы ListView1.SetColorTextHeader(TAlphaColorRec.Green); // текст заголовка ListView1.SetColorTextHeaderShadow(TAlphaColorRec.Lightgray); // тень текста ListView1.SetColorButtonText(TAlphaColorRec.Orange); // цвет текста кнопки ListView1.SetColorButtonTextPressed(TAlphaColorRec.Orangered); // цвет нажатой кнопки добавлено в Berlin
ListView1.SetColorPullRefresh(TAlphaColorRec.Orange); ListView1.SetColorPullRefreshIndicator(TAlphaColorRec.Orangered); ListView1.SetColorStretchGlow(TAlphaColorRec.Lime); ModernListView.rar