डिवाइस खोज API

ज़्यादातर डिवाइसों को एक साथ इस्तेमाल करने की शुरुआत, डिवाइसों के लिए उपलब्ध डिवाइसों को खोजने से होती है. यहां की यात्रा पर हूं हम इस काम को आसान बनाने के लिए, Device Discovery API उपलब्ध कराते हैं.

आस-पास मौजूद लोगों के साथ आइटम शेयर करने के विकल्पों वाला डायलॉग बॉक्स
पहली इमेज: आस-पास मौजूद उपयोगकर्ताओं के साथ शेयर करें.

डिवाइस चुनने का डायलॉग बॉक्स लॉन्च करें

डिवाइस को खोजने के लिए, सिस्टम डायलॉग का इस्तेमाल किया जाता है. इससे उपयोगकर्ता, टारगेट किया गया डिवाइस चुन सकता है. यहां की यात्रा पर हूं डिवाइस चुनने का डायलॉग बॉक्स शुरू करें. इसके लिए, आपको पहले डिवाइस खोजना होगा और परिणाम पाने वाले को रजिस्टर करें. ध्यान दें कि इसके समान registerForActivityResult, पैसे पाने वाले इस व्यक्ति का रजिस्ट्रेशन, बिना किसी शर्त के गतिविधि या फ़्रैगमेंट शुरू करने के पाथ का हिस्सा भी बनाया जा सकता है.

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);
}

ऊपर दिए गए कोड स्निपेट में, हमारे पास एक ऐसा handleDevices ऑब्जेक्ट है जो तय नहीं है. इस तारीख के बाद उपयोगकर्ता, कनेक्ट करने के लिए डिवाइसों को चुनता है. साथ ही, SDK टूल के सही से कनेक्ट होने के बाद, दूसरे डिवाइसों से कनेक्ट करता है, तो इस कॉलबैक को Participants की सूची मिलती है चुना गया.

Kotlin

handleDevices = OnDevicePickerResultListener { participants -> participants.forEach {
    // Use participant info
  }
}

Java

handleDevices = participants -> {
   for (Participant participant : participants) {
      // Use participant info
   }
}

डिवाइस पिकर रजिस्टर हो जाने के बाद, उसे devicePickerLauncher का इस्तेमाल करके लॉन्च करें इंस्टेंस. DevicePickerLauncher.launchDevicePicker दो पैरामीटर लेता है – a डिवाइस के फ़िल्टर की सूची (नीचे दिया गया सेक्शन देखें) और startComponentRequest. कॉन्टेंट बनाने startComponentRequest का इस्तेमाल यह बताने के लिए किया जाता है कि किस गतिविधि को शुरू करना चाहिए और ऐक्सेस पाने वाले डिवाइस की जानकारी और अनुरोध करने की वजह बताएं.

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());

कनेक्शन के अनुरोध स्वीकार करें

जब उपयोगकर्ता, डिवाइस पिकर में किसी डिवाइस को चुनता है, तो एक डायलॉग दिखता है डिवाइस मिलने पर, उपयोगकर्ता से कनेक्शन स्वीकार करने का अनुरोध किया जा सकता है. न्योता स्वीकार करने के बाद, टारगेट ऐक्टिविटी को लॉन्च किया गया. इसे onCreate और 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)
}

डिवाइस फ़िल्टर

डिवाइस खोजते समय, आम तौर पर इन डिवाइस को सिर्फ़ वे कीवर्ड दिखाएं जो इस्तेमाल के उदाहरण से सही हों. उदाहरण के लिए:

  • क्यूआर कोड स्कैन करने के लिए, सिर्फ़ कैमरे वाले डिवाइसों को फ़िल्टर करना
  • बड़ी स्क्रीन पर कॉन्टेंट देखने के लिए, सिर्फ़ टीवी फ़िल्टर करना

डेवलपर के इस पूर्वावलोकन के लिए, हम फ़िल्टर करने की क्षमता के साथ एक ही उपयोगकर्ता के मालिकाना हक वाले डिवाइस हों.

क्लास DeviceFilter का इस्तेमाल करके, डिवाइस फ़िल्टर तय किया जा सकता है:

Kotlin

val deviceFilters = listOf(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY))

Java

List<DeviceFilter> deviceFilters =
    Arrays.asList(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY));

डिवाइस फ़िल्टर तय करने के बाद, डिवाइस को खोजने की प्रक्रिया शुरू की जा सकती है.

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 एक एसिंक्रोनस फ़ंक्शन है, जो suspend कीवर्ड.