API ввода в эксплуатацию позволяет приложению взимать комиссию либо:
- Ваша ткань и ткань Google.
- Только ткань Google.
Указать поддержку ввода в эксплуатацию Материи
Если вы используете Google Home Mobile SDK для ввода в эксплуатацию, вам необходимо добавить имя пакета приложения в Google Home Developer Console , реализовать наши API-интерфейсы Matter и указать, что ваше приложение поддерживает ввод в эксплуатацию Matter , обрабатывая намерение ACTION_COMMISSION_DEVICE
.
Добавьте следующий intent-filter
в объявление application
в файле AndroidManifest.xml
:
<intent-filter>
<action android:name="com.google.android.gms.metadata.MODULE_DEPENDENCIES" />
</intent-filter>
Для справки см. манифест нашего примера приложения .
Способы ввода в эксплуатацию устройств Matter
Процесс ввода в эксплуатацию может быть начат:
Запросите ввод в эксплуатацию прямо в вашем приложении
Запрос на ввод в эксплуатацию непосредственно в приложении может быть вызван кнопкой в приложении и может быть выполнен двумя способами:
Для одиночных тканей
Чтобы подать заявку на ввод в эксплуатацию:
Инициализируйте
ActivityResultLauncher
в своей деятельности. Если пользователь ввел устройство в эксплуатацию на платформе Google, результат может включать имя, которое пользователь присвоил устройству при его вводе в эксплуатацию.private val commissioningLauncher = registerForActivityResult(StartIntentSenderForResult()) { result -> val resultCode = result.resultCode if (resultCode == RESULT_OK) { Log.i("CommissioningActivity", "Commissioning success") val deviceName = CommissioningResult.fromIntentSenderResult(result.resultCode, result.data).deviceName } else { Log.i("CommissioningActivity", "Commissioning failed") } }
Создайте
CommissioningRequest
, включающий полученные полезные данные, и установите опцию ввода устройства в эксплуатацию для структуры Google, используяsetStoreToGoogleFabric
:val commissioningRequest = CommissioningRequest.builder() .setOnboardingPayload(payload) .setStoreToGoogleFabric(true) // set all other options that you care about .build()
Если вы хотите ввести устройство в эксплуатацию как в фабрике Google, так и в своей собственной фабрике, настройте службу ввода в эксплуатацию с помощью
setCommissioningService
вCommissioningRequest
.Используйте экземпляр
CommissioningClient
, чтобы начать ввод в эксплуатацию:commissioningClient .commissionDevice(commissioningRequest) .addOnSuccessListener { result -> Log.i("CommissioningActivity", "Commissioning success") _commissioningIntentSender.postValue(result) } .addOnFailureListener { error -> Log.i("CommissioningActivity", "Commissioning failed") }
Где
_commissioningIntentSender
определяется как:private val _commissioningIntentSender = MutableLiveData<IntentSender?>() val commissioningIntentSender: LiveData<IntentSender?> get() = _commissioningIntentSender
Как только
CommissioningClient
вернет отправителя намерения, запустите отправителя:commissioningIntentSender.observe(this) { sender -> if (sender != null) { commissioningLauncher.launch(IntentSenderRequest.Builder(sender).build()) } }
Для нескольких фабрик (мультиадминистратор)
Если вам нужно настроить несколько фабрик Matter на устройстве, обратитесь к разделу Как использовать API ввода в эксплуатацию в режиме нескольких администраторов .
Точка входа в эксплуатацию Matter для быстрого сопряжения или сканирования QR-кода (только для Android)
Запрос на ввод в эксплуатацию посредством быстрого сопряжения или QR-кода на Android можно выполнить двумя способами:
Для одиночных тканей
Используйте фильтр намерений ACTION_START_COMMISSIONING
, чтобы обеспечить полную возможность ввода в эксплуатацию приложения без необходимости использования GHA . При вводе в эксплуатацию в системе Google это включает в себя разрешение пользователю присвоить устройству имя.
Чтобы указать поддержку ввода в эксплуатацию структуры Google, добавьте следующий intent-filter
к выбранному объявлению активности в файле AndroidManifest.xml
:
<intent-filter>
<action android:name="com.google.android.gms.home.matter.ACTION_START_COMMISSIONING" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
intent-filter
используется для включения вашего приложения в список предлагаемых приложений Matter в средстве выбора приложений API ввода в эксплуатацию. Если ваше приложение не входит в число предложенных, оно появится в разделе « Выбрать другое приложение» .
Как только пользователь выбирает ваше приложение, оно запускается и направляется к выбранному действию с намерением ACTION_START_COMMISSIONING
.
Для нескольких фабрик (мультиадминистратор)
вы также можете использовать поток FastPair в сценариях с несколькими администраторами. Дополнительную информацию см. в разделе Как использовать API ввода в эксплуатацию в режиме нескольких администраторов .
Обработка входящего намерения
После запуска вашей активности она должна проверить существующее намерение ACTION_START_COMMISSIONING
и получить полезную нагрузку:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val payload = if (Matter.ACTION_START_COMMISSIONING.equals(intent.getAction())) {
intent.getStringExtra(Matter.EXTRA_ONBOARDING_PAYLOAD)
} else {
null
}
CommissioningRequest.builder()
.setOnboardingPayload(payload)
.setStoreToGoogleFabric(true)
// set all other options that you care about
startCommissioning(commissioningRequest)
}
Значение полезной нагрузки, отличное от null
указывает на то, что пользователь уже либо отсканировал QR-код устройства, либо ввел ключ сопряжения. null
значение полезной нагрузки не означает, что ввод в эксплуатацию следует прервать.
Подавить уведомления о комиссионных открытиях
По умолчанию Google Play services на Android используют уведомления «на половину листа», которые закрывают нижнюю половину экрана мобильного устройства, чтобы предоставить пользователям упреждающую индикацию о том, что поблизости находятся платные устройства Matter .
Чтобы предотвратить перебои, пока ваше приложение находится на переднем плане, вы можете отключить эти уведомления, вызвав метод suppressHalfSheetNotification()
в Mobile SDK . Дополнительную информацию см. в документации API.
Время подавления, включенное этим API, истекает, если ваше приложение находится на переднем плане более 15 минут. Чтобы снова включить подавление после тайм-аута, снова вызовите suppressHalfSheetNotification()
, иначе начнут появляться уведомления о половине листа.
Реализацию этого API можно найти в Google Home Sample App for Matter . Дополнительную информацию см. в HalfSheetSuppressionObserver.kt
.
Как вам следует предоставлять Google доступ к устройствам Matter на вашей инфраструктуре?
Google настоятельно рекомендует вам использовать API ввода в эксплуатацию в качестве основного средства совместного использования устройства, которое вы уже настроили в своей собственной фабрике, с фабрикой Google. Share API имеет свои ограничения и его следует зарезервировать для других случаев использования.
Почему вам следует использовать API ввода в эксплуатацию вместо API Share?
API ввода в эксплуатацию позволяет инициировать общий доступ к устройству напрямую через структуру Google, что является предпочтительным методом, если это возможно. При использовании Share API конечному пользователю требуется больше действий. Например, у конечного пользователя должен быть установлен GHA , и он должен знать, что нужно выбрать GHA во время процесса, чтобы обеспечить успех.
Чтобы использовать API ввода в эксплуатацию, вам следует открыть окно ввода в эксплуатацию и вызвать API ввода в эксплуатацию, как описано в разделе «Как использовать API ввода в эксплуатацию в качестве вторичного комиссара Matter» .
Когда следует использовать Share API?
Вы можете использовать API-интерфейс Share , чтобы позволить конечному пользователю выбрать подходящее приложение для совместного использования устройства с другими экосистемами Matter .