Самое первое защищённое устройство (rugged device) Samsung появилось в далёком 2011 году.  С виду укреплённый корпус и заменяемая батарея, что продлевает жизнь смартфона, но всё не так просто. Линейка rugged моделей создана для снижения расходов бизнеса при эксплуатации смартфонов в долгосрочной перспективе, потому что на производстве условия часто суровые, а отношение сотрудников к устройству не всегда бережное.

В этой статье я опишу малоизвестные подробности использования смартфонов в бизнесе и расскажу о модели защищенного смартфона Galaxy XCover7, а также о трёх способах программировать кнопку XCover на его левой стороне.

Программируемая кнопка на XCover7. Кстати, в XCover6 Pro есть еще и вторая -Top Key button (иногда называют emergency key), расположенная на верхней стороне смартфона
Программируемая кнопка на XCover7. Кстати, в XCover6 Pro есть еще и вторая -Top Key button (иногда называют emergency key), расположенная на верхней стороне смартфона

Краткий обзор устройства и MIL-STD-810H


Хотелось бы начать с неочевидных конкретных кейсов, так как защищённость – это не просто укреплённый и необычный на вид корпус. На производстве бывает шумно, поэтому динамики устройств для бизнеса звучат громче. Touchscreen готов для работы в перчатках, а также для работы под дождём и снегом (real life). Настройки такие есть, см. ниже.

Специальные настройки для увеличения громкости
Специальные настройки для увеличения громкости
Мокрый экран и перчатки при включённой Touch sensitivity
Мокрый экран и перчатки при включённой Touch sensitivity

Понятно, что возможность замены батареи продлевает срок службы смартфона: «устала» и просела с годами - заменили и никаких проблем. Однако главная тема реальной долговечности - это «разматывание» Type-C из-за постоянных и не самых аккуратных подключений к зарядке (сотрудники не бережны, да и вообще). Для этого около Type-C входа есть POGO pin разъемы (видны на рисунке ниже), а также специальные зарядные устройства, рассчитанные на одно или несколько (до двадцати) устройств, которые просто удобнее и надёжнее в повседневном использовании. Это доп. аксессуар.

Стойки для POGO pin зарядки от 1 до 20 гнёзд под чехлы и без, не «разматывающие» type-c порт
Стойки для POGO pin зарядки от 1 до 20 гнёзд под чехлы и без, не «разматывающие» type-c порт

Какие ещё потребности бывают и как их решает устройство?

eSIM на корпоративном устройстве – это реально важно, поэтому добавили. Производство, менеджмент, логистика и администрирование пластика стоят приличных денег, если посчитать. А ещё бывают находчивые сотрудники, которые вынимают симку из устройства и гоняют трафик в личных целях. Если люди что-то могут, они это делают. Тоже real life.

Что по параметрам?

  • Батарея (15W) 4050mAh (хотелось бы побольше, но это влияет на размеры и вес, а удобство важно)

  • если реально автономность тема, то батарейку можно менять на ходу (заменимость)

  • Corning® Gorilla® Glass Victus®+ (и это хорошо)

  • 5G и Android 14 (и это актуально)

  • Экран 6.6 дюймов

  • Разрешение экрана FHD+

  • Память 6Gb (для большинства бизнес задач хватит)

  • Хранение 128Gb с расширением до 1Тб

  • Габариты: 169.0 x 80.1 x 10.2мм, 240 г.

  • Wi-Fi : 802.11 a/b/g/n/ac 2.4G+5GHz, Wi-Fi Direct

  • Bluetooth : BT5.3

  • USB : USB 2.0

  • GNSS Support : GPS, Glonass, Beidou, Galileo, QZSS

  • Сенсоры: Accelerometer, Gyro, Geomagnetic, Light, Proximity

  • NFC : UICC (в B2B бывает нужно)

Производительность ограничена требованиями защищенности и здравым смыслом. Это не красивый и модный флагман, а рабочая лошадка, задача которой – «пахать». Поэтому электронные компоненты спроектированы так, чтобы смартфон проходил более суровые, чем IP68, тесты стандарта MIL-STD-810H

Приведу самые занятные примеры из них:

  • Вибрации по трём осям от 20 до 20000Гц в течение часа по каждой

  • Обдув 8м/c песком и пылью 10г/м3 в течение часа каждой из 6 сторон при 25 и 65 °С

  • Выдержка в камерах по 2 часа при температурах -51 °С и 63 °С и разном давлении

  • Резкие температурные изменения от -20 °С до +60 °С

  • Реакции на удар по всем ��сям с разными параметрами

  • Трёхдневные испытания солёным туманом и ледяным дождём

  • Бросание на фанеру с высоты 1.5м каждой гранью и стороной 26 раз

  • Наращивание льда до 6мм при температуре -10 °С

  • Циклы испытаний солнечным облучением с макс температурой +54° С и ветром

Помню, с выходом первых складных флагманов Flip и Fold была тема, что не нужно с ними грубо обращаться, постоянно швыряя на кровать. При большой удаче можно дошвыряться. XCover создан для гораздо менее нежных условий, чем флагманы. Откуда солёный туман? Морские порты и перевозки. Ледяной дождь? Приёмка грузов и внешние осмотры могут происходить на улице в любую погоду. Склады с хранением заморозки. Падения? Да сколько угодно. Условия пустынь, полных песка и ветра, или сравнимые с арктическими, в добывающей промышленности бывают повсеместно.

Программирование и настройка


Каким образом можно назначать желаемую функциональность для XCover кнопки? Конечно, в этом участвует ваше приложение, но как связывать действия с кнопками для вызова соответствующих функций?

Первый способ - это ручная настройка в разделе Settings > Advanced Settings > XCover. В приложение включают логику обработки нажатия и добавляют метаданные в AndroidManifest.xml, чтобы оно оказалось в разделе среди доступных

<meta-data
  android:name="com.samsung.android.knox.intent.action.HARD_KEY_PRESS"
  android:value="true" />
<receiver android:name=".receiver" android:exported="true">
  <intent-filter>
    <action android:name="com.samsung.android.knox.intent.action.HARD_KEY_REPORT" />
  </intent-filter>
</receiver>
Интерфейс ручной настройки, в котором может быть ваше приложение
Интерфейс ручной настройки, в котором может быть ваше приложение

Когда пользователь нажимает или отпускает XCover кнопку, устройство передает intent со следующими свойствами:

Action

"com.samsung.android.knox.intent.action.HARD_KEY_REPORT"

Extra key settings

"com.samsung.android.knox.intent.extra.KEY_CODE"
"com.samsung.android.knox.intent.extra.KEY_REPORT_TYPE"

В KNOX SDK предопределены константы, которые используются для определения кнопок и нажатий

Public static final int KEYCODE_PTT

1015 (0x000003f7)

Public static final int KEYCODE_EMERGENCY

1079 (0x00000437)

Public static final int KEY_ACTION_DOWN (key press)

1 (0x00000001)

Public static final int KEY_ACTION_UP (key release)

2 (0x00000002)

Ниже пример кода, который разбирает intent для кнопки XCover и проверяет, нажата она была или отпущена

String intentAction = intent.getAction();
if ("com.samsung.android.knox.intent.action.HARD_KEY_REPORT".equals(intentAction)) {
  int keyCode = intent.getExtra(com.samsung.android.knox.intent.extra.KEY_CODE)
  int keyReportType = intent.getExtra(com.samsung.android.knox.intent.extra.KEY_REPORT_TYPE)
  if (keyCode == KEYCODE_PTT && keyReportType == 1) {
    // XCover key pressed
  }
  else if (keyCode == KEYCODE_PTT && keyReportType == 2) {
    // XCover key released 
  }
}

Второй способ состоит в том, что разработчики приложения определяют собственные intents в манифесте

<receiver
  android:name=".PTTKeyReceiver"
  android:permission="com.samsung.android.knox.permission.KNOX_CUSTOM_SETTING"
  android:exported="true" >
  <intent-filter>
    <action android:name="com.vendor.intent.action.PTT_PRESS" />
    <action android:name="com.vendor.intent.action.PTT_RELEASE" />
  </intent-filter>
</receiver>

KNOX_CUSTOM_SETTING permission добавляют для того, чтобы быть уверенным, что приложение будет о��идать intent от специализированных сервисов платформы, таких как Knox Service Plugin или Knox Configure, через которые IT администратор компании настраивает соответствие с приложением. Им нужно сообщить обрабатываемые intents.

Раздел настройки Remap Hardware Keys в Knox Configure
Раздел настройки Remap Hardware Keys в Knox Configure

Особенностью Knox Configure является возможность использования сервиса без MDM, с возможностью автоматической (Out-of-The-Box) раскатки настроек, через загрузку в сервис серийных номеров официальным реселлером или QR код.

Раздел настройки Key Mapping в Knox Service Plugin
Раздел настройки Key Mapping в Knox Service Plugin

Третий способ – это использование KNOX SDK for ISV (Independent Software Providers), который не требует активации KNOX лицензий на устройстве, если оно находится в режиме Device Owner.

Значения кодов для hardware кнопок на устройстве:

Volume up: 24
Volume down: 25
Power (side): 26
Push-to-Talk (XCover): 1015
Top (Emergency, Xcover): 1079

Последняя кнопка есть на XCover6 Pro, как я отмечал под первой картинкой в статье. Её часто называют Emergency, потому что используют для SOS оповещений о нештатных ситуациях на производстве

Uri uri = Uri.parse("content://com.samsung.android.knox.sdk/config/settings");
ContentValues contentValues = new ContentValues();
contentValues.put("component-name", "com.android.settings/com.android.settings.Settings");
contentValues.put("event", "long-press");
contentValues.put("key-code", "24");
contentValues.put("action", "activity");
String selection = "key=?";
String[] selectionArgs = new String[] {"hardware-key"};
mContext.getContentResolver().update(uri, contentValues, selection, selectionArgs);

Как применяют

Самая известная функциональность - это рация Push-To-Talk или Walkie-Talkie. Часто реализуют SOS функциональность, связывающую с диспетчером и передающую данные о местоположении, а также быстрое считывание данных штрих кодов для заполнения чек листов при учете товаров. Для этого, конечно, тоже используется отдельное приложение - Knox Capture. Опция доступна и с клавиатуры, но через кнопку многим удобнее. Кстати, Knox Capture входит в сервис Knox Suite, годовая лицензия на который идет в комплекте с устройством, в нее включены Knox Manage (MDM) и другие полезные KNOX сервисы.

Использование Knox Capture для чтения штрих кодов
Использование Knox Capture для чтения штрих кодов

Приведу несколько отраслевых примеров:

Ритейл. Самая крупная известная сделка — это покупка Walmart 740,000 защищенных устройств Samsung, которые, в том числе, используются для функции Push-to-Talk с кнопкой XCover. Ещё одним применением кнопки стала её интеграция с Knox Capture для автоматизации заполнения форм данными со штрих кодов.

Транспорт. Вопреки распространенному мнению «если автомобиль, то навигатор, а значит планшет», на самом деле, оперативная связь с водителем, который не всегда находится в кабине, гораздо важнее. Он должен постоянно иметь устройство с собой, что в случае с планшетом неудобно. А кнопка нужна для реализации экстренной связи с диспетчером.

В производстве, строительстве и добывающей промышленности кнопка нужна не только для рации push-to-talk, но и для обеспечения безопасности, то есть SOS вызова в экстренных ситуациях. Обычно операторы организуют заказчикам Private LTE сети, в которых работает смартфон, и это распространенная практика для Push-To-Talk и XCover.  И наличие джек разъема тут тоже пригодится, чтобы подключить любые проводные наушники или так называемую тангенту.

                                                           XCover7 с подключенной тангентой
XCover7 с подключенной тангентой

Выводы

О том, что у Samsung есть защищенные устройства, известно немногим. Защищенные устройства – это особая специализированная ниша, в которой имеют значение не только кнопки, от которых избавились в обычных смартфонах. Не только читатели могут задать вопрос: а надо ли вот это вот всё…? Может дёшево и сердито пользоваться в бизнесе типовыми потребительскими смартфонами? Стоит ли овчинка выделки следует решать, проявляя достаточную разборчивость в краткосрочных и долгосрочных эффектах (семь раз отмерь, один отрежь). Цена, в команде с иллюзией важности сиюминутных выгод, всегда играет против долгосрочных целей и реальной экономии.