প্রায় প্রতিটি মাল্টিডিভাইস অভিজ্ঞতা উপলব্ধ ডিভাইস খোঁজার সাথে শুরু হয়। এই সাধারণ কাজটি সহজ করার জন্য, আমরা ডিভাইস আবিষ্কার API অফার করি।
ডিভাইস নির্বাচন ডায়ালগ চালু করুন
ডিভাইস আবিষ্কার ব্যবহারকারীকে একটি টার্গেট ডিভাইস নির্বাচন করতে দেওয়ার জন্য একটি সিস্টেম ডায়ালগ ব্যবহার করে। ডিভাইস নির্বাচন ডায়ালগ শুরু করতে, আপনাকে প্রথমে একটি ডিভাইস আবিষ্কার ক্লায়েন্ট পেতে হবে এবং একটি ফলাফল রিসিভার নিবন্ধন করতে হবে। মনে রাখবেন যে registerForActivityResult
এর মতো, এই রিসিভারকে অবশ্যই কার্যকলাপ বা খণ্ড প্রারম্ভিক পথের অংশ হিসাবে নিঃশর্তভাবে নিবন্ধিত হতে হবে।
কোটলিন
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); }
উপরের কোড স্নিপেটে, আমাদের কাছে একটি অনির্ধারিত handleDevices
অবজেক্ট রয়েছে। ব্যবহারকারী সংযোগ করার জন্য ডিভাইসগুলি বেছে নেওয়ার পরে এবং SDK সফলভাবে অন্য ডিভাইসগুলির সাথে সংযোগ করার পরে, এই কলব্যাকটি নির্বাচিত Participants
তালিকা পায়৷
কোটলিন
handleDevices = OnDevicePickerResultListener { participants -> participants.forEach { // Use participant info } }
জাভা
handleDevices = participants -> { for (Participant participant : participants) { // Use participant info } }
ডিভাইস পিকার নিবন্ধিত হওয়ার পরে, devicePickerLauncher
উদাহরণ ব্যবহার করে এটি চালু করুন। DevicePickerLauncher.launchDevicePicker
দুটি প্যারামিটার নেয় – ডিভাইস ফিল্টারের একটি তালিকা (নীচের বিভাগটি দেখুন) এবং একটি startComponentRequest
। startComponentRequest
ব্যবহার করা হয় গ্রহনকারী ডিভাইসে কোন ক্রিয়াকলাপ শুরু করা উচিত এবং ব্যবহারকারীকে দেখানো অনুরোধের কারণ বোঝাতে।
কোটলিন
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());
সংযোগ অনুরোধ গ্রহণ করুন
ব্যবহারকারী যখন ডিভাইস পিকারে একটি ডিভাইস নির্বাচন করেন, তখন ব্যবহারকারীকে সংযোগটি গ্রহণ করতে বলার জন্য একটি ডায়ালগ গ্রহীতা ডিভাইসে উপস্থিত হয়। একবার গৃহীত হলে, টার্গেট অ্যাক্টিভিটি চালু হয়, যা onCreate
এবং 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) }
ডিভাইস ফিল্টার
ডিভাইসগুলি আবিষ্কার করার সময়, এই ডিভাইসগুলিকে ফিল্টার করতে চান শুধুমাত্র ব্যবহারের ক্ষেত্রে প্রাসঙ্গিকগুলি দেখানোর জন্য। যেমন:
- একটি QR কোড স্ক্যান করতে সাহায্য করার জন্য শুধুমাত্র ক্যামেরা সহ ডিভাইসগুলিতে ফিল্টার করা হচ্ছে
- একটি বড় স্ক্রীন দেখার অভিজ্ঞতার জন্য শুধুমাত্র টিভিতে ফিল্টার করা হচ্ছে
এই বিকাশকারী পূর্বরূপের জন্য, আমরা একই ব্যবহারকারীর মালিকানাধীন ডিভাইসগুলিতে ফিল্টার করার ক্ষমতা দিয়ে শুরু করছি।
আপনি ক্লাস DeviceFilter
ব্যবহার করে ডিভাইস ফিল্টার নির্দিষ্ট করতে পারেন:
কোটলিন
val deviceFilters = listOf(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY))
জাভা
List<DeviceFilter> deviceFilters = Arrays.asList(DeviceFilter.trustRelationshipFilter(MY_DEVICES_ONLY));
একবার আপনি ডিভাইস ফিল্টার সংজ্ঞায়িত করলে, আপনি ডিভাইস আবিষ্কার শুরু করতে পারেন।
কোটলিন
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
হল একটি অ্যাসিঙ্ক্রোনাস ফাংশন যা suspend
কীওয়ার্ড ব্যবহার করে।