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

Martifan

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

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

  • Посещение

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

    16

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

  1. Like
    Martifan отреагировална AliZairov в YouTubeApi VCL & FMX   
    Привет. Я сделал новую версию YouTubeApi компоненты. Поддерживаемые VCL & FMX + Mobile.
    Никаких официальных YouTube Api компоненты. Только данные с парсинг. Пример доступен в архиве.
     
    Новый
    ===
    v1.4 - 25/02/2018
      + Устранение проблем
    YouTubeApiDelphi
  2. Like
    Martifan отреагировална Brovin Yaroslav в AlarmManager   
    Ну раз так звезды совпали, то еще и мой вариант :-)
    Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде
  3. Like
    Martifan отреагировална Andrey Efimov в AlarmManager   
    [Статья][Android][AlarmManager] Простой пример использования в RAD Studio
  4. Like
    Martifan отреагировална Andrey Efimov в [Статья][Android] AlarmManager - Автозапуск приложения в назначенное время   
    Ссылка: http://delphifmandroid.blogspot.ru/2016/02/alarmmanager-rad-studio.html
    Автор: Ефимов Андрей
    Описание: [AlarmManager] Автозапуск приложения в назначенное время
  5. Like
    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 на устройстве... не знаю почему 
  6. Like
    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
  7. Like
    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
  8. Like
    Martifan отреагировална Andrey Efimov в RAD 11 на подходе?   
    Сами себе противоречите, хотите всё и сразу, но при этом чтобы приложение не "пухло". Это невозможно... Для примера, вспомните сколько раньше весили приложения для Андроида, когда было мало функционала (XE5, XE6), но с появлением новых функций, которые просил народ, размер естественно увеличивался. Сейчас приложение с сервисом весит примерно 40 МБ, хотя с сегодняшним развитием технологий и повсеместной установкой модулей памяти на 16 ГБ и более, увеличение не так заметно. Да и к тому же некоторые очень популярные (во всём мире) приложения весят намного больше.
  9. Like
    Martifan отреагировална Rusland в Android Service + GPS   
    Вот пожалуйста https://yadi.sk/d/X2zfmhAxo9ZF2
    Адрес там на свой подправите
    LocationSensorPatch2.zip
  10. Like
    Martifan отреагировална Rusland в Android Service + GPS   
    Вроде с XE8 этот нативный компонент. Тут подробности о том как его использовать
  11. Like
    Martifan отреагировална Rusland в Android Service + GPS   
    Точно, нельзя, там вызывается Activity, которого в сервисе нет...
    Используйте NetHTTPClient... хотя если у вас используется шифрование SSL, то возможны проблемы (видимо компонент сыроват)
  12. Like
    Martifan отреагировална Rusland в Android Service + GPS   
    Про отправку через Intent рассказано здесь
  13. Like
    Martifan отреагировална Rusland в Android Service + GPS   
    Исходники есть здесь http://fire-monkey.ru/topic/2242-poluchenie-gps-koordinat-iz-servisa/
    Вариант 1 рабочий, вам нужно только организовать запись в файл
  14. Like
    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)
     
     
  15. Like
    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;
  16. Like
    Martifan отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой   
    Привет Всем!
     
    vkbdhelper.pas
     
    Давно пользовался vkbdhelper'ом, но он был только для андроида.
    руки добрались и до этого, теперь его можно использовать и на IOS
     
    изменения
    * почистил uses секцию
    * убрал зависимость от платформ (кросс-платформенный)
    * добавил глобальную переменную VKOffset
     
    VKOffset - расстояние между контролом и клавиатурой
                     для тех случаев когда включены подсказки/автозамена
                     и контрол оказывается под доп. панелькой
     
    Не все клавиатуры включают доп. панели в свой размер!
    Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
    {$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
  17. Like
    Martifan отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой   
    Как пользоваться:
    поместить файл в папку с проектом, прописать в uses желательно в .dpr файле. Всё
  18. Like
    Martifan отреагировална Камышев Александр в Альтернатива FMX   
    Ядро Андроида - Linux Kernel, написан, в основном, на си, и серьезность проекта коррелируется скорее с навыками программера чем со средой RAD.
     
    Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.
     
    Программы для Dalvik пишутся на языке Java. Несмотря на это, стандартный байт-код Java не используется, вместо него Dalvik исполняет байт-код собственного формата. После компиляции исходных текстов программы на Java (при помощи javac) утилита dx из Android SDK преобразует файлы классов (расширение .class) в файлы собственного формата (с расширением .dex), которые и включаются в пакет приложения (.apk).
     
     Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.
     
  19. Like
    Martifan отреагировална Равиль Зарипов (ZuBy) в Альтернатива FMX   
    Такой вопрос глупо задавать на форуме который посвящён только fmx. Здесь нет наверное людей которые для стеба сидят. А вообще, кто вам мешает изучать разные языки и фреймворки. Что душе будет ближе и рукам удобней то и выбирайте.
  20. Like
    Martifan получил реакцию от Dev в [Android] Как свернуть приложение?   
    Нашел еще один способ:
      Uses     Androidapi.Helpers; procedure TfMain.SpeedButton11Click(Sender: TObject); begin   SharedActivity.moveTaskToBack(True); end;
  21. Like
    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) и как его проигрывать на сервере, может у кого есть опыт работы с этом сфере или какой нибудь документация имеется или какой нибудь предложение есть как все это сделать все совете и предложении очень важен 
     
    Заранее спасибо согласитесь интересно использовать микрофон так и не дожидая пока он создаст файл
    всем удачи
  22. Like
    Martifan отреагировална Равиль Зарипов (ZuBy) в Динамическая подгрузка картинок в ListView   
    Привет Всем!
    Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.
    я взял картинки пользователей этого форума

    Seattle LVdynamicLoadBitmap.zip
    Berlin LVdynamicLoadBitmap(Berlin).zip
  23. Like
    Martifan получил реакцию от Rusland в Поздравляю всех с Новым Годом!   
    Присоединяюсь всех поздравляю с новым годом
  24. Like
    Martifan отреагировална AngryOwl в Поздравляю всех с Новым Годом!   
    Друзья!
    Поздравляю вас всех с Новым Годом!
    Желаю всем вам здоровья, счатья и благополучия в наступившем 2016 году!
    Пожелаю всем нам успехов в наших делах, проектах, разработках!
    Чтобы все у нас с вами сложилось)
     
    Отдельно хочу поздравить Бровина Ярослава и Ефимова Андрея!
    Пожелать Вам, ребята, и Вашим близким, успехов и благополучия!
     
    Еще раз - с Новым Годом!
     
    p.s. Надеюсь не забанят за то, что "не в тему" )))
  25. Like
    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
×
×
  • Создать...