Всем привет! Меня зовут Миша Вассер, я Head of Android в AGIMA. Мы занимаемся разработкой Digital-продуктов для больших и маленьких компаний, в том числе пилим мобильные приложения.
Не так давно — по сравнению со всей историей Android — Huawei выкатил собственную операционную систему и сказал: «Ребята, вот вам новая система, кайфуйте». Многие отнеслись к новой ОС скептически. Остальным пришлось адаптировать под нее свои Android-приложения.
Мы оказались во второй группе. К нам время от времени обращаются с просьбой помочь с адаптацией под Huawei. И мы неплохо в этом вопросе прокачались. Поэтому сейчас расскажу, что надо сделать, чтобы стало хорошо. А покажу всё это на примере крупного ретейлера, с которым мы работаем.
Что сделать, чтобы было хорошо
1. Зависимости build.gradle.
Чтобы начать работать с библиотеками Huawei, первым делом добавим нужные зависимости в наш Gradle (модуля app):
Источник: www.agima.ru
Что такое рендеринг? Просто и понятно!
Охранный дроид на парковке, виртуальный диван в пустой комнате: возможности AR в экосистеме Huawei
Привет, Хабр! Закон Мура действует не только на процессоры, но и на людей, которые ими пользуются. Ещё недавно им было достаточно карты и указателя, а теперь нужна картинка с камеры и прыгающая в нужном направлении лиса. Усложняются сценарии, а за ними и требования: пользователи хотят большего интерактива и реалистичности, которую можно получить с помощью элементов дополненной реальности (AR). На платформе Huawei Mobile Services интегрировать эту технологию в свои приложения можно с помощью сервиса AR Engine, и в этой статье мы расскажем, где может пригодиться это SDK, как им можно воспользоваться и чем дополнить.
От ловли покемонов к защите смартфона — где используются и как работают технологии AR
На мобильных устройствах инструменты AR выполняют сразу несколько задач: анализируют окружающее пространство, определяют объекты и дорисовывают элементы. Перемещение виртуальных предметов, контроль движений и жестов — все эти сценарии требуют быстрой обработки видеопотока. Эта функция уже выходит за рамки работы с дополненной реальностью и используется гораздо шире.
С Local Authentication Engine функция распознавания лица, входящая в AR Engine, обеспечивает безопасную аутентификацию на смартфоне. Функции этого SDK используются при фото- и видеосъёмке: они определяют положение тела и обеспечивают различные режимы съёмки для службы Camera Kit.
Ядро AR Engine представляет собой набор алгоритмов, работающих с видеопотоком от камер смартфона. Они анализируют окружающую среду, человеческую мимику и движения тела и производят быстрый рендеринг. Движок работает с объектами на расстоянии до 5 метров, что подходит для большинства существующих приложений дополненной реальности. AR Engine оптимизирует операции на уровне процессора и упрощает взаимодействие с пользователями. В рамках AR Engine наши разработчики выделили 3 основные задачи: работа с окружением, отслеживание движений и захват жестов и мимики.
Что будет с Huawei и новая стратегия Sony — ВОТ ЭТО НОВОСТИ!
Источник: habr.com
10 вопросов к поддержке HMS по работе с гибридными приложениями, AppGallery и эмулированию телефонов Huawei
Привет, Хабр! За год количество сервисов в экосистеме Huawei Mobile Services (HMS). выросло с 9 до 31, и у разработчиков стало возникать всё больше вопросов по поддержке гибридных приложений, взаимодействию с AppGallery, использованию отдельных служб и китов. Основные площадки нашего общения с мировым сообществом — это Stackoverflow, Reddit, XDA-Developers и раздел поддержки на портале разработчиков Huawei. Специально для тех, кто интересуется нашей платформой, мы собрали с этих площадок 10 вопросов по работе с Huawei Mobile Services.
1. Будет ли работать React-native и Firebase SDK на телефонах Huawei без Google Service и без изменений кода?
Да, приложение на React-native будет работать без изменений, достаточно отправить APK для загрузки в галерею приложений Huawei. С Firebase SDK будет немного сложнее. Работоспособность приложения зависит от служб, которые вы пытаетесь включить в своё приложение. Так, вход в Google с помощью модуля аутентификации Firebase не будет поддерживаться на телефонах, где нет Google Mobile Services, например на Huawei Mate 30 Pro.
Если вы хотите использовать один APK как для GMS, так и для HMS, вам необходимо сначала проверять доступность службы.
Для GMS:
val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)
val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)
При попытке использовать Google Login, или Huawei Login, или любые другие сервисы:
if gmsAvailable < // execute GMS Code >else if hmsAvailable < // execute HMS Code >
2. Каковы реальные скрытые расходы на поддержку дополнительной экосистемы?
Расходы на поддержку приложения в HMS зависят от того, как вы проектируете систему и какие сервисы требуются в вашем приложении. В среднем время интеграции может варьироваться от нескольких часов до нескольких недель в зависимости от приложения и количества сервисов Google и Firebase в исходном приложении.
Если в вашем приложении нет интегрированных GMS, то можно загружать его без каких-либо доработок — сервисы Facebook, Yandex и другие будут работать.
3. Какие гибридные приложения поддерживает HMS?
С версии HMS Core 5.0.0 увеличено количество китов, поддерживаемых сторонними платформами:
- Account Kit plugins for Cordova
- Ads Kit plugins for Cordova
- Analytics Kit plugin for Cordova
- In-App Purchases Kit plugin for Cordova
- Location Kit plugin for Cordova
- Map Kit plugins for Cordova
- ML Kit plugins for Cordova
- Push Kit plugin for Cordova
- Site Kit plugins for Cordova
- Account Kit plugins for React Native
- Ads Kit plugins for React Native
- Analytics Kit plugin for React Native
- Health Kit plugin for React Native
- In-App Purchases Kit plugin for React Native
- Location Kit plugin for React Native
- Map Kit plugin for React Native
- ML Kit plugins for React Native
- Push Kit plugin for React Native
- Site Kit plugins for React Native
- Account Kit plugins for Xamarin
- Ads Kit plugins for Xamarin
- Analytics Kit plugins for Xamarin
- Map Kit plugins for Xamarin
- Location Kit plugins for Xamarin
- Push Kit plugins for Xamarin
- Site Kit plugins for Xamarin
- Account Kit plugins for Flutter
- Ads Kit plugins for Flutter
- Analytics Kit plugins for Flutter
- In-App Purchases Kit plugin for Flutter
- Location Kit plugins for Flutter
- Map Kit plugins for Flutter
- Push Kit plugins for Flutter
- Site Kit plugins for Flutter
4. Можно ли считать данные с датчика глубины (TOF) на телефонах Huawei?
Да, это возможно при использовании AR Engine SDK. Huawei AR Engine обеспечивает вывод сетки сцены в реальном времени, и результат включает положения мобильного телефона в пространстве. Трёхмерная сетка текущего вида камеры поддерживает только модели Honor V20 и P30Pro, которые могут получать информацию о глубине, а поддерживаемая сцена сканирования является статической.
TOF поддерживается на следующих устройствах:
- Серия P: P30 / P30Pro / P40 / P40Pro / P40Pro +
- Серия Mate: Mate20 / Mate20Pro / Mate20RS / Mate 20X / Mate20X (5G) / Mate30 / Mate30Pro / Mate30RS / Mate30 (5G) / Mate30Pro (5G) / Mate X / Mate XS
- Серия Nova: Nova6 / Nova6-5G / Nova7 / Nova7Pro
- Серия Honor: Honor V20 / Honor 20 / Honor 20Pro / Honor V30 / Honor V30Pro / Honor 30S / Honor 30 Pro / Honor 30 Pro +
- Серия планшетов: Tablet M6
Для получения данных от TOF нужно использовать класс ARSceneMesh с помощью следующих методов:
public ShortBuffer getSceneDepth() // Get the depth image of current frame(optimized). public int getSceneDepthHeight() // Get the height of the depth image. public int getSceneDepthWidth() // Get the width of the depth image.
Есть и другие варианты, как считать глубину. Можно получить объект класса ARFrame и использовать его методы hitTest, acquireDepthImage. Также возвращает обработанную карту глубины метод GetSceneDepth из класса ARSceneMesh. Она точнее, но работает только до 2,5 метра.
5. Как открыть AppGallery напрямую из приложения?
AppGallery из приложения открывается так же, как и Google Play Store. Надо учитывать, что AppGallery использует собственную схему appmarket://:
- Схема: appmarket://
- Пакет: com.huawei.appmarket
private void startHuaweiAppGallery() < Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(«appmarket://details?id=» + getPackageName())); ListotherApps = getPackageManager().queryIntentActivities(intent, 0); boolean agFound = false; for (ResolveInfo app : otherApps) < if (app.activityInfo.applicationInfo.packageName.equals(«com.huawei.appmarket»)) < ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setComponent(psComponent); startActivity(intent); agFound = true; break; >> //Optional, Or copy the Google Play Store URL here (See below) if (!agFound) < //Your Huawei app ID can be found in the Huawei developer console final string HUAWEI_APP_ID = «100864605»; //ex. https://appgallery.cloud.huawei.com/marketshare/app/C100864605 intent = new Intent(Intent.ACTION_VIEW, Uri.parse(«https://appgallery.cloud.huawei.com/marketshare/app/C» + HUAWEI_APP_ID)); startActivity(intent); >>
6.
Как создать Huawei Android Emulator?
Huawei предоставляет разработчикам Huawei функцию облачной отладки в качестве бесплатной услуги. Если вы используете SDK Huawei, у вас должна быть учётная запись разработчика Huawei. Просто войдите в консоль разработчика Huawei и следуйте инструкциям.
Функция облачной отладки действительно проста в использовании. Она позволяет выполнять удалённую отладку на реальных устройствах. В процессе вы можете просматривать информацию об устройстве, загружать и устанавливать APK на удалённые устройства, получать журналы операций и сохранять журналы на локальном компьютере для анализа.
7. Как получить доступ к payload push-уведомлений HMS?
Чтобы получить доступ к payload, вам необходимо реализовать класс HmsMessageService и переопределить метод onMessageReceived. Вы можете получить доступ к payload из объекта RemoteMessage. Чтобы получить доступ к токену, переопределите метод onNewToken.
override fun onMessageReceived(remoteMessage: RemoteMessage?) < super.onMessageReceived(remoteMessage) if (remoteMessage. data.isNotEmpty()) < Log.i(TAG, «Message data payload: » + remoteMessage.data) >if (remoteMessage.notification != null) < Log.i(TAG, «Message Notification Body: » + remoteMessage.notification.body) >>
Убедитесь, что вы зарегистрировали свою службу:
8. Какие инструменты использовать при разработке приложения Android для мобильного телефона Huawei?
Для разработки приложений можно использовать как Android Studio, так и другие IDE, такие как Eclipse, Intelliji IDEA.
Если у вас уже есть приложение, использующее GMS, используйте HMS Toolkit для преобразования кода, работающего с GMS, для работы с HMS. Необходимо учитывать, что HMS Toolkit поддерживает конвертацию не всех служб, и перед его использованием лучше уточнить, работу каких служб он может перенести.
9. Как инициализировать службы HMS без agconnect-services.json?
Пока HMS не предоставляет единого решения для инициализации на основе кода. Инициализация без json-файла возможна при работе со следующими службами:
android_value=»appid=xxx»>
MapsInitializer.setApiKey(«Your API Key»);
SearchService searchService = SearchServiceFactory.create(this, «API key»);
MLApplication.getInstance().setApiKey(«your ApiKey»);
10. Что может система управления продуктами (PMS) в службе HMS In-App Purchase?
API системы управления продуктами (PMS) позволяет создавать продукты и управлять информацией о них. Через него можно:
- Создавать продукты: в том числе с по подписке с автоматическим продлением.
- Запрашивать информацию о продуктах: например, можно запросить конкретный продукт на основе идентификатора приложения и идентификатора продукта или запросить все продукты, которые соответствуют указанным вами критериям.
- Обновлять информацию о продуктах: название продукта, язык, цену и статус. Работать можно как с одним, так и с несколькими продуктами одновременно.
- Продвигать продукты: API позволяет разделять рекламные каомпании по регионам, задавать время продвижения и устанавливать цены.
Источник: temofeev.ru