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

Kitty

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

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

  • Посещение

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

    16

Сообщения, опубликованные Kitty

  1. У многих андроид 4.3 - 4.4. Получается что этот пример работает только в последних версиях андроида...

    А можно ли, и как правильно прикрутить TBeacon к этой статье: http://yaroslavbrovin.ru/using-alarmmanager-in-firemonkey-on-android-ru/

    Как заменить установку времени в этой статье, входом в зону маячка?

    Как правильно скрестить TBeacon и AlarmManager?

  2. Компонент TBeacon в Берлине поддерживает технологию блютуз  Eddystone  (см. картинку).
    Технология Eddystone позволяет прислать уведомление с URL на телефон, если на нем не установлено приложение, но есть браузер Хром.
    Статья о Eddystone найдена тут: https://habrahabr.ru/post/274585/
    Есть маячок IBKS105 настроенный на Eddystone-URL. О том, что маячок правильно настроен, свидетельствует стороннее  приложение из маркета:
    https://play.google.com/store/apps/details?id=physical_web.org.physicalweb
    Короткая ссылка URL в маячке настроена на сервисе гугла (см. картинку).
    Хром настроен согласно рекомендациям (блютуз и геоданные включены):
    https://support.google.com/chrome/answer/6239299?hl=en
    Дополнительно в настройках Хрома в Личных данных стоит ВКЛЮЧИТЬ Интернет вокруг нас. Однако ссылку из маячка Хром не видит, если в настройках Хрома нажать кнопку УЗНАТЬ ЧТО ПОБЛИЗОСТИ, то пусто.
    Поэтому при входе в зону маячка уведомление с URL на телефон не приходит. Где может быть проблема?
    Версия Хрома последняя 51. Версия андроида 4.4.4

    ed.jpg

  3. Это делает код из стандартных примеров RAD XE7. Только вот в Берлине ничего не отображается.

    void __fastcall TMainForm::ListView1UpdatingObjects(const TObject *Sender, const TListViewItem *AItem,
              bool &AHandled)
    {
     TListItemText * LCaption = reinterpret_cast<TListItemText*>((const_cast<TListViewItem*>(AItem))->Objects->FindObject(sText));
     if (LCaption == NULL)
    	{
    		LCaption = new TListItemText((TListItem*)AItem);
    		LCaption->Name = sText;
    		LCaption->Align = TListItemAlign::Trailing;
    		LCaption->VertAlign = TListItemAlign::Trailing;
    		LCaption->PlaceOffset->X = 15;
    		LCaption->PlaceOffset->Y = 12;
    		LCaption->TextAlign = TTextAlign::Center;
    		LCaption->Trimming = TTextTrimming::Character;
    		LCaption->IsDetailText = True;
    		LCaption->Width = 90;
    		LCaption->Height = 45;
    	}
    }

     

  4. В С++ Builder XE7 работает такой код:

    const System::UnicodeString sText = L"CA";
    TListViewItem * item = ListView1->Items->Add();
    item->Text = L"Основной текст";
    item->Detail = L"Детальный текст"
    item->BitmapRef = Image1->Bitmap; //картинка
    item->Data[sText] = TValue::From<UnicodeString>(L"Это текст справа"); //<- В Берлине не отображается

    При переносе этого кода в Берлин не отображается справа значение item->Data[sText] в ListView. Как это исправить?

    Спасибо.

  5. Цитата

    может у кого есть возможность проверить демку сервиса

    Так давайте я проверю работу готового сервиса. У меня есть реальный маячок.

    Цитата

    меняйте архитектуру, подход к решению...

    Мне трудно самой придумать архитектуру. Например, так реализовано у сети кофейн Starbucks.
    Пользователь приходит, телефон его приветствует, считает частоту его приходов и т.п. делает выводы и предлагает разного рода плюшки. :)

     

    Цитата

    А где такое реализовано, подскажите плиз, хочу с ними встретиться?

    Это наблюдала несколько месяцев назад в гостях на одной из выставок тут: http://художественныесокровища.рф/

    Была выставка с этой технологией. Народ ходил от картины к картине и слушал инфо из телефона. Были мною замечены маячки...

  6. Изучила пример: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo.

    Там есть readme.html и там написано:
     

    Цитата

     

    To open the projects:

        Navigate to the location given above.
        Open the sample application group project file: BeaconServiceDemo.groupproj.

    To create the Android Service:

        Select libBeaconService.so on the Project Manager.
        Right-click to select Compile.

            Note: Compiling the project generates the files that you need to add to the main application.

    To add the Android Service to the main application:

        Select BeaconServiceApp on the Project Manager.
        Expand the Target Platforms node.
        Select the Android device.
        Right-click on the Android device, and select Add Android Service.
        Select the location to C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo\BeaconService.
        Click Next.

            Note: Check that the location to these files is added: libBeaconService.so, BeaconService.jar, and BeaconServiceUnit.pas.

        Click Finish.
        Press F9 or choose Run > Run to deploy the application to an Android device.

     

    Ну просто красота - в готовое приложение можно добавить сервис: Right-click on the Android device, and select Add Android Service.

    Размечталась я об кренделях небесных - ну думаю в мой проект на С++ можно добавить службу на Дельфи и наступит счастье. :)

    Делаю в своем проекте Right-click on the Android device, and select Add Android Service и... ничего не происходит, просто тишина.

    Значит чтобы добавить службу на дельфи и само приложение должно быть на дельфи... печалька...

  7. Создано приложение для андроида. Реальное устройство подсоединено к студии. После компиляции приложение появилось на устройстве. Все нормально.
    Теперь я сделала изменения в коде и хочу снова запустить компиляцию. Мне надо чтобы первый вариант приложения не был затерт на устройстве, чтобы у меня было на устройстве оба варианта приложения.
    Достаточно ли поменять
    Project->Option->Version Info->label->$(ModuleName)
    вместо ModuleName вписать  другое название или надо пересохранить проект с новым именем?
    Как правильно поступить для такой задачи?
    Спасибо.

     

  8. Цитата

    В общем, копался тут в исходниках (по другому вопросу), а потом забрёл в семплы и ... iBeacon в сервисе возможен

    Большое спасибо за информацию!

    Цитата

    да например, нужно не спамить пользователя при входе в ТЦ, нужно задействовать службы геопозиции на уровне операционки

    Речь не идет о том, чтобы спамить пользователя. Пользователь установил мобильное приложение торгового центра (кофейни) сознательно, чтобы иметь выгоды (скидки, купоны, распродажи). На уровне кода можно сделать, чтобы сообщение от конкретного маячка приходило однократно в сутки. Торговый цент может быть нашпигован маячками (у каждого магазина свой). Определять границы зон магазинов через службы позиционирования, наверное, сложная задача. Или, например музей, гуляя от картины к картине, на телефоне срабатывает аудиогид (видела такое в живую).
    P.S.
    Раз на вооружение iBeacon уже берут и используют McDonald’s, Tesco, Macy’s и другие, то это, наверное, все же перспективно.  :)

  9. Большое спасибо всем за интересное обсуждение этой новой технологии!

    Цитата

    вам не приложение должно отправить уведомление  а сервер а серверу стучит сам телефон без участия приложения нужно задать параметры сервера

    Вот это и является для меня сложным - понять как при входе в зону, телефон сам видя это и понимая это, начинает стучать на сервер... Вот статью бы на эту тему. :)

     

    Цитата

    Попробуйте поэкспериментировать с  "Project options -- Version info -- persistent=true"

    Я пробовала. Вроде изменений не заметила. Где-то читала, что это для служб надо устанавливать.

     

    Цитата

    В Tools→Getit PM есть компоненты Beacon Fence (BeaconZonesFencing, BeaconMapFencing).

    Я их скачала. Судя из видео они для создания пользовательских зон.
    http://www.fmxexpress.com/visually-design-zones-and-maps-using-beacon-fence-solution-for-delphi-xe8-firemonkey/

     

    Видeо Байрама не много устарело. Он там говорит, что с этой технологией проблемы у андроида. Но сейчас все эти проблемы разрешены.
    Я заинтересовалась этой технологией насмотревшись видео Кульгина. Он штампует видео про iBeacon как пирожки. :)

    Сегодня новое выпустил

    Кстати Berlin и его компонент TBeacon поддерживает и стандарт Eddystone.

  10. А как мне поможет сервис? Приложение с компонентом TBeacon при запуске напоминает включить блютуз. Поэтому предполагаю, что в сервисе вообще нельзя использовать TBeacon.  Идеальный вариант такой - пользователь входит в зону, сервис это видит и запускает основное приложение. Для "видиния" зоны используется компонент TBeacon. Но если его засунуть в сервис и блютуз не включён, то служба, я думаю, работать не будет...

  11. Цитата

    маяк будит систему(?) и программу в ней(?)

    В том то и дело, что этот паразит не будит приложение. :)

    Все выглядит так:

    1. Кидаю на форму компонент TBeacon. Определяю его события в инспекторе объектов. Например "Привет мир" при входе в зону.

    2. Запускаю. Если я в зоне реального маячка, то вижу сразу "Привет мир", если я не в зоне и вхожу в зону, то тоже вижу "Привет мир".

    3. Если приложение на переднем плане, то оно продолжает работать и через сутки, короче все работает и при потухшем экране на телефоне если приложение на переднем плане.

    4. Если свернуть приложение, то как и писали выше, оно перестает реагировать спустя определенное время.

    У компонента TBeacon есть свойство BeaconDeathTime=20, но что это такое не ясно (в справке ничего нет)...

  12. Цитата

    Как вы проверяете, висит ли приложение в фоне или нет?

    Нажимаю с удержанием кнопку на телефоне и вижу какие приложения у меня в фоне на заднем плане. Например на скриншоте вижу, что запущен хром.

    Цитата

    Может я конечно чего-то не знаю, но судя по жизненному циклу приложения без службы, оно будет убито в любой момент, после того как его "свернули". Время, через которое будет убито приложение зависит уже от самой системы.

    У меня именно так и происходит на телефоне.

    Цитата

    событие "OnStop" позволяет системе убить приложение.

    Отменить бы это событие и для приложения c компонентом TBeacon все вопросы бы снялись. :)

    Цитата

    https://www.ibeaconrussia.ru/blog/ibeacon-na-android/

    #2. iBeacon позволяет непрерывно отслеживать активность радиомаячков

    Мобильные устройства на базе Android могут взаимодействовать с радиомаячками iBeacon даже тогда, когда приложение для iBeacon не запущено или работает в фоновом режиме.

    Только не понятно как реализовать такое поведение. :)

     

     

    Screenshot_2016-06-23-06-31-10.png

  13. Цитата

    на моем телефоне сутками висит спокойно

    И на моем телефоне висит сутками, но маленький нюанс. Реагировать на вход в зону маячка приложение перестает и каждый раз по разному - через 30 минут, через час, через два. Видимо андроид сам решает когда прибить функционал приложения. Приложение продолжает висеть в фоне, но абсолютно бесполезно - оно перестает реагировать на событие входа в зону маячка. Когда приложение снова, спустя время, запускаю пальцем из фона, то вижу, что оно перестартует полностью заново - идет заставка и запуск.

  14. >2) запущенное приложение

    Значит жесткость соблюдается - приложение обязано быть запущено и не в коем случае не свернуто в фон ибо если оно свернуто, андроид прибьет его минут через 30.

    Значит идешь в торговый центр, хочешь знать о скидках, будь добр перед входом запусти приложение торгового центра...

    Теперь вроде полнач ясность... :)

  15. Теперь мне понятно, что пуш присылает главный сервер, почитала документацию эмбаркадеро. Однако, как я поняла, это не подходит для компонента TBeacon. Вот приложение не запущено, вот вошёл человек в зону TBeacon, откуда об этом узнает главный сервер, чтобы послать пуш? Следовательно не подходит или не до конца поняла...

    Подумав пришла к выводу, что и отдельный фоновый сервис не возможно использовать с TBeacon. С этим компонентом сервис просто не запуститься. Моя программа, когда я её запускаею, напоминает мне включить блютуз если он не включён. Это действие компонента TBeacon. Следовательно фоновый сервис с компонентом TBeacon и не за пуститься если блютуз выключен.

    Одно не понятно, почему тут он говорит, что пуш приходит на спящий телефон, следовательно приложение не запущено. Как главный сервер может знать, что человек входит в зону?  Может он приверает в своём видео? :)

     

     

  16. К сожалению сейчас нет под рукой устройства на котором отладка не работает. Если у кого то не работает отладка проверте эту теорию и отпишитесь: http://community.embarcadero.com/blogs?view=entry&id=8545

  17. Правильно ли я понимаю, что компоненты все же есть:

    BeaconFence

    Я скачала эти компоненты из меню Берлина Tools->CetIt.

    Ограничение этих компонентов: allowing you to set up and deploy BeaconFence with support of up to 3 beacons, 1 location with a building size of up to 1,500 square feet / 150 square meters and 1 application

    Это и есть решение для приложений Geofencing в Берлине?

×
×
  • Создать...