ডিভাইস আবিষ্কার API

প্রায় প্রতিটি মাল্টিডিভাইস অভিজ্ঞতা উপলব্ধ ডিভাইস খোঁজার সাথে শুরু হয়। এই সাধারণ কাজটি সহজ করার জন্য, আমরা ডিভাইস আবিষ্কার API অফার করি।

কাছাকাছি ব্যবহারকারীদের সাথে ভাগ করার বিকল্প সহ ডায়ালগ বক্স
চিত্র 1 : কাছাকাছি ব্যবহারকারীদের সাথে শেয়ার করুন।

ডিভাইস নির্বাচন ডায়ালগ চালু করুন

ডিভাইস আবিষ্কার ব্যবহারকারীকে একটি টার্গেট ডিভাইস নির্বাচন করতে দেওয়ার জন্য একটি সিস্টেম ডায়ালগ ব্যবহার করে। ডিভাইস নির্বাচন ডায়ালগ শুরু করতে, আপনাকে প্রথমে একটি ডিভাইস আবিষ্কার ক্লায়েন্ট পেতে হবে এবং একটি ফলাফল রিসিভার নিবন্ধন করতে হবে। মনে রাখবেন যে 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 দুটি প্যারামিটার নেয় – ডিভাইস ফিল্টারের একটি তালিকা (নীচের বিভাগটি দেখুন) এবং একটি startComponentRequeststartComponentRequest ব্যবহার করা হয় গ্রহনকারী ডিভাইসে কোন ক্রিয়াকলাপ শুরু করা উচিত এবং ব্যবহারকারীকে দেখানো অনুরোধের কারণ বোঝাতে।

কোটলিন

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 কীওয়ার্ড ব্যবহার করে।