Commissioning API позволяет приложению вводить в эксплуатацию:
- Ваша ткань и ткань Google.
- Только ткань Google.
Как инициализировать устройства 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вернет отправителя intent, запустите его:commissioningIntentSender.observe(this) { sender -> if (sender != null) { commissioningLauncher.launch(IntentSenderRequest.Builder(sender).build()) } }
Для нескольких сетей (несколько администраторов)
Если вам нужно настроить несколько сетей Matter на устройстве, ознакомьтесь с информацией о Multi-admin для Commissioning API на Android.
Точка входа для ввода в эксплуатацию устройств Matter с помощью быстрого подключения или сканирования QR-кода (только для Android)
Запросить ввод в эксплуатацию с помощью быстрого подключения или QR-кода на Android можно двумя способами:
Для отдельных тканей
Используйте фильтр интентов ACTION_START_COMMISSIONING, чтобы обеспечить полную поддержку ввода в эксплуатацию для приложения без GHA. При вводе в эксплуатацию в сети Google пользователь может присвоить устройству название.
ACTION_START_COMMISSIONINGЧтобы указать поддержку ввода в эксплуатацию в сети 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 в окне выбора приложений Commissioning API.
Если вашего приложения нет в списке, нажмите Выбрать другое приложение.
После того как пользователь выберет ваше приложение, оно запустится и перейдет к выбранному действию с намерением ACTION_START_COMMISSIONING.
Для нескольких сетей (несколько администраторов)
Вы также можете использовать Fast Pair в сценариях с несколькими администраторами. Подробную информацию можно найти в статье Multi-admin for Commissioning API on Android (Несколько администраторов для Commissioning API на Android).
Обработка входящего намерения
После запуска действия оно должно проверить наличие намерения 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
}
val commissioningRequest = CommissioningRequest.builder()
.setOnboardingPayload(payload)
.setStoreToGoogleFabric(true)
// set all other options that you care about
.build()
startCommissioning(commissioningRequest)
}
Значение полезной нагрузки, отличное от null, указывает на то, что пользователь уже отсканировал QR-код устройства или ввел ключ подключения. Значение полезной нагрузки null не означает, что ввод в эксплуатацию должен быть прерван.
Отключить уведомления о комиссионных
По умолчанию Google Play services на Android использует уведомления в виде полустраницы, которые закрывают нижнюю половину экрана мобильного устройства и сообщают пользователям о том, что поблизости есть устройства Matter, которые можно ввести в эксплуатацию.
Чтобы не прерывать работу приложения, когда оно находится на переднем плане, вы можете отключить эти уведомления, вызвав метод suppressHalfSheetNotification(). Дополнительную информацию можно найти в документации по API.
Если приложение находится на переднем плане более 15 минут, срок действия подавления, включенного этим API, истекает. Чтобы снова включить подавление после тайм-аута, вызовите suppressHalfSheetNotification() ещё раз. В противном случае уведомления на пол-экрана начнут появляться снова.
Как предоставить Google доступ к устройствам Matter в вашей сети?
Мы настоятельно рекомендуем использовать Commissioning API в качестве основного средства для предоставления доступа к устройству, которое вы уже настроили в своей сети, сети Google. У Share API есть ограничения, и его следует использовать для других целей.
Почему стоит использовать Commissioning API вместо Share API?
Commissioning API позволяет запустить процесс предоставления доступа к устройству напрямую в фабрику Google. Это предпочтительный метод, если он доступен. При использовании Share API конечному пользователю нужно выполнить больше действий. Например, у конечного пользователя должно быть установлено приложение GHA, и он должен знать, что в процессе нужно выбрать GHA.
Чтобы использовать Commissioning API, откройте окно ввода в эксплуатацию и вызовите Commissioning API, как описано в разделе Как использовать Commissioning API в качестве дополнительного уполномоченного Matter.
Когда следует использовать Share API?
Вы можете использовать Share API, чтобы конечный пользователь мог выбрать подходящее приложение и предоставить доступ к устройству другим экосистемам Matter.