তৃতীয় পক্ষের কলিং অ্যাপগুলিকে সমর্থন করে

অ্যান্ড্রয়েড ৯ থার্ড-পার্টি কলিং অ্যাপগুলোকে আরও ভালোভাবে সাপোর্ট করার জন্য এপিআই (API) প্রদান করে। থার্ড-পার্টি কলিং অ্যাপগুলো সাধারণত ক্যারিয়ার ফোন কলের পাশাপাশি চলার জন্য PHONE_STATE ব্রডকাস্টের মতো টেলিফোনি এপিআই-এর উপর নির্ভর করে। ফলস্বরূপ, থার্ড-পার্টি কলিং অ্যাপগুলোকে ক্যারিয়ার কলকে অগ্রাধিকার দিতে হয় এবং প্রায়শই একটি ক্যারিয়ার কলের জন্য জায়গা করে দিতে অ্যাপের মধ্যে ইনকামিং কল নীরবে প্রত্যাখ্যান করে, অথবা চলমান কোনো কল কেটে দেয়।

অ্যান্ড্রয়েড ৯-এর এপিআইগুলো থার্ড-পার্টি অ্যাপ এবং ক্যারিয়ার কলের মধ্যে যুগপৎ কলিং পরিস্থিতি সমর্থন করে। এর ফলে, উদাহরণস্বরূপ, একটি ক্যারিয়ার কলে ব্যস্ত থাকা অবস্থায় একটি ইনকামিং থার্ড-পার্টি কল রিসিভ করা সম্ভব হয়। ব্যবহারকারী যখন থার্ড-পার্টি কলে ব্যস্ত থাকেন, তখন ক্যারিয়ার কলটি হোল্ডে রাখা নিশ্চিত করার দায়িত্ব ফ্রেমওয়ার্কটি গ্রহণ করে।

অ্যান্ড্রয়েড ৯-এ, থার্ড-পার্টি কলিং অ্যাপগুলোকে সেলফ-ম্যানেজড ConnectionService API প্রয়োগ করতে উৎসাহিত করা হয়। এই API ব্যবহার করে কীভাবে একটি কলিং অ্যাপ তৈরি করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, "একটি কলিং অ্যাপ তৈরি করুন" দেখুন।

সেলফ-ম্যানেজড ConnectionService এপিআই ডেভেলপারদেরকে তাদের অ্যাপের কলগুলোকে সিস্টেম কল লগে লগ করার জন্য অপ্ট-ইন করার সুযোগও দেয় (দেখুন EXTRA_LOG_SELF_MANAGED_CALLS )। অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (CDD)-এর (সেকশন ৭.৪.১.২) প্রয়োজনীয়তা অনুসারে, আপনাকে নিশ্চিত করতে হবে যেন আপনার ডায়ালার বা ফোন অ্যাপ এই কল লগ এন্ট্রিগুলো প্রদর্শন করে এবং যে থার্ড-পার্টি কলিং অ্যাপ থেকে কলটি করা হয়েছে তার নাম দেখায় (AOSP ডায়ালার অ্যাপ কীভাবে এই প্রয়োজনীয়তা পূরণ করে তার একটি উদাহরণের জন্য, দেখুন থার্ড-পার্টি কলিং অ্যাপ থেকে কল লগ এন্ট্রি )।

অ্যাপগুলো তাদের অ্যাপের কানেকশনগুলোতে CAPABILITY_SUPPORT_HOLD এবং CAPABILITY_HOLD সেট করার জন্য দায়ী। তবে, কিছু পরিস্থিতিতে একটি অ্যাপ কল হোল্ড করতে পারে না। এই ধরনের পরিস্থিতি সমাধানের জন্য ফ্রেমওয়ার্কটিতে বিধান অন্তর্ভুক্ত রয়েছে।

দৃশ্যকল্প

নিম্নলিখিত পরিস্থিতিগুলো সামাল দেওয়ার জন্য আপনার ডায়ালার অ্যাপটি পরিবর্তন করা উচিত।

চলমান কল বিচ্ছিন্ন করে এমন ইনকামিং কলগুলি পরিচালনা করুন।

এমন পরিস্থিতিতে যেখানে একটি চলমান থার্ড-পার্টি কল (যেমন একটি সুপারকলার কল) রয়েছে এবং তাতে হোল্ড সাপোর্ট নেই, এবং ব্যবহারকারী একটি মোবাইল কল পান (উদাহরণস্বরূপ, তার ক্যারিয়ার ফুকম ব্যবহার করে), আপনার ডায়ালার বা ফোন অ্যাপ ব্যবহারকারীকে জানিয়ে দেবে যে মোবাইল নেটওয়ার্কের কলটির উত্তর দিলে চলমান থার্ড-পার্টি কলটি কেটে যাবে।

এই ব্যবহারকারীর অভিজ্ঞতাটি গুরুত্বপূর্ণ, কারণ কোনো থার্ড-পার্টি কলিং অ্যাপে এমন একটি চলমান কল থাকতে পারে যা ফ্রেমওয়ার্কটি ধরে রাখতে পারে না। একটি নতুন মোবাইল কল রিসিভ করলে চলমান থার্ড-পার্টি কলটি বিচ্ছিন্ন হয়ে যায়।

একটি উদাহরণের জন্য চিত্রে ইউজার ইন্টারফেসটি দেখুন:

ইনকামিং কল একটি চলমান তৃতীয় পক্ষের কল সংযোগ বিচ্ছিন্ন করছে

চিত্র ১। আগত কলের মাধ্যমে চলমান তৃতীয় পক্ষের কল বিচ্ছিন্ন হয়ে যাচ্ছে।

আপনার ডায়ালার অ্যাপ কল এক্সট্রাস চেক করে দেখতে পারে যে, কোনো ইনকামিং কলের কারণে অন্য কোনো কল ডিসকানেক্ট হয়ে যাচ্ছে কি না। নিশ্চিত করুন যে EXTRA_ANSWERING_DROPS_FG_CALL মান TRUE এবং EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME মান সেই অ্যাপের নামে সেট করা আছে, যে অ্যাপের কলটি ইনকামিং মোবাইল কল রিসিভ করার পর ডিসকানেক্ট হয়ে যায়।

তৃতীয় পক্ষের কলিং অ্যাপ থেকে কল লগ এন্ট্রি

থার্ড-পার্টি কলিং অ্যাপের ডেভেলপাররা তাদের অ্যাপে করা কলগুলো সিস্টেম কল লগে নথিভুক্ত করার জন্য সম্মতি জানাতে পারেন (দেখুন EXTRA_LOG_SELF_MANAGED_CALLS )। এর মানে হলো, কল লগে এমন এন্ট্রিও থাকতে পারে যা মোবাইল নেটওয়ার্ক কলের জন্য নয়।

যখন AOSP ডায়ালার অ্যাপ কোনো তৃতীয়-পক্ষের কলিং অ্যাপ সম্পর্কিত কল লগ এন্ট্রি প্রদর্শন করে, তখন কল লগে সেই অ্যাপের নামটি দেখানো হয় যেখান থেকে কলটি করা হয়েছিল, যেমনটি চিত্রে দেখানো হয়েছে:

তৃতীয় পক্ষের কলিং অ্যাপের মাধ্যমে কল লগ এন্ট্রি

চিত্র ২. ডায়ালার অ্যাপে তৃতীয় পক্ষের কলিং অ্যাপের নামসহ কল ​​লগ এন্ট্রি।

কল লগ এন্ট্রির সাথে যুক্ত অ্যাপের নাম নির্ধারণ করতে, কল লগ প্রোভাইডারে থাকা PHONE_ACCOUNT_COMPONENT_NAME এবং PHONE_ACCOUNT_ID কলাম ব্যবহার করে PhoneAccountHandle এর একটি ইনস্ট্যান্স তৈরি করুন, যা কল লগ এন্ট্রির উৎস শনাক্ত করে। PhoneAccount-এর বিস্তারিত তথ্য পেতে TelecomManager কোয়েরি করুন।
কল লগের কোনো এন্ট্রি তৃতীয় পক্ষের কলিং অ্যাপ থেকে এসেছে কিনা তা নির্ধারণ করতে, PhoneAccount ক্যাপাবিলিটিজ চেক করে দেখুন CAPABILITY_SELF_MANAGED সেট করা আছে কিনা।

ফেরত আসা PhoneAccount এর getLabel মেথডটি থার্ড-পার্টি কলিং অ্যাপের কল লগ এন্ট্রির সাথে যুক্ত অ্যাপটির নাম রিটার্ন করে।

বৈধতা

আপনার ডিভাইসটি থার্ড-পার্টি কলিং অ্যাপ সমর্থন করে কিনা তা পরীক্ষা করতে, টেলিকম টেস্ট অ্যাপটি ব্যবহার করুন, যেটি সেলফ-ম্যানেজড কানেকশনসার্ভিস এপিআই (ConnectionService API) প্রয়োগ করে। অ্যাপটি /packages/services/Telecomm/testapps/ -এ অবস্থিত।

  1. আপনার অ্যান্ড্রয়েড সোর্স রিপোজিটরির রুট থেকে নিম্নলিখিত কমান্ড ব্যবহার করে টেস্ট অ্যাপটি বিল্ড করুন:

    mmma packages/services/Telecomm/testapps/

  2. adb install -g -r <apk path> ব্যবহার করে বিল্ড এপিকেটি ইনস্টল করুন। এরপর আপনার লঞ্চারে একটি `Self-Managed Sample` আইকন যুক্ত হবে।

  3. টেস্ট অ্যাপটি খুলতে আইকনটিতে ট্যাপ করুন।

চলমান কল বিচ্ছিন্ন করে এমন ইনকামিং কলগুলি পরিচালনা করুন।

ইনকামিং কলের ফলে চলমান কোনো থার্ড-পার্টি কল বিচ্ছিন্ন হয়ে যায় কিনা, তা যাচাই করতে এই ধাপগুলো অনুসরণ করুন।

তৃতীয় পক্ষের কলিং অ্যাপগুলির জন্য অ্যাপটি পরীক্ষা করুন

চিত্র ৩. ConnectionService API-এর নমুনা বাস্তবায়নসহ টেস্ট অ্যাপ।

  1. হোল্ডেবল অপশনটি আনচেক করুন।
  2. একটি নতুন নমুনা আউটগোয়িং কল শুরু করতে OUTGOING- এ ট্যাপ করুন।
  3. কলটি সক্রিয় করতে ACTIVE বাটনটিতে ট্যাপ করুন।
  4. পরীক্ষাধীন ডিভাইসটির ফোন নম্বরে অন্য একটি ফোন দিয়ে কল করুন। এর ফলে এমন একটি পরিস্থিতি তৈরি হবে যেখানে আপনার ডায়ালারে একটি অ্যাপের নাম চলে আসবে, যার ফলে সেই অ্যাপের কলটি বিচ্ছিন্ন হয়ে যাবে।
  5. আপনার কাজ শেষ হলে, টেস্ট অ্যাপে থাকা ডিসকানেক্ট (DISCONNECT) বোতামটি ট্যাপ করুন।

তৃতীয় পক্ষের কলিং অ্যাপ থেকে কল লগ এন্ট্রি

উপরের ধাপগুলো সম্পন্ন করার পর, টেস্ট অ্যাপটিতে সিস্টেম কল লগে একটি কল লগ হওয়ার কথা। ডিভাইসটি থার্ড-পার্টি কলিং অ্যাপ থেকে আসা কল লগ করে কিনা তা নিশ্চিত করতে, আপনার ডায়ালার অ্যাপটি খুলুন এবং কলটি সিস্টেম কল লগে দেখা যাচ্ছে কিনা তা যাচাই করুন।