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

Лидеры

  1. krapotkin

    krapotkin

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


    • Баллы

      8

    • Постов

      2 185


  2. Fedor K

    Fedor K

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


    • Баллы

      6

    • Постов

      55


  3. rareMax

    rareMax

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


    • Баллы

      3

    • Постов

      553


  4. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      3

    • Постов

      2 517


Популярный контент

Показан контент с высокой репутацией 10.09.2016 во всех областях

  1. krapotkin

    С днем рождения!

    Поздравляем Ярослава с Днем рождения! Благодарим за титанические усилия, которые он по собственной инициативе, не "благодаря", а скорее "вопреки", прилагает для развития нашего сообщества. Желаем не только профессионального благополучия, но и личного счастья! Ура, товарищи!
    8 баллов
  2. Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление). Чтобы не влиять на другой функционал, достаточно сделать следующее: //запоминаем ид по умолчанию lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon; //устанавливаем нашу кастомную иконку TAndroidHelper.Context.getApplicationInfo.icon := lId; //создаем локальное уведомление NotificationCenter.PresentNotification(lNotification); //возвращаем обратно TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId; п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.
    3 балла
  3. Намерения конечно это вариант, но: 1. Что если у пользователя не стоит клиент (для которого мы пишем намерение) для Вк/ фейсбука/ неба/ал...(ой чет увлекся). На плеймаркете полно клиентов. Придется собирать их полные названия и перебирать перед постингом. 2 С поставленной целью отлично справится вариант именно через АПИ: Пользователю нужно всего лишь один раз пройти авторизацию и дать права. Ну а после можем уже без его спроса сливать цру постить сообщения
    3 балла
  4. Fedor K

    Андроид-фейсбук-вконтакте

    Общая схема такая: 1. Регистрация своего приложения в API соцсетей (facebook, vk). 2. Реализуете в своем приложении авторизацию через OAuth 2.0: - можно использовать легкий вариант через WebBrowser, т.о. образом сразу поддерживая Android/IOS. - можно сделать красиво, используя "Intent" и "startActivityForResult". - можно использовать SDK соцсетей, но это совсем другая история... 3. После регистрации сохраняем токен, при помощи которого мы можем через API автоматически постить сообщения. Учитываем здесь время действия токена, периодически его обновляя.
    1 балл
  5. Fedor K

    Андроид-фейсбук-вконтакте

    1. Перед подобными вызовами активностей с указанием пакета, всегда рекомендуется проверять наличие их в системе: //получаем список пакетов, которые могут обработать ваше намерение tempList := TAndroidHelper.Activity.getPackageManager. queryIntentActivities(Intent); //стартуем только в случае наличия пакета if tempList.size > 0 then TAndroidHelper.Activity.startActivity(Intent); 2. При отправке сторонним приложениям файлов (изображения в частности) всегда рекомендуется создавать копию изображения: а) с УНИКАЛЬНЫМ именем - необходимо для разрешения проблем с кешированием в других приложениях. Например Facebook кеширует по имени и при повторном вызове не обновляет; б) сохранять нужно в CacheDir, т.к. другим приложениям может попросту не быть доступа к файлу вашего приложения (использование Uri обязательно). 3. Т.к. у подобных приложений шарингом занимаются отдельные активности, то не забудьте про флаги NewTask | ClearTask у намерения. п.с. Не забудьте потом периодически удалять свой кеш.
    1 балл
  6. Необходимо использовать TJContext.JavaClass.NOTIFICATION_SERVICE вместо TJActivity.JavaClass.NOTIFICATION_SERVICE Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+): function GetNotificationService: JNotificationManager; var NotificationServiceNative: JObject; begin NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE); Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID); end;
    1 балл
  7. Ufomaster

    С днем рождения!

    Ты прекрасный программист,И по жизни оптимист,В своем деле – просто ас!Всем покажешь высший класс!Принимай же поздравленьяВ день прекрасный – День рожденья!Будь всегда веселым ты,Пусть исполнятся мечты! С Днём рождения!
    1 балл
  8. Kitty

    С днем рождения!

    C Днём Рождения!
    1 балл
  9. Вы давали ссылку, там был код Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/gif"); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("example.gif"))); intent.setPackage("com.vkontakte.android"); startActivity(intent);
    1 балл
  10. В рамках конкурса Device Lab от Google подготовил кейс «Маячки Eddystone для контроля расхода электроэнергии». Ознакомиться можно по ссылке — http://singro.ru/eddystone-beacons-electro-energy/ и в ближайшее время на «Хабрахабре». С помощью компонента TBeacon решены задачи: — поиск ближайших маячков; — работа с маячками в сервисе Android; — фильтрация маячков по технологии Eddystone, ссылкам, идентификаторам. — привязка маячков к геокоординатам и базе данных приборов учета электроэнергии. Черпайте идеи и задавайте вопросы. Буду рад ответить на них. UPD: Наша работа заняла второе место в конкурсе Google Device Lab. Прочитать об этом можно на хабре.
    1 балл
  11. Для расчета расстояния мы работаем с событием onCalculateDistances. Параметр var NewDistance: Double. Выдается некое абстрактное дробное число, которое опытным путем можно перевести в метры. Сейчас разбираемся с BeaconFence, скачал из GetIt PM, есть желание визуализировать местонахождение маячков, по типу локатора. UPD: Расчет расстояния получаем по такой формуле: пруфлинк1, пруфлинк2, пруфлинк3, пруфлинк4. function TfmMain.GetDistance(const ATxPower, ARssi: Integer): Double; begin if ARssi = 0 then Result := -1; // Невозможно определить расстояние if (ARssi / ATxPower < 1) then Result := power(ARssi / ATxPower, 10) else Result := 0.89976 * power(ARssi / ATxPower, 7.7095) + 0.111; end;
    1 балл
  12. Gingercat

    С днем рождения!

    Расти большой, не будь лапшой)
    1 балл
  13. Присоединяюсь к поздравлению!
    1 балл
  14. Pax Beach

    Андроид-фейсбук-вконтакте

    1. Можно перед отправкой перебрать установленные пакеты и выбрать наиболее релевантный 2. Пользователя вообще может не быть в соц сети
    1 балл
  15. AngryOwl

    Локализация приложений

    Друзья! Я тут в одной теме выложил юнит для локализации приложений и демо-пример к нему, а также приложение облегчающее создание и редактирование ресурсов для локализации (файлов с переводами на разные языки). Потом подумал - может стоит вынести это в отдельную тему? Данная проблема (локализации приложений) возникла уже давно. На заре XE2. Потом были все версии, вплоть до текущей. Но лично меня текущие решения так и не устраивали. Мне нужно было простое и удобное редактирование сразу всех языков приложения, и чтобы быстро работало. Тогда и были созданы этот юнит и приложения, с которыми я решил с вами поделиться. Создано это было для себя, для упрощения локализации собственных приложений. Поэтому никакой "красоты" кода прошу не искать - ее там нет. Местами вообще кому-то покажется "кривым"... ) Очень жаль, что у меня критически мало времени для общения на данном ресурсе, а потому я в некотором смысле извиняюсь - мог бы выложить этот код давно. Тем-более, что он очень простой. Все что в нем используется, и как используется, думаю, всем будет доступно и понятно. Итак. Приложение Test_Translator - это дело пример с, непосредственно, самим юнитом uTranslatorFM.pas В uTranslatorFM.pas вы увидите, что локализация осуществлена за счет использования INI-файлов, а сам "перевод" осуществляется простым перебором компонент на форме. Стоит отметить, что перевод осуществляется использованием свойства компонент HelpContext (integer), а у компонент, что не имеют этого свойства - используется свойство Tag. На первый взгляд может показаться неудобным. А если приложение большое - что-то может забыться. Однако, лично я очень быстро привык к такому использованию. И поверьте - приложение, в котором я использую этот юнит, очень большое! ))) Кроме того, если есть компоненты, которые не имеют этих свойств, или которые могут менять значение перевода самостоятельно, либо могут быть динамическими - можно использовать нулевой HelpContext, но при этом придавать им значения "вручную". Например: если требуется у компонента TLabel динамически менять значение в ходе выполнения программы, подставляя нужные "подстроки" (грубо - используя, например, Format(...)), то можно написать в программе Label1.Text := Format( AppTranslator.GetValue(_код_, _значение_по_умолчанию_), [_подставляемое_значение_]); где _код_ - это значение, которое будет считываться из INI-файла (например 100) _значение_по_умолчанию_ - значение строки по умолчанию, на тот случай, если данный текст отсутствует в INI-файле, или файла с таким переводом не существует (этот параметр не обязателен) _подставляемое_значение_ - в данном случае это просто пример, допустим - ход выполнения процесса (например 85%) А строка в INI-файле может быть такая: (файл lang.ru) 100=Процесс выполнения %d%% (файл lang.en) 100=The progress %d%% и также другие языки. Думаю тут, в примере, все элементарно и понятно. Все работает на любой платформе! Как вы будете подключать файлы к приложению - ваше дело. Можно скачивать с инета, можно встроить в качестве ресурсов, задеплоить в проект и т.д. Лично я встраиваю в качестве ресурсов (Win) и деплою (Mac и Android). У меня свои причины и аргументы. Файлы: Lang.ru Lang.en и другие, это INI-файлы соответствующих переводов где строки с переводами имеют одинаковые индексы LangList.ini - вспомогательный файл (разберетесь)) language.rc - файл для создания ресурса (Win) С приложением SLLanguage все немного и сложнее и проще, одновременно... Не вижу смысла его описывать - оно просто позволяет редактировать описанные выше ресурсы (файлы языков). Часть его кода откуда-то позаимствовано (не помню уже). Для чего все это я отдельно решил написать, в отдельную тему? Предлагаю всем пользоваться данным кодом - кому как заблагорассудится! Исправлять, дополнять и делится мыслями и идеями. Возможно кто-то решит создать компонент. Ну вот вроде все, друзья! Если что - спрашивайте! Отвечу по мере возможности. P.S. К модераторам - поправьте, если что, - вдруг не в ту тему закинул. SLLanguage.zip Test_Translator.zip P.P.S. Забыл уточнить - дело-пример делал под XE10, а приложение для создания ресурсов под XE7. Не сложно поправить - кому под что нужно.
    1 балл
  16. когда-то тоже баловался делфи для себя, теперь хобби превратилось в работу.
    1 балл
  17. Я использовал ранее только для себя. Я с его помощью получил часть данных в диссертацию и успешно защитился в 2007 году. Помню удивление моего диссертационного совета, когда узнали, что я сам написал эту программу. Совет был по иммунологии/клинической фармакологии. Но со временем мой основной программы продукт понравился многим. И с 2009 года я выпустил первую публичную версию еще на delphi7. С 2015 года полностью переписываю его на FMX, что добавило кроссплатформанности. Мой программный продукт является автоматизированным рабочим местом врача - клинического фармаколога. Самое главное, он абсолютно бесплатный и без рекламы. Пользователи - врачи со всей РФ. Поэтому в опросе наверху я не смог выбрать "как я использую студию".
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...