Neredeyse her çoklu cihaz deneyimi, kullanılabilir cihazları bulmakla başlar. Alıcı: bu yaygın görevi basitleştirmek için Device Discovery API'yi kullanıma sunuyoruz.
Cihaz seçimi iletişim kutusunu başlat
Cihaz bulma, kullanıcının hedef cihaz seçmesine olanak tanımak için sistem iletişim kutusunu kullanır. Alıcı:
cihaz seçimi iletişim kutusunu başlatın, önce cihaz bulmayı sağlamanız gerekir
ve bir sonuç alıcı kaydedin.
registerForActivityResult, bu alıcı koşulsuz olarak şu şekilde kaydedilmelidir:
parçasına sahip olduğundan emin olun.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) devicePickerLauncher = Discovery.create(this).registerForResult(this, handleDevices) }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); devicePickerLauncher = Discovery.create(this).registerForResult(this, handleDevices); }
Yukarıdaki kod snippet'inde tanımlanmamış bir handleDevices nesnemiz var. Şu tarihten sonra:
Kullanıcı bağlanılacak cihazları seçer ve SDK başarıyla yüklendikten sonra
diğer cihazlara bağlandığında bu geri çağırma, Participants listesini alır
seçili.
Kotlin
handleDevices = OnDevicePickerResultListener { participants -> participants.forEach { // Use participant info } }
Java
handleDevices = participants -> { for (Participant participant : participants) { // Use participant info } }
Cihaz seçici kaydedildikten sonra devicePickerLauncher kullanarak başlatın
örneğidir. DevicePickerLauncher.launchDevicePicker iki parametre alır:
cihaz filtreleri listesi (aşağıdaki bölüme bakın) ve startComponentRequest. İlgili içeriği oluşturmak için kullanılan
startComponentRequest, hangi etkinliğin başlatılması gerektiğini belirtmek için kullanılır
alıcı cihaz ve kullanıcıya gösterilen isteğin nedeni.
Kotlin
devicePickerLauncher.launchDevicePicker( listOf(), startComponentRequest { action = "com.example.crossdevice.MAIN" reason = "I want to say hello to you" }, )
Java
devicePickerLauncher.launchDevicePickerFuture( Collections.emptyList(), new StartComponentRequest.Builder() .setAction("com.example.crossdevice.MAIN") .setReason("I want to say hello to you") .build());
Bağlantı isteklerini kabul et
Kullanıcı, cihaz seçicide cihaz seçtiğinde
kullanıcıdan bağlantıyı kabul etmesini istemesi için alıcı cihazı ekleyebilirsiniz. Kabul edildikten sonra
onCreate ve
onNewIntent.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) handleIntent(getIntent()) } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) handleIntent(intent) } private fun handleIntent(intent: Intent) { val participant = Discovery.create(this).getParticipantFromIntent(intent) // Accept connection from participant (see below) }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); handleIntent(getIntent()); } @Override public void onNewIntent(Intent intent) { super.onNewIntent(intent); handleIntent(intent); } private void handleIntent(Intent intent) { Participant participant = Discovery.create(this).getParticipantFromIntent(intent); // Accept connection from participant (see below) }
Cihaz filtreleri
Cihazları keşfederken bu cihazları yalnızca mevcut kullanım alanıyla alakalı olanları gösterin. Örnek:
- QR kodu taramaya yardımcı olmak için yalnızca kameralı cihazları görecek şekilde filtreleniyor.
- Büyük ekran izleme deneyimi için yalnızca TV'leri filtreleme
Bu geliştirici önizlemesi için aşağıdakileri filtreleme imkanıyla başlıyoruz: Cihazları (ör. kullanıcı cihazları) yönetin.
DeviceFilter sınıfını kullanarak cihaz filtresini belirtebilirsiniz:
Kotlin
val deviceFilters = listOf(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY))
Java
List<DeviceFilter> deviceFilters = Arrays.asList(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY));
Cihaz filtrelerini tanımladıktan sonra cihaz bulma işlemini başlatabilirsiniz.
Kotlin
devicePickerLauncher.launchDevicePicker(deviceFilters, startComponentRequest)
Java
Futures.addCallback( devicePickerLauncher.launchDevicePickerFuture(deviceFilters, startComponentRequest), new FutureCallback<Void>() { @Override public void onSuccess(Void result) { // do nothing, result will be returned to handleDevices callback } @Override public void onFailure(Throwable t) { // handle error } }, mainExecutor);
launchDevicePicker öğesinin
suspend anahtar kelime.