ज़्यादातर डिवाइसों को एक साथ इस्तेमाल करने की शुरुआत, डिवाइसों के लिए उपलब्ध डिवाइसों को खोजने से होती है. यहां की यात्रा पर हूं हम इस काम को आसान बनाने के लिए, 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
कीवर्ड.