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.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
devicePickerLauncher = Discovery.create(this).registerForResult(this, handleDevices)
}
@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.
handleDevices = OnDevicePickerResultListener { participants -> participants.forEach {
// Use participant info
}
}
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.
devicePickerLauncher.launchDevicePicker(
listOf(),
startComponentRequest {
action = "com.example.crossdevice.MAIN"
reason = "I want to say hello to you"
},
)
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
.
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)
}
@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:
val deviceFilters = listOf(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY))
List<DeviceFilter> deviceFilters =
Arrays.asList(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY));
Cihaz filtrelerini tanımladıktan sonra cihaz bulma işlemini başlatabilirsiniz.
devicePickerLauncher.launchDevicePicker(deviceFilters, startComponentRequest)
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.