বৈশিষ্ট্য এবং APIs ওভারভিউ

অ্যান্ড্রয়েড 11 ডেভেলপারদের জন্য দুর্দান্ত নতুন বৈশিষ্ট্য এবং এপিআই প্রবর্তন করেছে। নীচের বিভাগগুলি আপনাকে আপনার অ্যাপগুলির বৈশিষ্ট্যগুলি সম্পর্কে জানতে এবং সম্পর্কিত APIগুলির সাথে শুরু করতে সহায়তা করে৷

নতুন, পরিবর্তিত এবং সরানো API-এর বিস্তারিত তালিকার জন্য, API ডিফ রিপোর্ট পড়ুন। নতুন এপিআই সম্পর্কে বিস্তারিত জানার জন্য অ্যান্ড্রয়েড এপিআই রেফারেন্স দেখুন — নতুন এপিআইগুলি দৃশ্যমানতার জন্য হাইলাইট করা হয়েছে। এছাড়াও, প্ল্যাটফর্মের পরিবর্তনগুলি আপনার অ্যাপ্লিকেশানগুলিকে প্রভাবিত করতে পারে এমন অঞ্চলগুলি সম্পর্কে জানতে, Android R এবং সমস্ত অ্যাপ্লিকেশানগুলির পাশাপাশি গোপনীয়তার পরিবর্তনগুলিকে লক্ষ্য করে এমন অ্যাপ্লিকেশানগুলির জন্য Android 11 আচরণের পরিবর্তনগুলি পরীক্ষা করে দেখুন৷

নতুন অভিজ্ঞতা

ডিভাইস নিয়ন্ত্রণ

Android 11-এ একটি নতুন ControlsProviderService API রয়েছে যা আপনি সংযুক্ত, বাহ্যিক ডিভাইসগুলির জন্য নিয়ন্ত্রণগুলি প্রকাশ করতে ব্যবহার করতে পারেন। এই নিয়ন্ত্রণগুলি Android পাওয়ার মেনুতে ডিভাইস নিয়ন্ত্রণের অধীনে প্রদর্শিত হয়৷ আরও তথ্যের জন্য, বাহ্যিক ডিভাইস নিয়ন্ত্রণ দেখুন।

মিডিয়া কন্ট্রোল

অ্যান্ড্রয়েড 11 মিডিয়া নিয়ন্ত্রণগুলি কীভাবে প্রদর্শিত হয় তা আপডেট করে। মিডিয়া নিয়ন্ত্রণগুলি দ্রুত সেটিংসের কাছে উপস্থিত হয়৷ একাধিক অ্যাপ্লিকেশানের সেশনগুলি একটি সোয়াইপযোগ্য ক্যারোজেলে সাজানো হয় যার মধ্যে রয়েছে ফোনে স্থানীয়ভাবে বাজানো স্ট্রীম, দূরবর্তী স্ট্রীম, যেমন বাহ্যিক ডিভাইসে সনাক্ত করা বা কাস্ট সেশনগুলি এবং আগের, পুনঃসূচনাযোগ্য সেশনগুলি যে ক্রমানুসারে সেগুলি শেষবার চালানো হয়েছিল।

ব্যবহারকারীরা অ্যাপটি শুরু না করেই ক্যারোজেল থেকে আগের সেশনগুলি পুনরায় চালু করতে পারেন। প্লেব্যাক শুরু হলে, ব্যবহারকারী মিডিয়া নিয়ন্ত্রণের সাথে স্বাভাবিক উপায়ে যোগাযোগ করে।

আরও তথ্যের জন্য, মিডিয়া নিয়ন্ত্রণ দেখুন।

পর্দা

জলপ্রপাত প্রদর্শনের জন্য আরও ভাল সমর্থন

অ্যান্ড্রয়েড 11 জলপ্রপাত প্রদর্শনকে সমর্থন করার জন্য বেশ কয়েকটি API সরবরাহ করে, ডিসপ্লে যা ডিভাইসের প্রান্তে মোড়ানো থাকে। এই ডিসপ্লেগুলিকে ডিসপ্লে কাটআউট সহ ডিসপ্লেগুলির একটি বৈকল্পিক হিসাবে বিবেচনা করা হয়। বিদ্যমান DisplayCutout .getSafeInset…() পদ্ধতিগুলি এখন জলপ্রপাত এলাকা এবং কাটআউটগুলি এড়াতে নিরাপদ ইনসেট ফিরিয়ে দেয়। জলপ্রপাত এলাকায় আপনার অ্যাপ সামগ্রী রেন্ডার করতে, নিম্নলিখিতগুলি করুন:

  • জলপ্রপাত ইনসেটের সঠিক মাত্রা পেতে DisplayCutout.getWaterfallInsets() এ কল করুন।

  • উইন্ডো লেআউট বৈশিষ্ট্য layoutInDisplayCutoutMode কে LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS এ সেট করুন যাতে উইন্ডোটিকে পর্দার সমস্ত প্রান্তে কাটআউট এবং জলপ্রপাত অঞ্চলে প্রসারিত করার অনুমতি দেয়৷ আপনাকে অবশ্যই নিশ্চিত করতে হবে যে কাটআউট বা জলপ্রপাত অঞ্চলে কোনও প্রয়োজনীয় সামগ্রী নেই।

কবজা কোণ সেন্সর এবং ফোল্ডেবল

Android 11 কবজা-ভিত্তিক স্ক্রিন কনফিগারেশন সহ ডিভাইসে চলমান অ্যাপগুলির জন্য TYPE_HINGE_ANGLE সহ একটি নতুন সেন্সর এবং একটি নতুন SensorEvent প্রদান করে কব্জাটির কোণ নির্ধারণ করা সম্ভব করে তোলে যা কব্জা কোণ নিরীক্ষণ করতে পারে এবং দুটি অবিচ্ছেদ্য মধ্যে ডিগ্রীতে একটি পরিমাপ প্রদান করে ডিভাইসের অংশ। আপনি এই কাঁচা পরিমাপগুলিকে দানাদার অ্যানিমেশনগুলি সম্পাদন করতে ব্যবহার করতে পারেন কারণ ব্যবহারকারী ডিভাইসটি পরিচালনা করে৷

Foldables দেখুন।

কথোপকথন

কথোপকথনের উন্নতি

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

কথোপকথন সম্পর্কে আরও তথ্যের জন্য এবং আপনার অ্যাপ কীভাবে তাদের সমর্থন করতে পারে, মানুষ এবং কথোপকথন দেখুন।

চ্যাট বুদবুদ

বুদবুদ এখন সিস্টেম জুড়ে পৃষ্ঠ কথোপকথন সাহায্য করার জন্য বিকাশকারীদের জন্য উপলব্ধ. বুদবুদ ছিল অ্যান্ড্রয়েড 10-এ একটি পরীক্ষামূলক বৈশিষ্ট্য যা একটি বিকাশকারী বিকল্পের মাধ্যমে সক্ষম করা হয়েছিল; অ্যান্ড্রয়েড 11-এ, এটি আর প্রয়োজন নেই।

যদি কোনো অ্যাপ Android 11 (API লেভেল 30) বা উচ্চতরকে টার্গেট করে, তাহলে এর বিজ্ঞপ্তিগুলি বুদবুদ হিসাবে উপস্থাপিত হয় না যদি না তারা নতুন কথোপকথনের প্রয়োজনীয়তা পূরণ করে। বিশেষ করে, বিজ্ঞপ্তিটি অবশ্যই একটি শর্টকাটের সাথে যুক্ত হতে হবে।

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

বুদবুদের কর্মক্ষমতার জন্য অনেকগুলি উন্নতি রয়েছে এবং ব্যবহারকারীদের প্রতিটি অ্যাপ থেকে বুদবুদ সক্রিয় এবং নিষ্ক্রিয় করার ক্ষেত্রে আরও নমনীয়তা রয়েছে৷ যেসব ডেভেলপাররা পরীক্ষামূলক সহায়তা বাস্তবায়ন করেছেন, তাদের জন্য Android 11-এ API-তে কিছু পরিবর্তন রয়েছে:

5G ভিজ্যুয়াল সূচক

ব্যবহারকারীদের ডিভাইসে 5G সূচক প্রদর্শনের তথ্যের জন্য, আপনার ব্যবহারকারীদের বলুন যখন তারা 5G এ থাকবেন দেখুন।

গোপনীয়তা

অ্যান্ড্রয়েড 11 ব্যবহারকারীর গোপনীয়তা বাড়ানোর জন্য প্রচুর সংখ্যক পরিবর্তন এবং বিধিনিষেধ প্রবর্তন করে। আরও জানতে, গোপনীয়তা পৃষ্ঠা দেখুন।

নিরাপত্তা

বায়োমেট্রিক প্রমাণীকরণ আপডেট

আপনার অ্যাপের ডেটার নিরাপত্তার স্তর নিয়ন্ত্রণে সাহায্য করার জন্য, Android 11 বায়োমেট্রিক প্রমাণীকরণে বেশ কিছু উন্নতি প্রদান করে। এই পরিবর্তনগুলি জেটপ্যাক বায়োমেট্রিক লাইব্রেরিতেও দেখা যায়।

প্রমাণীকরণ প্রকার

Android 11 BiometricManager.Authenticators ইন্টারফেস প্রবর্তন করেছে, যা আপনি আপনার অ্যাপ সমর্থন করে এমন প্রমাণীকরণের ধরন ঘোষণা করতে ব্যবহার করতে পারেন।

কোন প্রমাণীকরণ প্রকার ব্যবহার করা হয়েছে তা নির্ধারণ করুন

ব্যবহারকারীর প্রমাণীকরণের পরে, আপনি getAuthenticationType() কল করে একটি ডিভাইস শংসাপত্র বা বায়োমেট্রিক শংসাপত্র ব্যবহার করে ব্যবহারকারী প্রমাণীকরণ করেছেন কিনা তা পরীক্ষা করতে পারেন।

প্রমাণ-প্রতি-ব্যবহার কীগুলির জন্য অতিরিক্ত সমর্থন

Android 11 প্রমাণ-প্রতি-ব্যবহার কী ব্যবহার করে প্রমাণীকরণের জন্য আরও সমর্থন প্রদান করে।

অপ্রচলিত পদ্ধতি

Android 11 নিম্নলিখিত পদ্ধতিগুলিকে অবজ্ঞা করে:

  • setDeviceCredentialAllowed() পদ্ধতি।
  • setUserAuthenticationValidityDurationSeconds() পদ্ধতি।
  • canAuthenticate() এর ওভারলোডেড সংস্করণ যা কোন আর্গুমেন্ট নেয় না।

বড় ডেটাসেটের নিরাপদ শেয়ারিং

কিছু পরিস্থিতিতে, যেমন মেশিন লার্নিং বা মিডিয়া প্লেব্যাক জড়িত, আপনার অ্যাপ অন্য অ্যাপের মতো একই বড় ডেটাসেট ব্যবহার করতে চাইতে পারে। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণে, আপনার অ্যাপ এবং অন্য অ্যাপের প্রত্যেককে একই ডেটাসেটের একটি পৃথক কপি ডাউনলোড করতে হবে।

নেটওয়ার্ক এবং ডিস্ক উভয় ক্ষেত্রেই ডেটা রিডানডেন্সি কমাতে সাহায্য করার জন্য, Android 11 এই বৃহৎ ডেটাসেটগুলিকে শেয়ার করা ডেটা ব্লব ব্যবহার করে ডিভাইসে ক্যাশে করার অনুমতি দেয়৷ ডেটাসেট শেয়ার করার বিষয়ে আরও জানতে, বড় ডেটাসেট শেয়ার করার বিষয়ে গভীর নির্দেশিকা দেখুন।

ব্যবহারকারীর শংসাপত্র ছাড়াই OTA পুনরায় চালু করার পরে ফাইল-ভিত্তিক এনক্রিপশন সম্পাদন করুন

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

কর্মক্ষমতা এবং গুণমান

ওয়্যারলেস ডিবাগিং

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

ADB ইনক্রিমেন্টাল APK ইনস্টলেশন

একটি ডিভাইসে বড় (2GB+) APK ইনস্টল করতে অনেক সময় লাগতে পারে, এমনকি একটি অ্যাপে সামান্য পরিবর্তন করা হলেও। ADB (Android ডিবাগ ব্রিজ) ক্রমবর্ধমান APK ইনস্টলেশন ব্যাকগ্রাউন্ডে অবশিষ্ট ডেটা স্ট্রিম করার সময় অ্যাপটি চালু করার জন্য যথেষ্ট APK ইনস্টল করে এই প্রক্রিয়াটিকে ত্বরান্বিত করে। adb install এই বৈশিষ্ট্যটি স্বয়ংক্রিয়ভাবে ব্যবহার করবে যদি এটি ডিভাইস দ্বারা সমর্থিত হয় এবং আপনার কাছে সর্বশেষ SDK Platform-Tools ইনস্টল করা থাকে। এটি সমর্থিত না হলে, ডিফল্ট ইনস্টলেশন পদ্ধতিটি নিঃশব্দে ব্যবহার করা হয়।

বৈশিষ্ট্যটি ব্যবহার করতে নিম্নলিখিত adb কমান্ডটি ব্যবহার করুন। যদি ডিভাইসটি ক্রমবর্ধমান ইনস্টলেশন সমর্থন না করে, কমান্ডটি ব্যর্থ হয় এবং একটি ভার্বোস ব্যাখ্যা প্রিন্ট করে।

adb install --incremental

একটি ADB ইনক্রিমেন্টাল APK ইনস্টল চালানোর আগে, আপনাকে অবশ্যই আপনার APK স্বাক্ষর করতে হবে এবং একটি APK স্বাক্ষর স্কিম v4 ফাইল তৈরি করতে হবে। এই বৈশিষ্ট্যটি কাজ করার জন্য v4 স্বাক্ষর ফাইলটি অবশ্যই APK-এর পাশে রাখতে হবে।

নেটিভ মেমরি বরাদ্দকারী ব্যবহার করে ত্রুটি সনাক্তকরণ

GWP-ASan হল একটি নেটিভ মেমরি বরাদ্দকারী বৈশিষ্ট্য যা ব্যবহার-পর-মুক্ত এবং হিপ-বাফার-ওভারফ্লো বাগগুলি খুঁজে পেতে সহায়তা করে। আপনি এই বৈশিষ্ট্যটি বিশ্বব্যাপী বা আপনার অ্যাপের নির্দিষ্ট সাবপ্রসেসের জন্য সক্ষম করতে পারেন। আরও জানতে, GWP-Asan গাইড দেখুন।

নিউরাল নেটওয়ার্ক API 1.3

অ্যান্ড্রয়েড 11 নিউরাল নেটওয়ার্ক API (NNAPI) প্রসারিত এবং উন্নত করে।

নতুন অপারেশন

NNAPI 1.3 একটি নতুন অপারেন্ড টাইপ, TENSOR_QUANT8_ASYMM_SIGNED প্রবর্তন করেছে, টেনসরফ্লো লাইটের নতুন কোয়ান্টাইজেশন স্কিমকে সমর্থন করতে।

অতিরিক্তভাবে, NNAPI 1.3 নিম্নলিখিত নতুন অপারেশনগুলি প্রবর্তন করে:

  • QUANTIZED_LSTM
  • IF
  • WHILE
  • ELU
  • HARD_SWISH
  • FILL
  • RANK

নতুন এমএল নিয়ন্ত্রণ

NNAPI 1.3 মেশিন লার্নিং মসৃণভাবে চালানোর জন্য নতুন নিয়ন্ত্রণ প্রবর্তন করেছে:

এনডিকে থার্মাল এপিআই

যখন ডিভাইসগুলি খুব গরম হয়ে যায়, তখন তারা CPU এবং/অথবা GPU থ্রোটল করতে পারে এবং এটি অপ্রত্যাশিত উপায়ে অ্যাপগুলিকে প্রভাবিত করতে পারে। জটিল গ্রাফিক্স, ভারী গণনা বা টেকসই নেটওয়ার্ক কার্যকলাপ অন্তর্ভুক্ত করে এমন অ্যাপ বা গেমগুলি সমস্যার সম্মুখীন হওয়ার সম্ভাবনা বেশি।

ডিভাইসে তাপমাত্রার পরিবর্তনগুলি নিরীক্ষণ করতে Android 11-এ NDK Thermal API ব্যবহার করুন এবং তারপরে কম পাওয়ার ব্যবহার এবং ডিভাইসের ঠান্ডা তাপমাত্রা বজায় রাখার জন্য পদক্ষেপ নিন। এই APIটি জাভা থার্মাল API- এর অনুরূপ; আপনি যেকোনো তাপীয় অবস্থা পরিবর্তনের জন্য বিজ্ঞপ্তি পেতে বা সরাসরি বর্তমান অবস্থা পোল করতে এটি ব্যবহার করতে পারেন।

পাঠ্য এবং ইনপুট

উন্নত IME ট্রানজিশন

অ্যান্ড্রয়েড 11 ইনপুট মেথড এডিটর (আইএমই), যেমন অন-স্ক্রিন কীবোর্ডগুলির জন্য পরিবর্তনগুলি উন্নত করতে নতুন APIগুলি প্রবর্তন করে৷ এই APIগুলি আপনার অ্যাপের বিষয়বস্তুকে IME-এর উপস্থিতি এবং অন্তর্ধানের সাথে এবং স্থিতি এবং নেভিগেশন বারের মতো অন্যান্য উপাদানগুলির সাথে সিঙ্ক্রোনাইজেশনে সামঞ্জস্য করা সহজ করে তোলে৷

যেকোনো EditText ফোকাস থাকা অবস্থায় একটি IME দেখাতে, view.getInsetsController(). show(Type.ime()) (আপনি ফোকাস করা EditText এর মত একই পদক্রমের যেকোন ভিউতে এই পদ্ধতিটিকে কল করতে পারেন, আপনাকে এটিকে EditText এ বিশেষভাবে কল করতে হবে না।) IME লুকানোর জন্য, view.getInsetsController(). hide(Type.ime()) আপনি view.getRootWindowInsets(). isVisible(Type.ime())

IME এর উপস্থিতি এবং অদৃশ্য হওয়ার সাথে আপনার অ্যাপের ভিউ সিঙ্ক্রোনাইজ করতে, একটি WindowInsetsAnimation.Callback প্রদান করে একটি ভিউতে একজন শ্রোতাকে সেট করুন View.setWindowInsetsAnimationCallback() এ কলব্যাক করুন। (আপনি এই শ্রোতাকে যেকোনো ভিউতে সেট করতে পারেন, এটি একটি EditText হতে হবে না।) IME আপনার শ্রোতার onPrepare() পদ্ধতিতে কল করে, তারপর এটি পরিবর্তনের শুরুতে onStart() কল করে। এটি তারপর পরিবর্তনের প্রতিটি অগ্রগতিতে onProgress() কল করে। ট্রানজিশন শেষ হলে, IME কল করে onEnd() । ট্রানজিশনের যেকোন সময়ে, WindowInsetsAnimation.getFraction() কল করে ট্রানজিশন কতটা অগ্রগতি করেছে তা জানতে পারবেন।

এই APIগুলি কীভাবে ব্যবহার করবেন তার একটি উদাহরণের জন্য, নতুন WindowInsets অ্যানিমেশন কোড নমুনা দেখুন।

IME অ্যানিমেশন নিয়ন্ত্রণ করা

এছাড়াও আপনি IME অ্যানিমেশন বা নেভিগেশন বারের মতো অন্য সিস্টেম বারের অ্যানিমেশন নিয়ন্ত্রণ করতে পারেন। এটি করার জন্য, উইন্ডো ইনসেট পরিবর্তনের জন্য একটি নতুন শ্রোতা সেট করতে প্রথমে setOnApplyWindowInsetsListener() এ কল করুন:

কোটলিন

rootView.setOnApplyWindowInsetsListener { rootView, windowInsets ->
    val barsIme = windowInsets.getInsets(Type.systemBars() or Type.ime())
    rootView.setPadding(barsIme.left, barsIme.top, barsIme.right, 
                          barsIme.bottom)

      // We return the new WindowInsets.CONSUMED to stop the insets being
      // dispatched any further into the view hierarchy. This replaces the
      // deprecated WindowInsets.consumeSystemWindowInsets() and related
      // functions.
    WindowInsets.CONSUMED
}

জাভা

mRoot.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
   @Override
   public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {

       Insets barsIME = insets.getInsets(Type.systemBars() | Type.ime());
       mRootView.setPadding(barsIme.left, barsIme.top, barsIme.right,
                             barsIme.bottom);

      // We return the new WindowInsets.CONSUMED to stop the insets being
      // dispatched any further into the view hierarchy. This replaces the
      // deprecated WindowInsets.consumeSystemWindowInsets() and related
      // functions.
       return WindowInsets.CONSUMED;
   }
});

আইএমই বা অন্য সিস্টেম বার সরাতে, কন্ট্রোলারের controlWindowInsetsAnimation() পদ্ধতিতে কল করুন:

কোটলিন

view.windowInsetsController.controlWindowInsetsAnimation(
       Type.ime(),
       1000,
       LinearInterpolator(),
       cancellationSignal,
       object : WindowInsetsAnimationControlListener() {
           fun onReady(controller: WindowInsetsAnimationController,
                         types: Int) {
               // update IME inset
             controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
                           1f /* alpha */, 0.1 /* fraction progress */)
           }
       }
);

জাভা

mRoot.getWindowInsetsController().controlWindowInsetsAnimation(
       Type.ime(), 1000, new LinearInterpolator(), cancellationSignal,
       new WindowInsetsAnimationControlListener() {
           @Override
           public void onReady(
                   @NonNull WindowInsetsAnimationController controller,
                   int types
                   ) {
                   // update IME inset
                   controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
                           1f /* alpha */, 0.1 /* fraction progress */);
           }

           @Override
           public void onCancelled() {}
       });

আইসিইউ লাইব্রেরিতে আপডেট

অ্যান্ড্রয়েড 11 আইসিইউ লাইব্রেরির সংস্করণ 66 ব্যবহার করার জন্য android.icu প্যাকেজ আপডেট করে, Android 10-এর সংস্করণ 63-এর তুলনায়। নতুন লাইব্রেরি সংস্করণে আপডেট করা CLDR লোকেল ডেটা এবং অ্যান্ড্রয়েডে আন্তর্জাতিকীকরণ সমর্থনের জন্য অনেকগুলি বর্ধিতকরণ অন্তর্ভুক্ত রয়েছে।

নতুন লাইব্রেরি সংস্করণগুলির উল্লেখযোগ্য পরিবর্তনগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • অনেক ফরম্যাটিং API এখন একটি নতুন রিটার্ন অবজেক্ট টাইপ সমর্থন করে যা FormattedValue প্রসারিত করে।
  • LocaleMatcher API একটি বিল্ডার ক্লাস, java.util.Locale টাইপের জন্য সমর্থন এবং একটি ম্যাচ সম্পর্কে অতিরিক্ত ডেটা সমন্বিত একটি ফলাফল ক্লাস সহ উন্নত করা হয়েছে।
  • ইউনিকোড 13 এখন সমর্থিত।

মিডিয়া

MediaCodec বাফার বরাদ্দ করা হচ্ছে

অ্যান্ড্রয়েড 11-এ একটি নতুন MediaCodec API রয়েছে যা ইনপুট এবং আউটপুট বাফারগুলি বরাদ্দ করার সময় অ্যাপগুলিকে আরও নিয়ন্ত্রণ দেয়। এটি আপনার অ্যাপকে আরও দক্ষতার সাথে মেমরি পরিচালনা করতে দেয়।

নতুন ক্লাস:
নতুন পদ্ধতি:

উপরন্তু, MediaCodec.Callback() এ দুটি পদ্ধতির আচরণ পরিবর্তিত হয়েছে:

onInputBufferAvailable()
সূচী সহ MediaCodec.getInputBuffer() এবং MediaCodec.queueInputBuffer() কল করার পরিবর্তে, ব্লক মডেল API ব্যবহার করার জন্য কনফিগার করা হলে, অ্যাপগুলিকে সূচির সাথে MediaCodec.getQueueRequest ব্যবহার করা উচিত, স্লটে একটি LinearBlock/HardwareBuffer সংযুক্ত করা।
onOutputBufferAvailable()
সূচকের সাথে MediaCodec.getOutputBuffer() কল করার পরিবর্তে, অ্যাপগুলি আরও তথ্য এবং LinearBlock/HardwareBuffer বাফার সহ OutputFrame অবজেক্ট পেতে সূচকের সাথে MediaCodec.getOutputFrame() ব্যবহার করতে পারে।

MediaCodec-এ লো-লেটেন্সি ডিকোডিং

অ্যান্ড্রয়েড 11 গেমস এবং অন্যান্য রিয়েল-টাইম অ্যাপের জন্য কম লেটেন্সি ডিকোডিং সমর্থন করতে MediaCodec উন্নত করে। আপনি MediaCodecInfo.CodecCapabilities.isFeatureSupported()FEATURE_LowLatency পাস করে একটি কোডেক কম-বিলম্বিত ডিকোডিং সমর্থন করে কিনা তা পরীক্ষা করতে পারেন।

কম লেটেন্সি ডিকোডিং চালু বা বন্ধ করতে, নিচের যে কোনো একটি করুন:

নতুন AAudio ফাংশন AAudioStream_release()

AAudioStream_close() ফাংশন একই সময়ে একটি অডিও স্ট্রীম প্রকাশ করে এবং বন্ধ করে। এটি বিপজ্জনক হতে পারে। যদি অন্য প্রক্রিয়াটি বন্ধ হওয়ার পরে স্ট্রীমটি অ্যাক্সেস করার চেষ্টা করে, তবে প্রক্রিয়াটি ক্র্যাশ হয়ে যাবে।

নতুন ফাংশন AAudioStream_release() স্ট্রিমটি প্রকাশ করে কিন্তু এটি বন্ধ করে না। এটি তার সংস্থানগুলিকে মুক্ত করে এবং একটি পরিচিত অবস্থায় প্রবাহকে ছেড়ে দেয়। অবজেক্টটি টিকে থাকে যতক্ষণ না আপনি AAudioStream_close() কল করেন।

MediaParser API

MediaParser মিডিয়া নিষ্কাশনের জন্য একটি নতুন নিম্ন স্তরের API। এটি MediaExtractor এর চেয়ে বেশি নমনীয় এবং মিডিয়া নিষ্কাশন কার্যকারিতার উপর অতিরিক্ত নিয়ন্ত্রণ প্রদান করে।

একটি USB ডিভাইস থেকে অডিও ক্যাপচার

যখন RECORD_AUDIO অনুমতি ছাড়া একটি অ্যাপ্লিকেশন অডিও ক্যাপচার ক্ষমতা (যেমন একটি USB হেডসেট) সহ একটি USB অডিও ডিভাইসে সরাসরি অ্যাক্সেসের অনুরোধ করতে UsbManager ব্যবহার করে, তখন একটি নতুন সতর্কতা বার্তা উপস্থিত হয় যা ব্যবহারকারীকে ডিভাইস ব্যবহারের অনুমতি নিশ্চিত করতে বলে। সিস্টেমটি যেকোনও "সর্বদা ব্যবহার করুন" বিকল্পটিকে উপেক্ষা করে, তাই ব্যবহারকারীকে অবশ্যই সতর্কতা স্বীকার করতে হবে এবং যখনই একটি অ্যাপ অ্যাক্সেসের অনুরোধ করবে তখন অনুমতি দিতে হবে।

এই আচরণ এড়াতে, আপনার অ্যাপের RECORD_AUDIO অনুমতির অনুরোধ করা উচিত।

সমবর্তী মাইক অ্যাক্সেস

Android 11 AudioRecord , MediaRecorder এবং AAudioStream API-এ নতুন পদ্ধতি যোগ করে। এই পদ্ধতিগুলি নির্বাচিত ব্যবহারের ক্ষেত্রে নির্বিশেষে একযোগে ক্যাপচার করার ক্ষমতা সক্ষম এবং অক্ষম করে। শেয়ারিং অডিও ইনপুট দেখুন।

আউটপুট সুইচার

Android 11 কাস্ট এবং মিডিয়ারাউটার API ব্যবহার করে এমন অ্যাপগুলির জন্য নতুন আচরণ প্রয়োগ করে।

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

সংযোগ

Wi-Fi পাসপয়েন্ট বর্ধিতকরণ

Android 11-এ যোগ করা পাসপয়েন্ট ক্ষমতা সম্পর্কে তথ্যের জন্য, পাসপয়েন্ট দেখুন।

Wi-Fi সাজেশন API প্রসারিত হয়েছে৷

Android 11 নিম্নলিখিতগুলি সহ আপনার অ্যাপের নেটওয়ার্ক পরিচালনার ক্ষমতা বাড়াতে Wi-Fi সাজেশন API প্রসারিত করে:

  • সংযোগ বিচ্ছিন্ন করার অনুরোধের অনুমতি দিয়ে কানেক্টিভিটি ম্যানেজমেন্ট অ্যাপগুলি তাদের নিজস্ব নেটওয়ার্ক পরিচালনা করতে পারে।
  • পাসপয়েন্ট নেটওয়ার্কগুলি সাজেশন এপিআইতে একত্রিত করা হয়েছে এবং ব্যবহারকারীকে পরামর্শ দেওয়া যেতে পারে।
  • Analytics এপিআই আপনাকে আপনার নেটওয়ার্কের গুণমান সম্পর্কে তথ্য পেতে সক্ষম করে।

CallScreeningService আপডেট

Android 11 থেকে শুরু করে, একটি CallScreeningService ইনকামিং কলগুলির জন্য STIR/SHAKEN যাচাইকরণ স্ট্যাটাস (verstat) সম্পর্কে তথ্যের জন্য অনুরোধ করতে পারে। ইনকামিং কলের জন্য কলের বিবরণের অংশ হিসেবে এই তথ্য প্রদান করা হয়।

যদি কোনো CallScreeningService কাছে READ_CONTACTS অনুমতি থাকে, তাহলে ব্যবহারকারীর পরিচিতির কোনো নম্বর থেকে ইনকামিং কল বা আউটগোয়িং কল হলে অ্যাপটিকে অবহিত করা হয়।

আরও তথ্যের জন্য, কলার আইডি স্পুফিং প্রতিরোধ করুন দেখুন।

মোবাইল API আপডেট খুলুন

Android 11 এবং উচ্চতর সংস্করণে OMAPI সমর্থন সম্পর্কে তথ্যের জন্য, ওপেন মোবাইল API রিডার সমর্থন দেখুন।

পারফরম্যান্ট ভিপিএন

যে অ্যাপগুলি API স্তর 30 এবং উচ্চতর লক্ষ্য করে বা যেগুলি API স্তর 29 এবং উচ্চতর ডিভাইসে চালু হয় সেগুলি ব্যবহারকারী-কনফিগার করা এবং অ্যাপ-ভিত্তিক VPN উভয়ের জন্য VPNগুলিতে IKEv2/IPsec প্রয়োগ করতে পারে।

VPNগুলি অপারেটিং সিস্টেমে চলে, একটি অ্যাপে IKEv2/IPsec VPN সংযোগ স্থাপনের জন্য প্রয়োজনীয় কোডটিকে সরল করে।

প্রতি-প্রক্রিয়া নেটওয়ার্ক অ্যাক্সেস নিয়ন্ত্রণ

প্রতি-প্রক্রিয়ার ভিত্তিতে নেটওয়ার্ক অ্যাক্সেস সক্ষম করার তথ্যের জন্য, নেটওয়ার্ক ব্যবহার পরিচালনা দেখুন।

একই FQDN সহ একাধিক ইনস্টল করা পাসপয়েন্ট কনফিগারেশনের অনুমতি দিন

Android 11 থেকে শুরু করে, আপনি PasspointConfiguration.getUniqueId() ব্যবহার করতে পারেন একটি PasspointConfiguration অবজেক্টের জন্য একটি অনন্য শনাক্তকারী পেতে, যা আপনার অ্যাপের ব্যবহারকারীদের একই সম্পূর্ণ যোগ্য ডোমেন নাম (FQDN) সহ একাধিক প্রোফাইল ইনস্টল করতে সক্ষম করে।

এই কার্যকারিতাটি সহায়ক হয় যখন একটি ক্যারিয়ার তাদের নেটওয়ার্কে মোবাইল কান্ট্রি কোড (MCC) এবং মোবাইল নেটওয়ার্ক কোড (MNC) এর একাধিক সংমিশ্রণ স্থাপন করে, কিন্তু শুধুমাত্র একটি একক FQDN থাকে। Android 11 এবং উচ্চতর সংস্করণে, একই FQDN এর সাথে একাধিক প্রোফাইল ইনস্টল করা সম্ভব যা হোম প্রদানকারী হিসাবে নেটওয়ার্কের সাথে মিলবে যখন ব্যবহারকারী MCC বা MNC এর সাথে একটি সিম ইনস্টল করেন।

GNSS অ্যান্টেনা সমর্থন

অ্যান্ড্রয়েড 11 GnssAntennaInfo ক্লাস প্রবর্তন করেছে, যা গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS) প্রদান করতে পারে এমন সেন্টিমিটার-নির্ভুলতা অবস্থানের আরও বেশি ব্যবহার করা আপনার অ্যাপকে সম্ভব করে তোলে।

অ্যান্টেনা ক্রমাঙ্কন তথ্যের গাইডে আরও জানুন।

গ্রাফিক্স

NDK ইমেজ ডিকোডার

NDK ImageDecoder API Android C/C++ অ্যাপের জন্য সরাসরি ছবি ডিকোড করার জন্য একটি আদর্শ API প্রদান করে। অ্যাপ ডেভেলপারদের আর ফ্রেমওয়ার্ক API ব্যবহার করতে হবে না (JNI এর মাধ্যমে) বা তৃতীয় পক্ষের ইমেজ-ডিকোডিং লাইব্রেরি বান্ডিল করতে হবে। আরও তথ্যের জন্য, চিত্র ডিকোডার বিকাশকারী নির্দেশিকা দেখুন।

ফ্রেম রেট API

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

কম লেটেন্সি সমর্থনের জন্য অনুরোধ করা এবং পরীক্ষা করা

কিছু ডিসপ্লে গ্রাফিক্স পোস্ট-প্রসেসিং করতে পারে, যেমন কিছু এক্সটার্নাল ডিসপ্লে এবং টিভি। এই পোস্ট-প্রসেসিং গ্রাফিক্স উন্নত করে কিন্তু লেটেন্সি বাড়াতে পারে। HDMI 2.1 সমর্থন করে এমন নতুন ডিসপ্লেগুলির একটি স্বয়ংক্রিয় লো লেটেন্সি মোড রয়েছে ( ALLM , যা গেম মোড নামেও পরিচিত), যা এই পোস্ট-প্রসেসিং বন্ধ করে লেটেন্সি কমিয়ে দেয়৷ ALLM সম্পর্কে আরও বিস্তারিত জানার জন্য, HDMI 2.1 স্পেসিফিকেশন পড়ুন।

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

ন্যূনতম পোস্ট-প্রসেসিং চালু বা বন্ধ করতে, Window.setPreferMinimalPostProcessing() এ কল করুন, অথবা উইন্ডোর preferMinimalPostProcessing বৈশিষ্ট্যটিকে true এ সেট করুন। সব ডিসপ্লে ন্যূনতম পোস্ট-প্রসেসিং সমর্থন করে না; একটি নির্দিষ্ট প্রদর্শন এটি সমর্থন করে কিনা তা খুঁজে বের করতে, নতুন পদ্ধতিতে কল করুন Display.isMinimalPostProcessingSupported()

পারফরম্যান্স গ্রাফিক্স ডিবাগ লেয়ার ইনজেকশন

অ্যাপ্লিকেশানগুলি এখন বহিরাগত গ্রাফিক্স স্তরগুলি ( GLES , Vulkan ) নেটিভ অ্যাপ্লিকেশন কোডে লোড করতে পারে একটি ডিবাগযোগ্য অ্যাপের মতো একই কার্যকারিতা প্রকাশ করতে, কিন্তু কর্মক্ষমতা ওভারহেড খরচ না করে৷ এই বৈশিষ্ট্যটি বিশেষভাবে গুরুত্বপূর্ণ যখন GAPID এর মতো সরঞ্জামগুলির সাথে আপনার অ্যাপ্লিকেশনটি প্রোফাইল করা হয়। আপনার অ্যাপ প্রোফাইল করতে, অ্যাপ্লিকেশনটিকে ডিবাগযোগ্য করার পরিবর্তে আপনার অ্যাপ ম্যানিফেস্ট ফাইলে নিম্নলিখিত মেটা-ডেটা উপাদান অন্তর্ভুক্ত করুন:

<application ... >
    <meta-data android:name="com.android.graphics.injectLayers.enable"
                  android:value="true" />
</application>

ছবি এবং ক্যামেরা

সক্রিয় ক্যাপচারের সময় বিজ্ঞপ্তি শব্দ এবং কম্পন নিঃশব্দ করুন

অ্যান্ড্রয়েড 11 থেকে শুরু করে, সক্রিয়ভাবে ক্যামেরা ব্যবহার করার সময়, আপনার অ্যাপটি শুধুমাত্র কম্পন, শব্দ এবং কম্পন উভয়ই মিউট করতে পারে, অথবা setCameraAudioRestriction() ব্যবহার করেও নয়।

অ্যান্ড্রয়েড এমুলেটরে প্রসারিত ক্যামেরা সমর্থন

অ্যান্ড্রয়েড 11 দিয়ে শুরু হওয়া এমুলেটরে ক্যামেরার জন্য প্রসারিত সমর্থন সম্পর্কে তথ্যের জন্য, ক্যামেরা সমর্থন দেখুন।

একাধিক ক্যামেরার একযোগে ব্যবহারের জন্য সমর্থন

অ্যান্ড্রয়েড 11 সামনে এবং পিছনের ক্যামেরা উভয়ই সহ একসাথে একাধিক ক্যামেরা ব্যবহার করার জন্য অনুসন্ধান সমর্থনে API যুক্ত করে।

আপনার অ্যাপটি যে ডিভাইসে চলছে তাতে সমর্থনের জন্য পরীক্ষা করতে, নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করুন:

  • getConcurrentCameraIds() ক্যামেরা আইডিগুলির সংমিশ্রণের একটি Set প্রদান করে যা একই অ্যাপ্লিকেশন প্রক্রিয়া দ্বারা কনফিগার করা হলে নিশ্চিত স্ট্রিম সমন্বয়ের সাথে একযোগে স্ট্রিম করতে পারে।
  • isConcurrentSessionConfigurationSupported() ক্যামেরা ডিভাইস একই সাথে সংশ্লিষ্ট সেশন কনফিগারেশন সমর্থন করতে পারে কিনা তা জিজ্ঞাসা করে।

একাধিক ফ্রেম সহ HEIF চিত্রগুলির জন্য আরও ভাল সমর্থন

অ্যান্ড্রয়েড 11 থেকে শুরু করে, আপনি যদি ImageDecoder.decodeDrawable() কল করেন এবং ফ্রেমের একটি ক্রম (যেমন একটি অ্যানিমেশন বা একটি বিস্ফোরিত ফটো) সম্বলিত একটি HEIF চিত্র পাস করেন, তবে পদ্ধতিটি সম্পূর্ণ চিত্রের ক্রম ধারণকারী একটি AnimatedImageDrawable প্রদান করে। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, পদ্ধতিটি শুধুমাত্র একটি একক ফ্রেমের BitmapDrawable ফিরিয়ে দিয়েছে।

যদি HEIF গ্রাফিকে একাধিক ফ্রেম থাকে যা একটি ক্রমানুসারে না থাকে, তাহলে আপনি MediaMetadataRetriever.getImageAtIndex() কল করে একটি পৃথক ফ্রেম পুনরুদ্ধার করতে পারেন।

অ্যাক্সেসযোগ্যতা

অ্যাক্সেসিবিলিটি পরিষেবা বিকাশকারীদের জন্য আপডেট৷

আপনি যদি একটি কাস্টম অ্যাক্সেসিবিলিটি পরিষেবা তৈরি করেন তবে আপনি Android 11-এ নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন:

  • একটি অ্যাক্সেসিবিলিটি পরিষেবার ব্যবহারকারী-মুখী ব্যাখ্যা এখন প্লেইন টেক্সট ছাড়াও এইচটিএমএল এবং ইমেজগুলির জন্য অনুমতি দেয়। এই নমনীয়তা আপনার পরিষেবা কী করে এবং কীভাবে এটি তাদের সাহায্য করতে পারে তা শেষ-ব্যবহারকারীদের ব্যাখ্যা করা সহজ করে তোলে।
  • একটি UI উপাদানের অবস্থার বর্ণনার সাথে কাজ করতে যা contentDescription এর চেয়ে অর্থপূর্ণ অর্থপূর্ণ, getStateDescription() পদ্ধতিতে কল করুন।
  • টাচ ইভেন্টগুলি সিস্টেমের টাচ এক্সপ্লোরারকে বাইপাস করার অনুরোধ করতে, setTouchExplorationPassthroughRegion() কল করুন। একইভাবে, অনুরোধ করার জন্য যে অঙ্গভঙ্গিগুলি সিস্টেমের অঙ্গভঙ্গি সনাক্তকারীকে বাইপাস করে, setGestureDetectionPassthroughRegion() কল করুন।
  • আপনি IME অ্যাকশনের অনুরোধ করতে পারেন, যেমন "এন্টার" এবং "নেক্সট", সেইসাথে FLAG_SECURE পতাকা সক্ষম করে না এমন উইন্ডোগুলির স্ক্রিনশট।

অতিরিক্ত বৈশিষ্ট্য

অ্যাপ্লিকেশন প্রক্রিয়া প্রস্থান কারণ

Android 11 ActivityManager.getHistoricalProcessExitReasons() পদ্ধতি প্রবর্তন করেছে, যা সাম্প্রতিক প্রক্রিয়া বন্ধ হওয়ার কারণগুলি রিপোর্ট করে৷ অ্যাপ্লিকেশানগুলি ক্র্যাশ ডায়াগনস্টিক তথ্য সংগ্রহ করতে এই পদ্ধতিটি ব্যবহার করতে পারে, যেমন ANR, মেমরি সমস্যা বা অন্যান্য কারণে কোনও প্রক্রিয়া সমাপ্ত হয়েছে কিনা। অতিরিক্তভাবে, আপনি নতুন setProcessStateSummary() পদ্ধতিটি পরবর্তী বিশ্লেষণের জন্য কাস্টম স্টেটের তথ্য সংরক্ষণ করতে ব্যবহার করতে পারেন।

getHistoricalProcessExitReasons() পদ্ধতিটি ApplicationExitInfo ক্লাসের উদাহরণ প্রদান করে, যেটিতে একটি অ্যাপ প্রক্রিয়ার মৃত্যুর সাথে সম্পর্কিত তথ্য রয়েছে। এই ক্লাসের একটি উদাহরণে getReason() কল করার মাধ্যমে, আপনি নির্ধারণ করতে পারেন কেন আপনার অ্যাপের প্রক্রিয়াটি বন্ধ হয়ে গেছে। উদাহরণ স্বরূপ, REASON_CRASH এর একটি রিটার্ন মান নির্দেশ করে যে আপনার অ্যাপে একটি আন-হ্যান্ডেল করা ব্যতিক্রম ঘটেছে। যদি আপনার অ্যাপের প্রস্থান ইভেন্টগুলির জন্য স্বতন্ত্রতা নিশ্চিত করতে হয়, তাহলে এটি একটি অ্যাপ-নির্দিষ্ট শনাক্তকারী বজায় রাখতে পারে, যেমন getTimestamp() পদ্ধতি থেকে টাইমস্ট্যাম্পের উপর ভিত্তি করে হ্যাশ মান।

অতিরিক্ত সম্পদ

আরও তথ্যের জন্য, অ্যাপ্লিকেশানগুলিকে মিডিয়ামে আরও ব্যক্তিগত এবং স্থিতিশীল করতে নতুন Android 11 সরঞ্জামগুলি সম্পর্কে নিবন্ধটি পড়ুন।

রিসোর্স লোডার

অ্যান্ড্রয়েড 11 একটি নতুন API প্রবর্তন করেছে যা অ্যাপগুলিকে কীভাবে সংস্থানগুলি অনুসন্ধান এবং লোড করা হয় তা গতিশীলভাবে প্রসারিত করতে দেয়। নতুন API ক্লাস ResourcesLoader এবং ResourcesProvider নতুন কার্যকারিতা প্রদানের জন্য প্রাথমিকভাবে দায়ী। একসাথে, তারা অতিরিক্ত সম্পদ এবং সম্পদ সরবরাহ করার ক্ষমতা প্রদান করে, বা বিদ্যমান সম্পদ এবং সম্পদের মান পরিবর্তন করে।

ResourcesLoader অবজেক্টগুলি এমন কন্টেইনার যা একটি অ্যাপের Resources ইনস্ট্যান্সে ResourcesProvider অবজেক্ট সরবরাহ করে। পরিবর্তে, ResourcesProvider অবজেক্টগুলি APK এবং রিসোর্স টেবিল থেকে রিসোর্স ডেটা লোড করার পদ্ধতি প্রদান করে।

এই API-এর জন্য একটি প্রাথমিক ব্যবহারের ক্ষেত্রে কাস্টম সম্পদ লোডিং। আপনি একটি ResourcesProvider তৈরি করতে loadFromDirectory() ব্যবহার করতে পারেন যা ফাইল-ভিত্তিক সংস্থান এবং সম্পদের রেজোলিউশনকে পুনর্নির্দেশ করে, যার ফলে এটি অ্যাপ্লিকেশন APK-এর পরিবর্তে একটি নির্দিষ্ট ডিরেক্টরি অনুসন্ধান করতে পারে। আপনি AssetManager API ক্লাস থেকে open() পদ্ধতির পরিবারের মাধ্যমে এই সম্পদগুলি অ্যাক্সেস করতে পারেন, ঠিক যেমন APK-এ বান্ডিল করা সম্পদগুলির সাথে।

APK স্বাক্ষর স্কিম v4

Android 11 APK স্বাক্ষর স্কিম v4 এর জন্য সমর্থন যোগ করে। এই স্কিমটি একটি পৃথক ফাইলে ( apk-name .apk.idsig ) একটি নতুন ধরনের স্বাক্ষর তৈরি করে কিন্তু অন্যথায় v2 এবং v3 এর মতো। APK এ কোন পরিবর্তন করা হয় না। এই স্কিমটি ADB বর্ধিত APK ইনস্টলেশনকে সমর্থন করে, যা APK ইনস্টলের গতি বাড়ায়।

গতিশীল অভিপ্রায় ফিল্টার

ইন্টেন্টগুলি পাওয়ার জন্য, একটি অ্যাপকে অবশ্যই কম্পাইলের সময় ঘোষণা করতে হবে যে এটি অ্যাপ ম্যানিফেস্টে একটি অভিপ্রায় ফিল্টার সংজ্ঞায়িত করে কোন ধরণের ডেটা গ্রহণ করতে সক্ষম। অ্যান্ড্রয়েড 10 এবং তার নিচের সংস্করণে, অ্যাপ্লিকেশানগুলির রানটাইমে তাদের উদ্দেশ্য ফিল্টারগুলি পরিবর্তন করার কোনও উপায় নেই। এটি ভার্চুয়ালাইজেশন অ্যাপগুলির জন্য একটি সমস্যা (যেমন ভার্চুয়াল মেশিন এবং রিমোট ডেস্কটপ) কারণ ব্যবহারকারীরা তাদের ভিতরে কোন সফ্টওয়্যার ইনস্টল করবেন তা জানার কোন উপায় তাদের নেই।

অ্যান্ড্রয়েড 11 MIME গ্রুপগুলিকে প্রবর্তন করেছে, একটি নতুন ম্যানিফেস্ট উপাদান যা একটি অ্যাপকে একটি অভিপ্রায় ফিল্টারে MIME প্রকারের একটি গতিশীল সেট ঘোষণা করতে এবং রানটাইমে এটিকে প্রোগ্রাম্যাটিকভাবে সংশোধন করতে দেয়। একটি MIME গ্রুপ ব্যবহার করতে, নতুন android:mimeGroup বৈশিষ্ট্য সহ আপনার অ্যাপ ম্যানিফেস্টে একটি ডেটা উপাদান অন্তর্ভুক্ত করুন:

<intent-filter>
  <action android:name="android.intent.action.SEND"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeGroup="myMimeGroup"/>
</intent-filter>

android:mimeGroup অ্যাট্রিবিউটের মান হল একটি নির্বিচারে স্ট্রিং আইডি যা রানটাইমে MIME গ্রুপকে শনাক্ত করে। আপনি PackageManager এপিআই ক্লাসে নিম্নলিখিত নতুন পদ্ধতিতে একটি MIME গ্রুপের আইডি পাস করে তার বিষয়বস্তু অ্যাক্সেস এবং আপডেট করতে পারেন:

আপনি যখন একটি MIME গ্রুপে প্রোগ্রাম্যাটিকভাবে একটি MIME প্রকার যোগ করেন, তখন এটি ম্যানিফেস্টে স্পষ্টভাবে ঘোষিত একটি স্ট্যাটিক MIME প্রকারের মতোই কাজ করে৷

অটোফিল বর্ধিতকরণ

অ্যান্ড্রয়েড 11 অটোফিল পরিষেবাগুলির জন্য উন্নতি প্রবর্তন করে৷

AssistStructure.ViewNode-এ ইঙ্গিত শনাক্তকারী

ভিউ এর বৈশিষ্ট্যের উপর ভিত্তি করে একটি ভিউয়ের জন্য একটি স্বাক্ষর হ্যাশ গণনা করা অটোফিল পরিষেবাগুলির জন্য প্রায়ই দরকারী। সিগনেচার হ্যাশ কম্পিউট করার সময় ভিউ ইঙ্গিতটি অন্তর্ভুক্ত করার জন্য একটি বিশেষ বৈশিষ্ট্য, তবে ইঙ্গিত স্ট্রিংটি ফোনের লোকেলের সাথে পরিবর্তিত হতে পারে। এই সমস্যা সমাধানের জন্য, Android 11 একটি নতুন getHintIdEntry() পদ্ধতির সাহায্যে AssistStructure.ViewNode প্রসারিত করে, যা একটি ভিউ-এর ইঙ্গিত পাঠের জন্য রিসোর্স শনাক্তকারী প্রদান করে। এই পদ্ধতিটি একটি লোকেল-স্বাধীন মান প্রদান করে যা আপনি স্বাক্ষর হ্যাশ গণনা করতে ব্যবহার করতে পারেন।

ডেটাসেট ইভেন্ট দেখানো হয়েছে

অটোফিল পরিষেবাগুলিকে তাদের পরামর্শগুলি উন্নত করতে সহায়তা করার জন্য, Android 11 এমন ক্ষেত্রে সনাক্ত করার একটি উপায় প্রদান করে যেখানে একটি অটোফিল পরিষেবা ডেটাসেট উপস্থাপন করে কিন্তু ব্যবহারকারী সেগুলির কোনওটি নির্বাচন করেননি। Android 11-এ, FillEventHistory একটি নতুন TYPE_DATASETS_SHOWN ইভেন্ট টাইপ রিপোর্ট করে। FillEventHistory এই ধরনের একটি ইভেন্ট লগ করে যখনই অটোফিল পরিষেবা ব্যবহারকারীকে এক বা একাধিক ডেটাসেট উপস্থাপন করে। অটোফিল পরিষেবাগুলি বিদ্যমান TYPE_DATASET_SELECTED ইভেন্টের সাথে একত্রে এই ইভেন্টগুলি ব্যবহার করতে পারে ব্যবহারকারী প্রদত্ত অটোফিল বিকল্পগুলির মধ্যে কোনটি নির্বাচন করেছেন কিনা তা নির্ধারণ করতে৷

আইএমই ইন্টিগ্রেশন

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

বিষয়বস্তু ক্যাপচার পরিষেবার সাথে ডেটা শেয়ারিং

Android 11 থেকে শুরু করে, আপনার অ্যাপ ডিভাইসের সামগ্রী ক্যাপচার পরিষেবার সাথে ডেটা ভাগ করতে পারে। এই ক্ষমতাটি একটি ডিভাইসের জন্য প্রাসঙ্গিক বুদ্ধিমত্তা প্রদান করা সহজ করে তোলে, যেমন একটি গানের নাম দেখানো যা বর্তমানে ব্যবহারকারীর পরিবেশে চলছে৷

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