Android 9 তৃতীয় পক্ষের কলিং অ্যাপগুলিকে আরও ভালভাবে সমর্থন করার জন্য API প্রদান করে। থার্ড-পার্টি কলিং অ্যাপগুলি সাধারণত টেলিফোনি এপিআই-এর উপর নির্ভর করে যেমন PHONE_STATE
সম্প্রচার ক্যারিয়ার ফোন কলের পাশাপাশি সহ-অস্তিত্বের জন্য। ফলস্বরূপ, থার্ড-পার্টি কলিং অ্যাপগুলিকে অবশ্যই ক্যারিয়ার কলকে অগ্রাধিকার দিতে হবে এবং প্রায়শই অ্যাপে ইনকামিং কলগুলিকে নীরবে প্রত্যাখ্যান করার অবলম্বন করতে হবে, বা ক্যারিয়ার কলের পথ তৈরি করতে একটি চলমান কল বন্ধ করতে হবে।
অ্যান্ড্রয়েড 9-এর APIগুলি তৃতীয় পক্ষের অ্যাপ এবং ক্যারিয়ার কলগুলির মধ্যে সমসাময়িক কলিং পরিস্থিতি সমর্থন করে। এটি সম্ভব করে তোলে, উদাহরণস্বরূপ, ক্যারিয়ার কলে নিযুক্ত থাকাকালীন একটি ইনকামিং তৃতীয় পক্ষের কল গ্রহণ করা। যখন ব্যবহারকারী তৃতীয় পক্ষের কলে নিযুক্ত হন তখন ক্যারিয়ার কলটি অনুষ্ঠিত হয় তা নিশ্চিত করার জন্য কাঠামোটি দায়িত্ব গ্রহণ করে।
Android 9-এ, থার্ড-পার্টি কলিং অ্যাপগুলিকে স্ব-পরিচালিত ConnectionService
API প্রয়োগ করতে উৎসাহিত করা হয়। এই API ব্যবহার করে কীভাবে একটি কলিং অ্যাপ তৈরি করবেন সে সম্পর্কে আরও তথ্যের জন্য, একটি কলিং অ্যাপ তৈরি করুন দেখুন।
স্ব-পরিচালিত ConnectionService
API ডেভেলপারদের সিস্টেম কল লগ-এ তাদের অ্যাপে কল করার জন্য অপ্ট-ইন করার সুযোগ দেয় (দেখুন EXTRA_LOG_SELF_MANAGED_CALLS
)। অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (সিডিডি) (অনুচ্ছেদ 7.4.1.2) এর প্রয়োজনীয়তা অনুসারে, আপনাকে নিশ্চিত করতে হবে যে আপনার ডায়ালার বা ফোন অ্যাপ এই কল লগ এন্ট্রিগুলি প্রদর্শন করে এবং তৃতীয় পক্ষের কলিং অ্যাপের নাম দেখায় যেখানে কলটি শুরু হয়েছিল (একটি জন্য AOSP ডায়ালার অ্যাপ কীভাবে এই প্রয়োজনীয়তা পূরণ করে তার উদাহরণ, তৃতীয় পক্ষের কলিং অ্যাপ থেকে কল লগ এন্ট্রিগুলি দেখুন)।
অ্যাপগুলি তাদের অ্যাপের সংযোগগুলিতে CAPABILITY_SUPPORT_HOLD
এবং CAPABILITY_HOLD
সেট করার জন্য দায়ী৷ যাইহোক, এটা সম্ভব যে একটি অ্যাপ কিছু পরিস্থিতিতে একটি কল ধরে রাখতে পারে না। কাঠামোর মধ্যে এই ধরনের মামলার সমাধানের বিধান রয়েছে।
দৃশ্যকল্প
নিম্নলিখিত পরিস্থিতিগুলি পরিচালনা করতে আপনার ডায়লার অ্যাপটি পরিবর্তন করা উচিত।
একটি চলমান কল সংযোগ বিচ্ছিন্ন করে এমন ইনকামিং কলগুলি পরিচালনা করুন৷
এমন একটি পরিস্থিতিতে যেখানে একটি চলমান তৃতীয় পক্ষের কল (যেমন একটি সুপারকলার কল) যা হোল্ডকে সমর্থন করে না, এবং ব্যবহারকারী একটি মোবাইল কল পান (উদাহরণস্বরূপ, তাদের ক্যারিয়ার FooCom ব্যবহার করে), আপনার ডায়ালার বা ফোন অ্যাপটি নির্দেশ করা উচিত ব্যবহারকারী যে মোবাইল নেটওয়ার্ক কলের উত্তর দিলে চলমান তৃতীয় পক্ষের কল শেষ হয়ে যাবে।
এই ব্যবহারকারীর অভিজ্ঞতা গুরুত্বপূর্ণ কারণ একটি তৃতীয় পক্ষের কলিং অ্যাপে একটি চলমান কল থাকতে পারে যা ফ্রেমওয়ার্ক দ্বারা রাখা যাবে না। একটি নতুন মোবাইল কলের উত্তর দিলে চলমান তৃতীয় পক্ষের কলটি সংযোগ বিচ্ছিন্ন হয়ে যায়।
একটি উদাহরণের জন্য চিত্রে ব্যবহারকারী ইন্টারফেস দেখুন:
চিত্র 1. একটি চলমান তৃতীয় পক্ষের কল সংযোগ বিচ্ছিন্ন করা ইনকামিং কল৷
আপনার ডায়ালার অ্যাপটি কল এক্সট্রা চেক করে একটি ইনকামিং কল অন্য একটি কল সংযোগ বিচ্ছিন্ন করে কিনা তা পরীক্ষা করতে পারে৷ নিশ্চিত করুন যে EXTRA_ANSWERING_DROPS_FG_CALL
TRUE
তে সেট করা আছে, এবং EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME
অ্যাপটির নামে সেট করা আছে যার কল ইনকামিং মোবাইল কলের উত্তর দেওয়ার পরে সংযোগ বিচ্ছিন্ন হয়ে গেছে।
তৃতীয় পক্ষের কলিং অ্যাপ থেকে কল লগ এন্ট্রি
থার্ড-পার্টি কলিং অ্যাপের ডেভেলপাররা সিস্টেম কল লগে লগ ইন করে তাদের অ্যাপে কল করা বেছে নিতে পারেন (দেখুন EXTRA_LOG_SELF_MANAGED_CALLS
)। এর মানে হল যে কল লগে এন্ট্রি থাকা সম্ভব যা মোবাইল নেটওয়ার্ক কলের জন্য নয়।
যখন AOSP ডায়ালার অ্যাপটি তৃতীয় পক্ষের কলিং অ্যাপের সাথে সম্পর্কিত কল লগ এন্ট্রিগুলি প্রদর্শন করে, তখন যে অ্যাপে কলটি হয়েছিল সেই অ্যাপের নামটি কল লগে প্রদর্শিত হয়, যেমনটি চিত্রে দেখানো হয়েছে:
চিত্র 2. ডায়ালার অ্যাপে তৃতীয় পক্ষের কলিং অ্যাপের নাম সহ কল লগ এন্ট্রি।
একটি কল লগ এন্ট্রির সাথে যুক্ত একটি অ্যাপের নাম নির্ধারণ করতে, কল লগ প্রদানকারীর PHONE_ACCOUNT_COMPONENT_NAME
এবং PHONE_ACCOUNT_ID
কলামগুলি ব্যবহার করে PhoneAccountHandle
এর একটি উদাহরণ তৈরি করুন, যা একটি কল লগ এন্ট্রির উত্স সনাক্ত করে৷ ফোনঅ্যাকাউন্টের বিস্তারিত জানতে TelecomManager
জিজ্ঞাসা করুন।
একটি কল লগ এন্ট্রি একটি তৃতীয় পক্ষের কলিং অ্যাপ থেকে কিনা তা নির্ধারণ করতে, CAPABILITY_SELF_MANAGED
সেট করা আছে কিনা তা দেখতে PhoneAccount
ক্ষমতা পরীক্ষা করুন৷
প্রত্যাবর্তিত PhoneAccount
এর getLabel
পদ্ধতি তৃতীয় পক্ষের কলিং অ্যাপ থেকে কল লগ এন্ট্রির সাথে যুক্ত অ্যাপের নাম প্রদান করে।
বৈধতা
আপনার ডিভাইসটি তৃতীয় পক্ষের কলিং অ্যাপগুলিকে সমর্থন করে তা পরীক্ষা করতে, Telecomm পরীক্ষা অ্যাপ ব্যবহার করুন, যা স্ব-পরিচালিত ConnectionService API প্রয়োগ করে৷ অ্যাপটি /packages/services/Telecomm/testapps/
এ অবস্থিত।
ব্যবহার করে আপনার অ্যান্ড্রয়েড সোর্স রিপোজিটরির রুট থেকে টেস্ট অ্যাপ তৈরি করুন:
mmma packages/services/Telecomm/testapps/
adb install -g -r <apk path>
ব্যবহার করে বিল্ড apk ইনস্টল করুন। একটি স্ব-পরিচালিত নমুনা আইকন তারপর আপনার লঞ্চার যোগ করা হয়.পরীক্ষা অ্যাপ খুলতে আইকনে আলতো চাপুন।
একটি চলমান কল সংযোগ বিচ্ছিন্ন করে এমন ইনকামিং কলগুলি পরিচালনা করুন৷
একটি ইনকামিং কল একটি চলমান তৃতীয় পক্ষের কল সংযোগ বিচ্ছিন্ন করে তা যাচাই করতে এই পদক্ষেপগুলি অনুসরণ করুন৷
চিত্র 3. ConnectionService API-এর নমুনা বাস্তবায়ন সহ অ্যাপ পরীক্ষা করুন।
- হোল্ডেবল অপশনটি ক্লিয়ার করুন।
- একটি নতুন নমুনা আউটগোয়িং কল শুরু করতে আউটগোয়িং এ আলতো চাপুন৷
- কলটি সক্রিয় করতে সক্রিয় বোতামে আলতো চাপুন৷
- অন্য ফোন দিয়ে পরীক্ষার অধীনে ডিভাইসের ফোন নম্বরে কল করুন। এটি এমন পরিস্থিতির আহ্বান করে যেখানে আপনার ডায়ালারটি একটি অ্যাপের নামের সাথে সরবরাহ করা হয়েছে, যার কলটি সংযোগ বিচ্ছিন্ন হবে।
- আপনি শেষ হয়ে গেলে, পরীক্ষা অ্যাপে সংযোগ বিচ্ছিন্ন করুন বোতামে আলতো চাপুন।
তৃতীয় পক্ষের কলিং অ্যাপ থেকে কল লগ এন্ট্রি
উপরের ধাপগুলি সম্পূর্ণ করার পরে, পরীক্ষা অ্যাপটিকে সিস্টেম কল লগে একটি কল লগ করা উচিত ছিল৷ ডিভাইসটি থার্ড-পার্টি কলিং অ্যাপ থেকে কল লগ করা নিশ্চিত করতে, আপনার ডায়ালার অ্যাপ খুলুন এবং সিস্টেম কল লগে কলটি উপস্থিত হয়েছে তা নিশ্চিত করুন।