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

অ্যান্ড্রয়েড ১৩ থেকে, আপনি থিমযুক্ত অ্যাপ আইকন ব্যবহারের সুবিধাটি বেছে নিতে পারেন। এই ফিচারের মাধ্যমে, সমর্থিত অ্যান্ড্রয়েড লঞ্চারগুলোর অ্যাপ আইকনগুলোতে ব্যবহারকারীর বেছে নেওয়া ওয়ালপেপার এবং অন্যান্য থিমের রঙ যুক্ত হয়।
এই ফিচারটি সমর্থন করার জন্য, আপনার অ্যাপে অবশ্যই একটি অ্যাডাপ্টিভ আইকন এবং একটি মনোক্রোম্যাটিক অ্যাপ আইকন উভয়ই থাকতে হবে, এবং ম্যানিফেস্টের <adaptive-icon> এলিমেন্ট থেকে মনোক্রোম্যাটিক অ্যাপ আইকনটিকে নির্দেশ করতে হবে। যদি কোনো ব্যবহারকারী থিমযুক্ত অ্যাপ আইকন সক্রিয় করে থাকেন (অর্থাৎ, সিস্টেম সেটিংসে থিমড আইকন টগলটি চালু করে থাকেন), এবং লঞ্চারটি এই ফিচারটি সমর্থন করে, তবে সিস্টেমটি টিন্ট কালার নির্ধারণ করার জন্য ব্যবহারকারীর নির্বাচিত ওয়ালপেপার এবং থিমের রঙ ব্যবহার করে, যা পরে মনোক্রোম্যাটিক অ্যাপ আইকনটিতে প্রয়োগ করা হয়।
নিম্নলিখিত পরিস্থিতিগুলোর যেকোনোটিতে হোম স্ক্রিনে থিমযুক্ত অ্যাপ আইকনটি প্রদর্শিত হয় না—এবং এর পরিবর্তে অ্যাডাপ্টিভ বা স্ট্যান্ডার্ড অ্যাপ আইকনটি প্রদর্শিত হয়:
- যদি ব্যবহারকারী থিমযুক্ত অ্যাপ আইকন সক্রিয় না করে থাকেন
- যদি আপনার অ্যাপ একটি একরঙা অ্যাপ আইকন প্রদান না করে
- যদি লঞ্চারটি থিমযুক্ত অ্যাপ আইকন সমর্থন না করে
আরও বিস্তারিত তথ্য ও নির্দেশাবলীর জন্য, অ্যাডাপ্টিভ আইকনস দেখুন।
অ্যাপ-ভিত্তিক ভাষার পছন্দ

অনেক ক্ষেত্রে, বহুভাষী ব্যবহারকারীরা তাদের সিস্টেমের ভাষা একটি নির্দিষ্ট ভাষায়—যেমন ইংরেজিতে—সেট করেন, কিন্তু তারা নির্দিষ্ট অ্যাপের জন্য অন্যান্য ভাষা, যেমন ডাচ, চীনা বা হিন্দি, নির্বাচন করতে চান। এই ব্যবহারকারীদের আরও ভালো অভিজ্ঞতা দিতে অ্যাপগুলোকে সাহায্য করার জন্য, অ্যান্ড্রয়েড ১৩ একাধিক ভাষা সমর্থনকারী অ্যাপগুলোর জন্য নিম্নলিখিত বৈশিষ্ট্যগুলো চালু করেছে:
সিস্টেম সেটিংস : একটি কেন্দ্রীয় স্থান যেখানে ব্যবহারকারীরা প্রতিটি অ্যাপের জন্য পছন্দের ভাষা নির্বাচন করতে পারেন।
আপনার অ্যাপ একাধিক ভাষা সমর্থন করে, এটি সিস্টেমকে জানানোর জন্য অ্যাপের ম্যানিফেস্টে অবশ্যই
android:localeConfigঅ্যাট্রিবিউটটি ঘোষণা করতে হবে। আরও জানতে, একটি রিসোর্স ফাইল তৈরি করা এবং আপনার অ্যাপের ম্যানিফেস্ট ফাইলে এটি ঘোষণা করার নির্দেশাবলী দেখুন।অতিরিক্ত এপিআই : এই পাবলিক এপিআইগুলো, যেমন
LocaleManagerএরsetApplicationLocales()এবংgetApplicationLocales()মেথডগুলো, অ্যাপগুলোকে রানটাইমে সিস্টেমের ভাষা থেকে ভিন্ন একটি ভাষা সেট করার সুযোগ দেয়।এই API-গুলো সিস্টেম সেটিংসের সাথে স্বয়ংক্রিয়ভাবে সিঙ্ক হয়; তাই, যে অ্যাপগুলো কাস্টম ইন-অ্যাপ ল্যাঙ্গুয়েজ পিকার তৈরি করতে এই API-গুলো ব্যবহার করে, তারা নিশ্চিত করতে পারে যে ব্যবহারকারীরা তাদের ভাষার পছন্দ যেখানেই নির্বাচন করুক না কেন, একটি সামঞ্জস্যপূর্ণ ইউজার এক্সপেরিয়েন্স পাবেন। পাবলিক API-গুলো আপনাকে বয়লারপ্লেট কোডের পরিমাণ কমাতেও সাহায্য করে, এগুলো স্প্লিট APK সমর্থন করে এবং অ্যাপ-স্তরের ব্যবহারকারীর ভাষার সেটিংস সংরক্ষণের জন্য ‘অটো ব্যাকআপ ফর অ্যাপস’ সমর্থন করে।
পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলির সাথে পশ্চাৎ সামঞ্জস্যের জন্য, AndroidX-এ সমতুল্য API-গুলিও উপলব্ধ রয়েছে। আমরা Appcompat 1.6.0-beta01 বা উচ্চতর সংস্করণে যুক্ত API-গুলি ব্যবহার করার পরামর্শ দিই।
যেসব অ্যাপ একাধিক ভাষা সমর্থন করে না, সেগুলো এই পরিবর্তনগুলোর দ্বারা প্রভাবিত হবে না।
উন্নত পাঠ্য এবং ভাষা সমর্থন
অ্যান্ড্রয়েড ১৩-এ বেশ কিছু ফিচার ও টেক্সট এবং ভাষার উন্নতি অন্তর্ভুক্ত রয়েছে যা আপনাকে আরও পরিশীলিত অভিজ্ঞতা প্রদানে সহায়তা করে, যা নিম্নলিখিত বিভাগগুলিতে বর্ণনা করা হয়েছে:
দ্রুত হাইফেনেশন
হাইফেনেশন র্যাপ করা টেক্সট পড়া সহজ করে এবং আপনার UI-কে আরও অ্যাডাপ্টিভ করে তোলে। অ্যান্ড্রয়েড ১৩ থেকে, হাইফেনেশন পারফরম্যান্স ২০০% পর্যন্ত অপ্টিমাইজ করা হয়েছে, ফলে আপনি রেন্ডারিং পারফরম্যান্সে প্রায় কোনো প্রভাব ছাড়াই আপনার TextView তে এটি চালু করতে পারেন। আরও দ্রুত হাইফেনেশন চালু করতে, setHyphenationFrequency() ফাংশনে fullFast বা normalFast ফ্রিকোয়েন্সি ব্যবহার করুন।
টেক্সট রূপান্তর এপিআই
জাপানি এবং চীনা ভাষার মতো ভাষাভাষীরা ধ্বনিভিত্তিক অক্ষর ইনপুট পদ্ধতি ব্যবহার করেন, যা প্রায়শই সার্চিং এবং অটো-কমপ্লিশনের মতো ফিচারগুলোকে ধীর করে দেয়। অ্যান্ড্রয়েড ১৩-এ, অ্যাপগুলো নতুন টেক্সট কনভার্সন এপিআই কল করতে পারে, ফলে ব্যবহারকারীরা যা খুঁজছেন তা আরও দ্রুত এবং সহজে খুঁজে পেতে পারেন। উদাহরণস্বরূপ, আগে সার্চ করার জন্য একজন জাপানি ব্যবহারকারীকে এই ধাপগুলো অনুসরণ করতে হতো:
- তাদের অনুসন্ধান করা শব্দটির (যেমন কোনো স্থান বা অ্যাপের নাম) ধ্বনিগত উচ্চারণ হিসেবে হিরাগানা লিখুন।
- কিবোর্ড ব্যবহার করে হিরাগানা অক্ষরগুলোকে কাঞ্জিতে রূপান্তর করুন।
- কাঞ্জি অক্ষর ব্যবহার করে পুনরায় অনুসন্ধান করুন
- অবশেষে তাদের অনুসন্ধানের ফলাফল পাওয়া গেল।
নতুন টেক্সট কনভার্সন এপিআই-এর মাধ্যমে জাপানি ব্যবহারকারীরা ২ এবং ৩ নম্বর ধাপ এড়িয়ে হিরাগানা টাইপ করে সঙ্গে সঙ্গে সরাসরি কাঞ্জি অনুসন্ধানের ফলাফল দেখতে পারবেন।
অ-ল্যাটিন স্ক্রিপ্টের জন্য উন্নত লাইন উচ্চতা
অ্যান্ড্রয়েড ১৩ প্রতিটি ভাষার জন্য বিশেষভাবে তৈরি লাইন হাইট ব্যবহার করে অ-ল্যাটিন স্ক্রিপ্টগুলোর (যেমন তামিল, বর্মী, তেলুগু এবং তিব্বতি) প্রদর্শন উন্নত করে। এই নতুন লাইন হাইট অক্ষর কেটে যাওয়া প্রতিরোধ করে এবং অক্ষরের অবস্থান উন্নত করে। আপনার অ্যাপ শুধুমাত্র অ্যান্ড্রয়েড ১৩ টার্গেট করার মাধ্যমেই এই উন্নতিগুলোর সুবিধা নিতে পারে। নতুন লাইন স্পেসিং ব্যবহার করার সময় আপনার অ্যাপগুলো পরীক্ষা করে নিতে ভুলবেন না, কারণ এই পরিবর্তনগুলো অ-ল্যাটিন ভাষাগুলোতে আপনার UI-কে প্রভাবিত করতে পারে।

উন্নত জাপানি টেক্সট র্যাপিং
অ্যান্ড্রয়েড ১৩ থেকে, আরও পরিমার্জিত ও পাঠযোগ্য জাপানি অ্যাপ্লিকেশনের জন্য, টেক্সটভিউগুলো অক্ষরের পরিবর্তে বুনসেৎসু (শব্দের ক্ষুদ্রতম একক যা স্বাভাবিক শোনায়) বা বাক্যাংশ দ্বারা টেক্সটকে র্যাপ করতে পারে। টেক্সটভিউতে android:lineBreakWordStyle="phrase" ব্যবহার করে আপনি এই র্যাপিংয়ের সুবিধা নিতে পারেন।

ইউনিকোড লাইব্রেরি আপডেট
অ্যান্ড্রয়েড ১৩-এ ইউনিকোড আইসিইউ ৭০ , ইউনিকোড সিএলডিআর ৪০ এবং ইউনিকোড ১৪.০- তে অন্তর্ভুক্ত সর্বশেষ উন্নতি, সংশোধন এবং পরিবর্তনগুলো যোগ করা হয়েছে।
এখানে কয়েকটি উল্লেখযোগ্য পরিবর্তন তুলে ধরা হলো:
- যখন কোনো অনুবাদ সংস্থান উপলব্ধ থাকে না, তখন English (United Kingdom)
en‑GBপরিবর্তে English (Canada)en‑CAএবং English (Republic of the Philippines)en‑PHউভয়ই English (United States)enঅনুবাদ সংস্থান ব্যবহার করে। - স্প্যানিশ
es, ইতালীয়it, পর্তুগিজptএবং পর্তুগিজ (পর্তুগাল)pt‑PTএর জন্যmanyবিভাগটি চালু করা হয়েছে। CLDR v38- এ প্রবর্তিত ফরাসি ভাষার মতোই, এটি বিপুল সংখ্যার ক্ষেত্রে ব্যবহৃত হয়।
রঙিন ভেক্টর ফন্ট

অ্যান্ড্রয়েড ১৩ থেকে, সিস্টেমে COLR ভার্সন ১ (COLRv1) ফন্টের জন্য রেন্ডারিং সাপোর্ট অন্তর্ভুক্ত করা হয়েছে এবং সিস্টেম ইমোজিগুলোকেও COLRv1 ফরম্যাটে আপডেট করা হয়েছে। COLRv1 হলো একটি অত্যন্ত কম্প্যাক্ট ফন্ট ফরম্যাট যা যেকোনো আকারে দ্রুত এবং স্পষ্টভাবে রেন্ডার হয়।
বেশিরভাগ অ্যাপের ক্ষেত্রে, সিস্টেম সবকিছু সামলে নেয় এবং COLRv1 স্বাভাবিকভাবেই কাজ করে। তবে, যদি আপনার অ্যাপ নিজস্ব টেক্সট রেন্ডারিং ব্যবস্থা প্রয়োগ করে এবং সিস্টেমের ফন্ট ব্যবহার করে, তাহলে আমরা ইমোজি রেন্ডারিং পরীক্ষা করার পরামর্শ দিই।
COLRv1 সম্পর্কে আরও জানতে, নিম্নলিখিত উৎসগুলো দেখুন:
- ক্রোম ডেভেলপারদের ব্লগ ঘোষণা
- ক্রোমে COLRv1 কালার ভেক্টর ফন্ট শিপিং (ভিডিও)
- COLR টেবিলের স্পেসিফিকেশন
দ্রুত সেটিংস প্লেসমেন্ট এপিআই
নোটিফিকেশন শেডের কুইক সেটিংস হলো ব্যবহারকারীদের জন্য অ্যাপের বাইরে না গিয়েই সেটিংস পরিবর্তন করা বা দ্রুত কোনো পদক্ষেপ নেওয়ার একটি সুবিধাজনক উপায়। যেসব অ্যাপ কাস্টম টাইলস ব্যবহারের সুযোগ দেয়, তাদের জন্য আমরা কুইক সেটিংসে টাইলস খুঁজে বের করা এবং যোগ করা আরও সহজ করে দিচ্ছি। একটি নতুন টাইল প্লেসমেন্ট এপিআই (API) ব্যবহার করে, আপনার অ্যাপ এখন ব্যবহারকারীকে সরাসরি সক্রিয় কুইক সেটিংস টাইলসের তালিকায় আপনার কাস্টম টাইল যোগ করার জন্য অনুরোধ করতে পারে। একটি নতুন সিস্টেম ডায়ালগ ব্যবহারকারীকে আপনার অ্যাপ থেকে বের না হয়েই এক ধাপে টাইলটি যোগ করার সুযোগ দেয়, যার জন্য টাইল যোগ করতে কুইক সেটিংসে যাওয়ার প্রয়োজন হয় না।

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

ভবিষ্যদ্বাণীমূলক পিছনের অঙ্গভঙ্গি
অ্যান্ড্রয়েড ১৩-এ ফোন, বড় স্ক্রিন এবং ফোল্ডেবল ডিভাইসের মতো অ্যান্ড্রয়েড ডিভাইসগুলোর জন্য একটি প্রেডিক্টিভ ব্যাক জেসচার চালু করা হয়েছে। এই ফিচারটি সমর্থন করার জন্য আপনাকে আপনার অ্যাপটি আপডেট করতে হবে।
বিস্তারিত ডকুমেন্টেশন দেখতে, “Update your app to support a predictive back gesture” দেখুন। এছাড়াও আপনি আমাদের কোডল্যাবটি ব্যবহার করে দেখতে পারেন।
ব্লুটুথ এলই অডিও
লো এনার্জি (LE) অডিও হলো ব্লুটুথ ক্লাসিকের বিকল্প হিসেবে তৈরি একটি ওয়্যারলেস অডিও ব্যবস্থা, যা নির্দিষ্ট কিছু ব্যবহারের ক্ষেত্র এবং সংযোগ বিন্যাসকে সক্ষম করে। এটি ব্যবহারকারীদের বন্ধু ও পরিবারের সাথে তাদের অডিও শেয়ার ও সম্প্রচার করতে, অথবা তথ্য, বিনোদন বা সহজলভ্যতার জন্য পাবলিক ব্রডকাস্টে সাবস্ক্রাইব করার সুযোগ দেয়। এটি এমনভাবে ডিজাইন করা হয়েছে যাতে ব্যবহারকারীরা ব্যাটারির চার্জ খরচ না করেই উচ্চ মানের অডিও পেতে পারেন এবং ব্লুটুথ ক্লাসিকের তুলনায় বিভিন্ন ব্যবহারের ক্ষেত্রের মধ্যে নির্বিঘ্নে পরিবর্তন করতে পারেন। অ্যান্ড্রয়েড ১৩ থেকে সিস্টেমে LE অডিওর জন্য বিল্ট-ইন সাপোর্ট রয়েছে, তাই ডেভেলপাররা সামঞ্জস্যপূর্ণ ডিভাইসগুলোতে এই সুবিধাগুলো বিনামূল্যে পেয়ে থাকেন।
মিডি ২.০
অ্যান্ড্রয়েড ১৩ থেকে সিস্টেমে MIDI 2.0 স্ট্যান্ডার্ডের সাপোর্ট অন্তর্ভুক্ত করা হয়েছে, যার মধ্যে USB-এর মাধ্যমে MIDI 2.0 হার্ডওয়্যার সংযোগ করার সুবিধাও রয়েছে। এই স্ট্যান্ডার্ডটি কন্ট্রোলারের জন্য বর্ধিত রেজোলিউশন, অ-পাশ্চাত্য স্বরবিন্যাসের জন্য উন্নততর সাপোর্ট এবং প্রতি-নোট কন্ট্রোলার ব্যবহার করে আরও অভিব্যক্তিপূর্ণ পারফরম্যান্সের মতো বৈশিষ্ট্য প্রদান করে।
স্প্ল্যাশ স্ক্রিনের কার্যকারিতা উন্নত করা হয়েছে
অ্যান্ড্রয়েড ১৩ স্প্ল্যাশ স্ক্রিন এপিআই-তে অ্যানিমেটেড স্প্ল্যাশ স্ক্রিনের কার্যকারিতা উন্নত করে:
সিস্টেমটি সরাসরি
AnimatedVectorDrawableথেকে অ্যানিমেশনের সময়কাল অনুমান করে। অ্যান্ড্রয়েড ১৩-এর আগে, সরাসরিwindowSplashScreenAnimationDurationসেট করতে হতো।অ্যান্ড্রয়েড ১৩ এবং তার পরবর্তী সংস্করণগুলিতে আপনার অ্যাপ স্প্ল্যাশ স্ক্রিনে আইকনটি সর্বদা প্রদর্শন করবে কিনা, সে বিষয়ে আরও বেশি নিয়ন্ত্রণ পেতে নতুন
windowSplashScreenBehaviorঅ্যাট্রিবিউটটি ব্যবহার করুন।
বিস্তারিত ডকুমেন্টেশন দেখতে, স্প্ল্যাশ স্ক্রিন দেখুন।
ART অপ্টিমাইজেশন
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং এর পরবর্তী সংস্করণগুলোতে, ART নেটিভ কোডে প্রবেশ এবং প্রস্থানকে অনেক দ্রুততর করে, এবং JNI কলগুলো এখন ২.৫ গুণ পর্যন্ত দ্রুততর। রানটাইম রেফারেন্স প্রসেসিংকেও নতুন করে সাজানো হয়েছে যাতে এটি মূলত নন-ব্লকিং হয়, যা জ্যাঙ্ক আরও কমিয়ে দেয়। এছাড়াও, আপনি Reference.refersTo() পাবলিক এপিআই ব্যবহার করে অপ্রাপ্য অবজেক্টগুলোকে আরও দ্রুত পুনরুদ্ধার করতে পারবেন, এবং আপনি লক্ষ্য করবেন যে অপ্টিমাইজড ক্লাস ও মেথড লুকআপের কারণে ইন্টারপ্রেটারটি এখন আরও দ্রুত কাজ করে। ART ইনস্টলের সময় আরও বেশি বাইট-কোড ভেরিফিকেশন করে, যা রানটাইমে ভেরিফিকেশনের ব্যয় এড়িয়ে চলে এবং অ্যাপ চালু হওয়ার সময়কে দ্রুত রাখে।
গোপনীয়তা এবং নিরাপত্তা
প্রসঙ্গ-নিবন্ধিত রিসিভারগুলির নিরাপদ রপ্তানি
রানটাইম রিসিভারগুলোকে আরও নিরাপদ করতে, অ্যান্ড্রয়েড ১৩-এ এই সুবিধাটি চালু করা হয়েছে যে, আপনার অ্যাপ নির্দিষ্ট করে দিতে পারবে কোনো রেজিস্টার্ড ব্রডকাস্ট রিসিভার এক্সপোর্ট করা হবে কি না এবং ডিভাইসের অন্যান্য অ্যাপের কাছে তা দৃশ্যমান হবে কি না। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলোতে, ডিভাইসের যেকোনো অ্যাপ একটি ডাইনামিক্যালি-রেজিস্টার্ড রিসিভারে অসুরক্ষিত ব্রডকাস্ট পাঠাতে পারত, যদি না সেই রিসিভারটি কোনো সিগনেচার পারমিশন দ্বারা সুরক্ষিত থাকত।
এই এক্সপোর্টিং কনফিগারেশনটি সেইসব অ্যাপে উপলব্ধ, যেগুলি নিম্নলিখিত কাজগুলির মধ্যে অন্তত একটি করে থাকে:
- AndroidX Core লাইব্রেরির 1.9.0 বা তার উচ্চতর সংস্করণের
ContextCompatক্লাসটি ব্যবহার করুন। - অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে লক্ষ্য করুন।
ফটো পিকার
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং এর পরবর্তী সংস্করণগুলোতে একটি ফটো পিকার অভিজ্ঞতা অন্তর্ভুক্ত রয়েছে। যখন আপনার অ্যাপ ফটো পিকার চালু করে, তখন ব্যবহারকারীরা আপনার অ্যাপকে সম্পূর্ণ মিডিয়া লাইব্রেরি দেখার অ্যাক্সেস না দিয়ে, প্রোফাইল পিকচারের মতো নির্দিষ্ট কিছু ছবি ও ভিডিও আপনার অ্যাপে শেয়ার করার জন্য নির্বাচন করে। ব্যবহারকারীর ফটো এবং ভিডিও অ্যাক্সেস করার জন্য এটিই প্রস্তাবিত পদ্ধতি।
ফটো পিকার ব্যবহারকারীদের জন্য উন্নততর গোপনীয়তা প্রদান করে, কারণ এর জন্য আপনার অ্যাপকে কোনো রানটাইম পারমিশন ঘোষণা করতে হয় না। এছাড়াও, ফটো পিকার অ্যাপগুলোর জন্য একটি বিল্ট-ইন ও প্রমিত ইউজার ইন্টারফেস (UI) প্রদান করে, যা ব্যবহারকারীর অভিজ্ঞতাকে আরও সামঞ্জস্যপূর্ণ করে তোলে।
কাছাকাছি ওয়াই-ফাই ডিভাইসগুলির জন্য নতুন রানটাইম অনুমতি
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) NEARBY_DEVICES পারমিশন গ্রুপে একটি নতুন রানটাইম পারমিশন চালু করেছে, যা সেইসব অ্যাপের জন্য যারা ওয়াই-ফাই এর মাধ্যমে কাছাকাছি অ্যাক্সেস পয়েন্টের সাথে কোনো ডিভাইসের সংযোগ পরিচালনা করে। এই অ্যাপগুলোকে বিভিন্ন ওয়াই-ফাই এপিআই কল করার সময় অবশ্যই নতুন পারমিশন, NEARBY_WIFI_DEVICES , ঘোষণা করতে হবে। এছাড়াও, যতক্ষণ পর্যন্ত অ্যাপগুলো ওয়াই-ফাই এপিআই থেকে ভৌতিক অবস্থান নির্ণয় না করে, ততক্ষণ পর্যন্ত অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণ টার্গেট করার সময় তাদের ACCESS_FINE_LOCATION পারমিশন ঘোষণা করার প্রয়োজন নেই।
কাছাকাছি থাকা ওয়াই-ফাই ডিভাইসগুলোর অনুমতি সম্পর্কে আরও জানুন।
সঠিক অ্যালার্ম ব্যবহার করার নতুন অনুমতি
আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করে, তাহলে আপনি USE_EXACT_ALARM পারমিশনটি ব্যবহার করতে পারবেন, যা আপনার অ্যাপকে স্বয়ংক্রিয়ভাবে প্রদান করা হয়। তবে, এই পারমিশনটি ব্যবহার করার জন্য আপনার অ্যাপকে অবশ্যই নিম্নলিখিত শর্তগুলোর মধ্যে অন্তত একটি পূরণ করতে হবে:
- আপনার অ্যাপটি একটি অ্যালার্ম ঘড়ি অ্যাপ অথবা একটি টাইমার অ্যাপ।
- আপনার অ্যাপটি একটি ক্যালেন্ডার অ্যাপ, যা আসন্ন ইভেন্টগুলোর নোটিফিকেশন দেখায়।
যদি আপনার অ্যাপ সুনির্দিষ্ট অ্যালার্ম সেট করে কিন্তু পূর্ববর্তী তালিকায় দেখানো কোনো শর্তই পূরণ না করে, তাহলে এর পরিবর্তে SCHEDULE_EXACT_ALARM পারমিশনটি ঘোষণা করুন এবং ব্যবহারকারী আপনার অ্যাপে অ্যাক্সেস অস্বীকার করলে সেই পরিস্থিতির জন্য প্রস্তুত থাকুন।
ডেভেলপার দ্বারা অবনমনযোগ্য অনুমতি
অ্যান্ড্রয়েড ১৩ থেকে, আপনার অ্যাপ অব্যবহৃত রানটাইম পারমিশনগুলোর অ্যাক্সেস প্রত্যাহার করতে পারবে। এই এপিআই আপনার অ্যাপকে নিম্নলিখিতের মতো গোপনীয়তা-বর্ধক কাজগুলো সম্পাদন করার সুযোগ দেয়:
- অব্যবহৃত অনুমতিগুলো মুছে ফেলুন।
- অনুমতি সংক্রান্ত সর্বোত্তম অনুশীলনগুলি মেনে চলুন, যা ব্যবহারকারীর আস্থা বাড়ায়। আপনি স্বতঃপ্রণোদিতভাবে প্রত্যাহার করা অনুমতিগুলি প্রদর্শন করে ব্যবহারকারীদের একটি ডায়ালগ দেখানোর কথা বিবেচনা করতে পারেন।
এপিকে স্বাক্ষর স্কিম v3.1
অ্যান্ড্রয়েড ১৩-এ এপিকে সিগনেচার স্কিম ভি৩.১-এর জন্য সমর্থন যোগ করা হয়েছে, যা বিদ্যমান এপিকে সিগনেচার স্কিম ভি৩-এর একটি উন্নত সংস্করণ। এই স্কিমটি রোটেশন সংক্রান্ত এপিকে সিগনেচার স্কিম ভি৩-এর কিছু পরিচিত সমস্যার সমাধান করে । বিশেষত, ভি৩.১ সিগনেচার স্কিমটি এসডিকে ভার্সন টার্গেটিং সমর্থন করে, যা রোটেশনকে প্ল্যাটফর্মের পরবর্তী কোনো রিলিজকে টার্গেট করার সুযোগ দেয়।
v3.1 সিগনেচার স্কিমটি এমন একটি ব্লক আইডি ব্যবহার করে যা 12L বা তার নিচের সংস্করণে স্বীকৃত নয়। তাই, প্ল্যাটফর্মটি নিম্নলিখিত সাইনার আচরণ প্রয়োগ করে:
- যেসব ডিভাইসে অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণ চলে, সেগুলোতে v3.1 ব্লকের রোটেটেড সাইনারটি ব্যবহৃত হয়।
- যেসব ডিভাইসে অ্যান্ড্রয়েডের পুরোনো সংস্করণ চলে, সেগুলো রোটেটেড সাইনারকে উপেক্ষা করে এবং এর পরিবর্তে v3.0 ব্লকের আসল সাইনারটি ব্যবহার করে।
যেসব অ্যাপ এখনও তাদের সাইনিং কী পরিবর্তন করেনি, তাদের জন্য কোনো অতিরিক্ত পদক্ষেপের প্রয়োজন নেই। যখনই এই অ্যাপগুলো কী পরিবর্তন করার সিদ্ধান্ত নেবে, সিস্টেম ডিফল্টরূপে v3.1 সিগনেচার স্কিমটি প্রয়োগ করবে।
যেসব অ্যাপ ইতিমধ্যেই তাদের সাইনিং কী পরিবর্তন করেছে এবং v3.0 সাইনিং ব্লকে সেটি ব্যবহার করা চালিয়ে যেতে চায়, তাদের apksigner ইনভোকেশন আপডেট করতে হবে:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...যেখানে API_LEVEL ৩২ বা তার কম।
Keystore এবং KeyMint-এ উন্নততর ত্রুটি প্রতিবেদন ব্যবস্থা
যেসব অ্যাপ কী (key) তৈরি করে, তাদের জন্য Keystore এবং KeyMint এখন আরও বিস্তারিত ও নির্ভুল ত্রুটির নির্দেশক প্রদান করে। আমরা java.security.ProviderException এর অধীনে একটি এক্সেপশন ক্লাস হায়ারার্কি যুক্ত করেছি, যেখানে অ্যান্ড্রয়েড-নির্দিষ্ট এক্সেপশনগুলো রয়েছে। এই এক্সেপশনগুলোতে Keystore/KeyMint-এর এরর কোড এবং ত্রুটিটি পুনরায় চেষ্টাযোগ্য কিনা, তা অন্তর্ভুক্ত থাকে। নতুন এক্সেপশনগুলো থ্রো করার জন্য আপনি কী জেনারেশন এবং ব্যবহারের (সাইনিং, এনক্রিপশন) মেথডগুলোও পরিবর্তন করতে পারেন। এই উন্নত এরর রিপোর্টিং শুধু কী জেনারেশনের মধ্যেই সীমাবদ্ধ নয় এবং কী জেনারেশন পুনরায় চেষ্টা করার জন্য আপনার যা প্রয়োজন, তা এখন এটি আপনাকে দেবে।
ট্যাবলেট এবং বড় স্ক্রিন সমর্থন
অ্যান্ড্রয়েড ১২ এবং ১২এল ফিচার ড্রপে প্রবর্তিত ট্যাবলেট অপটিমাইজেশনগুলোর ওপর ভিত্তি করে অ্যান্ড্রয়েড ১৩ তৈরি করা হয়েছে—যার মধ্যে রয়েছে সিস্টেম ইউআই-এর জন্য অপটিমাইজেশন, উন্নত মাল্টিটাস্কিং এবং উন্নত কম্প্যাটিবিলিটি মোড। আপনার পরীক্ষার অংশ হিসেবে, নিশ্চিত করুন যে আপনার অ্যাপগুলো ট্যাবলেট এবং অন্যান্য বড় পর্দার ডিভাইসে সবচেয়ে ভালোভাবে দেখায়।
নতুন কী আছে এবং কী পরীক্ষা করতে হবে সে সম্পর্কে আরও তথ্যের জন্য, ট্যাবলেট ও বড় পর্দার সহায়তা পৃষ্ঠাটি দেখুন।
গ্রাফিক্স
প্রোগ্রামেবল শেডার

অ্যান্ড্রয়েড ১৩ থেকে, সিস্টেমে প্রোগ্রামেবল RuntimeShader ) অবজেক্টের সাপোর্ট অন্তর্ভুক্ত করা হয়েছে, যার আচরণ অ্যান্ড্রয়েড গ্রাফিক্স শেডিং ল্যাঙ্গুয়েজ ( AGSL ) ব্যবহার করে সংজ্ঞায়িত করা হয়। AGSL-এর সিনট্যাক্সের বেশিরভাগই GLSL-এর সাথে মিলে যায়, কিন্তু এটি অ্যান্ড্রয়েড রেন্ডারিং ইঞ্জিনের মধ্যে কাজ করে অ্যান্ড্রয়েডের ক্যানভাসে পেইন্টিং কাস্টমাইজ করতে এবং ভিউ কন্টেন্ট ফিল্টার করতে। অ্যান্ড্রয়েড অভ্যন্তরীণভাবে এই শেডারগুলো ব্যবহার করে রিপল ইফেক্ট , ব্লার এবং স্ট্রেচ ওভারস্ক্রোল বাস্তবায়ন করে। অ্যান্ড্রয়েড ১৩ এবং এর পরবর্তী সংস্করণগুলো আপনাকে আপনার অ্যাপের জন্য একই ধরনের উন্নত ইফেক্ট তৈরি করার সুযোগ দেয়।
কোরিওগ্রাফারের উন্নতি
অ্যান্ড্রয়েড ১৩-এ Choreographer এবং ASurfaceControl জন্য পাবলিক এপিআই মেথড চালু করা হয়েছে, যা অ্যাপগুলোকে সম্ভাব্য ফ্রেম টাইমলাইন সম্পর্কে আরও তথ্য দেয় এবং SurfaceFlinger কে ফ্রেম লাইফসাইকেল সম্পর্কে আরও প্রাসঙ্গিক তথ্য প্রদান করে। আগের মতোই, অ্যাপগুলো Choreographer এ একটি কলব্যাক পোস্ট করে ফ্রেম টাইমলাইনের তথ্য পেতে পারে। অ্যান্ড্রয়েড ১৩-এ (এপিআই লেভেল ৩৩), Choreographer একাধিক সম্ভাব্য প্রেজেন্টেশন টাইম এবং সেগুলোর সংশ্লিষ্ট ফ্রেম ডেডলাইন রিটার্ন করে। অ্যাপগুলো প্রেজেন্টেশন টাইম বেছে নিতে পারে এবং পরবর্তীতে SurfaceFlinger সেই পছন্দের কথা জানাতে পারে । এরপর SurfaceFlinger কাঙ্ক্ষিত প্রেজেন্টেশন টাইমের আগে ট্রানজ্যাকশন প্রয়োগ করার বা বাফার ল্যাচ করার চেষ্টা করে না।

ক্যামেরা
HDR ভিডিও ক্যাপচার
অ্যান্ড্রয়েড ১৩ থেকে, Camera2 API-গুলো হাই ডাইনামিক রেঞ্জ (HDR) ভিডিও ক্যাপচার সমর্থন করে, যা আপনাকে আপনার ক্যামেরা ব্যবহার করে HDR ভিডিও কন্টেন্ট প্রিভিউ এবং রেকর্ড করতে সক্ষম করে। স্ট্যান্ডার্ড ডাইনামিক রেঞ্জ (SDR)-এর তুলনায়, HDR আরও বিস্তৃত রঙের পরিসর প্রদান করে এবং লুমিন্যান্স উপাদানের ডাইনামিক রেঞ্জ বৃদ্ধি করে (বর্তমান ১০০ cd/m2 থেকে হাজার হাজার cd/m2 পর্যন্ত)। এর ফলে ভিডিওর মান বাস্তব জীবনের সাথে আরও বেশি মিলে যায়, যেখানে থাকে আরও সমৃদ্ধ রঙ, উজ্জ্বল হাইলাইট এবং গাঢ় শ্যাডো।
HDR ভিডিও ক্যাপচার সম্পর্কে আরও জানতে, HDR ভিডিও ক্যাপচার ডকুমেন্টেশন দেখুন।
মিডিয়া
স্থানিক অডিও
স্পেশিয়াল অডিও হলো একটি ইমারসিভ অডিও অভিজ্ঞতা যা আপনার ব্যবহারকারীদের জন্য মিডিয়া কন্টেন্টকে আরও বাস্তবসম্মত করে তোলে। এই ফিচারটি কীভাবে ইন্টিগ্রেট করবেন সে সম্পর্কে বিস্তারিত জানতে আমাদের স্পেশিয়াল অডিও ডকুমেন্টেশন দেখুন।
প্রত্যাশিত অডিও রাউটিং
মিডিয়া অ্যাপগুলোকে তাদের অডিও কীভাবে রাউট করা হবে তা শনাক্ত করতে সাহায্য করার জন্য, অ্যান্ড্রয়েড ১৩ AudioManager ক্লাসে অডিও রাউট এপিআই (API) চালু করেছে। getAudioDevicesForAttributes() এপিআই আপনাকে নির্দিষ্ট অডিওটি প্লে করার জন্য ব্যবহৃত হতে পারে এমন ডিভাইসগুলোর একটি তালিকা পেতে সাহায্য করে, এবং getDirectProfilesForAttributes() এপিআই আপনার অডিও স্ট্রিমটি সরাসরি প্লে করা যাবে কিনা তা বুঝতে সাহায্য করে। আপনার অডিও ট্র্যাকের জন্য সেরা AudioFormat নির্ধারণ করতে এই এপিআইগুলো ব্যবহার করুন।
প্রবেশগম্যতা
অডিও বর্ণনা
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) একটি নতুন সিস্টেম-ব্যাপী অ্যাক্সেসিবিলিটি প্রেফারেন্স চালু করেছে, যা ব্যবহারকারীদের সমস্ত অ্যাপ জুড়ে অডিও ডেসক্রিপশন সক্রিয় করার সুযোগ দেয়। অডিও ডেসক্রিপশন হলো একটি অতিরিক্ত ন্যারেটিভ ট্র্যাক, যেখানে একজন বর্ণনাকারী প্রেজেন্টেশন চলাকালীন কথা বলেন এবং অডিওর স্বাভাবিক বিরতির সময় স্ক্রিনে কী ঘটছে তা বর্ণনা করেন। অ্যাপগুলো isAudioDescriptionRequested() ব্যবহার করে ব্যবহারকারীর অডিও ডেসক্রিপশন ট্র্যাকের প্রেফারেন্স অনুসরণ করতে পারে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
কোটলিন
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
জাভা
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
অ্যাপগুলি AccessbilityManager এ একটি লিসেনার যোগ করে ব্যবহারকারীর পছন্দের পরিবর্তন নিরীক্ষণ করতে পারে:
কোটলিন
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
জাভা
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
মূল কার্যকারিতা
OpenJDK 11 আপডেট
অ্যাপ্লিকেশন এবং প্ল্যাটফর্ম ডেভেলপারদের জন্য লাইব্রেরি আপডেট এবং জাভা ১১ ল্যাঙ্গুয়েজ সাপোর্টের মাধ্যমে, অ্যান্ড্রয়েড ১৩ ওপেনজেডিকে ১১ এলটিএস রিলিজের সাথে সামঞ্জস্য রেখে অ্যান্ড্রয়েডের কোর লাইব্রেরিগুলোকে নতুন করে সাজানোর কাজ শুরু করেছে। অ্যান্ড্রয়েড ১৩-এ প্রবর্তিত কোর লাইব্রেরির পরিবর্তনগুলো এআরটি মেইনলাইন মডিউলের একটি গুগল প্লে সিস্টেম আপডেটের মাধ্যমে অ্যান্ড্রয়েড ১২ ডিভাইসগুলোতেও উপলব্ধ হবে।
অ্যান্ড্রয়েড ১৩-এর কোর লাইব্রেরিগুলোতে নিম্নলিখিত পরিবর্তনগুলো অন্তর্ভুক্ত করা হয়েছে:
- লোকাল ভেরিয়েবল এবং ল্যাম্বডার প্যারামিটার হিসেবে
varকীওয়ার্ডের সমর্থন। String ক্লাসের নতুন মেথডসমূহ:
-
isBlank() -
lines() -
repeat() -
strip() -
stripLeading() -
stripTrailing()
-
একটি কালেকশনকে অ্যারেতে রূপান্তর করা সহজ করার জন্য
Collection.toArray(IntFunction)এর সমর্থন।java.utilক্লাসOptional,OptionalDouble,OptionalInt, এবংOptionalLongifPresentOrElse(),isEmpty(),orElseThrow(), এবংstream()এর সমর্থন।SocketOptionsজন্য বর্ধিত সমর্থন, যার মধ্যে সকেটের পুনঃব্যবহারও অন্তর্ভুক্ত।NullReader,NullWriter,InputStream,OutputStreamএবংtransferTo()হলোReaderএমন সব কার্যকারিতা যা পঠিত অক্ষরগুলোকে একটিWriterকাছে স্থানান্তর করে।Charsetsব্যবহার করে ইউআরএল এনকোডিং ও ডিকোডিং করার কার্যকারিতা যোগ করা হয়েছে।FileReader,FileWriter,PrintStreamএবংPrintWriterজন্যCharsetকার্যকারিতা।ByteArrayInputবাOutputStreamএবংInputবাOutputStreamজন্য নতুনtransferTo(),readNBytes(),readAllBytes(), এবংwriteBytes()ফাংশন।java.lang.invoke.VarHandleএর জন্য রানটাইম এবং কম্পাইলার সমর্থন।অভ্যন্তরীণভাবে
VarHandleব্যবহার করেjava.util.concurrentOpenJDK 11 API অনুযায়ী আপডেট করে।
জাভা এবং ওপেনজেডিকে হলো ওরাকল এবং/অথবা এর সহযোগী প্রতিষ্ঠানগুলোর ট্রেডমার্ক বা নিবন্ধিত ট্রেডমার্ক।