Cihaz keşfi API'sı

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.

Yakındaki kullanıcılarla paylaşma seçenekleri gösteren iletişim kutusu
Şekil 1: Yakındaki kullanıcılarla paylaşma.

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.