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.