Проверьте, работает ли на устройстве Android-Things

Можно ли выполнить проверку во время выполнения, чтобы узнать, работает ли устройство под управлением Android-Things?


person Roberto Betancourt    schedule 24.05.2017    source источник
comment
Что конкретно вы хотите сделать на Thing иначе, чем на другом Android-устройстве? Например, если вы хотите использовать классы API для вещей, используйте Class.forName(), чтобы узнать, существуют ли они.   -  person CommonsWare    schedule 24.05.2017
comment
Что ж, я пытаюсь выяснить, могу ли я запустить одно и то же приложение для Android в Android-вещах, и я, возможно, захочу выполнять автоматические действия на неуправляемом устройстве Android-вещей, запрашивая ручной ввод на обычном устройстве Android.   -  person Roberto Betancourt    schedule 24.05.2017
comment
Я бы сказал, что вашим критерием принятия решения должно быть не «Вещь ли это?», а вместо этого «есть ли у нас экран?» или что-то в этом роде. Android Things может иметь экраны и устройства ввода, где пользователь может заинтересоваться ручным вводом.   -  person CommonsWare    schedule 24.05.2017
comment
Ты прав. Я рассмотрю возможность реализации таким образом. Хотя кажется странным, что такой маленький удобный метод отсутствует в SDK.   -  person Roberto Betancourt    schedule 24.05.2017


Ответы (2)


Вы можете запросить PackageManager для FEATURE_EMBEDDED, который реализован на всех устройствах Android Things:

public boolean isThingsDevice(Context context) {
    final PackageManager pm = context.getPackageManager();
    return pm.hasSystemFeature(PackageManager.FEATURE_EMBEDDED);
}

Эта константа была недавно добавлена ​​в Android O Preview SDK. Пока не будет выпущена предварительная версия Android Things на основе O, вам может потребоваться использовать буквальное имя константы: android.hardware.type.embedded

person devunwired    schedule 25.05.2017
comment
Спасибо! Я искал что-то вроде этого. - person Roberto Betancourt; 25.05.2017

Любой APK-файл, который вы создаете с помощью AndroidThings, будет загружен в консоль IoT не в магазин игр.

Поэтому я бы рекомендовал если вам нужна единая кодовая база, которую вы используете Gradle Flavors и флаг. Это означает, что вы создадите два отдельных APK, а не будете проверять "на какой платформе я работаю" во время выполнения.

Это гарантирует, что ваш APK будет иметь наименьший размер на обеих платформах с ограниченным объемом памяти. (Например, разновидность сервисов Google Play, которая используется в Android Things, представляет собой урезанную версию того, что доступно для обычных приложений Android). Android Things поддерживает подмножество API Google для Android. Связанная таблица разбивает поддержку API в Android Things.

person Blundell    schedule 24.05.2017