ফিচার ও API ওভারভিউ

Android 13-এ ডেভেলপারদের জন্য দারুণ নতুন ফিচার ও API নিয়ে আসা হয়েছে। নিচের বিভাগগুলি আপনাকে অ্যাপের ফিচার সম্পর্কে জানতে এবং সংশ্লিষ্ট API ব্যবহার শুরু করতে সাহায্য করবে।

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

ডেভেলপার প্রোডাক্টিভিটি ও টুল

থিমযুক্ত অ্যাপ আইকন

ব্যবহারকারী থিমযুক্ত অ্যাপ আইকন বেছে নিচ্ছেন
Android 13-এ থিমযুক্ত অ্যাপ আইকন চালু করা

Android 13 থেকে শুরু করে, আপনি থিমযুক্ত অ্যাপ আইকন চালু করতে পারবেন। এই ফিচারের মাধ্যমে, কাজ করে এমন Android লঞ্চারে অ্যাপ আইকন টিন্ট করা হয় যাতে ব্যবহারকারীর বেছে নেওয়া ওয়ালপেপার এবং অন্যান্য থিমের রং ব্যবহার করা যায়।

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

নিম্নলিখিত যেকোনও পরিস্থিতিতে হোম স্ক্রিনে থিমযুক্ত অ্যাপ আইকন দেখা যায় না—পরিবর্তে অ্যাডাপ্টিভ বা স্ট্যান্ডার্ড অ্যাপ আইকন দেখা যায়:

  • ব্যবহারকারী থিমযুক্ত অ্যাপ আইকন চালু না করলে
  • আপনার অ্যাপে যদি মনোক্রোম্যাটিক অ্যাপ আইকন না থাকে
  • লঞ্চারে থিমযুক্ত অ্যাপ আইকন কাজ না করলে

আরও বিবরণ ও নির্দেশাবলীর জন্য, অ্যাডাপ্টিভ আইকন দেখুন।

প্রতি অ্যাপে ভাষার অভিরুচি

সিস্টেম সেটিংসে প্রতিটি অ্যাপের ভাষা

অনেক ক্ষেত্রে, বহুভাষী ব্যবহারকারীরা তাদের সিস্টেমের ভাষা একটি ভাষায় সেট করেন—যেমন ইংরেজি—কিন্তু তারা নির্দিষ্ট অ্যাপের জন্য অন্যান্য ভাষা বেছে নিতে চান, যেমন ডাচ, চীনা বা হিন্দি। এইসব ব্যবহারকারীকে অ্যাপ যাতে আরও ভালো অভিজ্ঞতা প্রদান করতে পারে, সেই জন্য Android 13-এ একাধিক ভাষা কাজ করে এমন অ্যাপের জন্য নিম্নলিখিত ফিচার নিয়ে আসা হয়েছে:

  • সিস্টেম সেটিংস: একটি সেন্ট্রালাইজড লোকেশন যেখানে ব্যবহারকারীরা প্রতিটি অ্যাপের জন্য একটি পছন্দের ভাষা বেছে নিতে পারেন।

    আপনার অ্যাপে একাধিক ভাষা কাজ করে তা সিস্টেমকে জানাতে, অ্যাপের ম্যানিফেস্টে android:localeConfig অ্যাট্রিবিউট ঘোষণা করতে হবে। আরও জানতে, রিসোর্স ফাইল তৈরি করা এবং আপনার অ্যাপের ম্যানিফেস্ট ফাইলে এটি ঘোষণা করার জন্য নির্দেশাবলী দেখুন।

  • অতিরিক্ত API: এইসব পাবলিক API, যেমন setApplicationLocales() এবং getApplicationLocales() পদ্ধতি LocaleManager-এ, রানটাইমে সিস্টেমের ভাষা থেকে আলাদা ভাষা সেট করতে অ্যাপকে অনুমতি দেয়।

    এইসব API সিস্টেম সেটিংসের সাথে অটোমেটিক সিঙ্ক করে; তাই, যেসব অ্যাপ কাস্টম ইন-অ্যাপ ভাষা বাছাইকারী তৈরি করতে এইসব API ব্যবহার করে, তারা নিশ্চিত করবে যে তাদের ব্যবহারকারীরা যেখানেই তাদের পছন্দের ভাষা বেছে নিন না কেন, তারা যেন একই ধরনের ব্যবহারকারীর অভিজ্ঞতা পান। এছাড়াও, পাবলিক API আপনাকে বয়লারপ্লেট কোডের পরিমাণ কমাতে সাহায্য করে, এগুলি স্প্লিট APK-তে কাজ করে এবং অ্যাপ-লেভেলে ব্যবহারকারীর ভাষা সেটিংস স্টোর করার জন্য অ্যাপের জন্য অটোমেটিক ব্যাক-আপ-এ কাজ করে।

    Android-এর আগের ভার্সনের সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য, AndroidX-এও সমতুল্য API উপলভ্য। আমরা সাজেস্ট করি যে আপনি API ব্যবহার করুন যা Appcompat 1.6.0-beta01 বা তার পরবর্তী ভার্সনে যোগ করা হয়েছে।

যেসব অ্যাপে একাধিক ভাষা কাজ করে না, সেগুলিতে এই পরিবর্তনের কোনও প্রভাব পড়বে না।

উন্নত টেক্সট ও ভাষা সংক্রান্ত সহায়তা

Android 13-এ টেক্সট ও ভাষা সংক্রান্ত উন্নতি সহ বিভিন্ন ফিচার অন্তর্ভুক্ত আছে যা আপনাকে আরও উন্নত অভিজ্ঞতা প্রদান করতে সাহায্য করে, যা নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে:

আরও দ্রুত হাইফেনেশন

হাইফেনেশন র‍্যাপ করা টেক্সট পড়া সহজ করে তোলে এবং আপনার UI-কে আরও অ্যাডাপ্টিভ করতে সাহায্য করে। Android 13 থেকে শুরু করে, হাইফেনেশন পারফর্ম্যান্স ২০০% পর্যন্ত অপ্টিমাইজ করা হয়েছে যাতে আপনি রেন্ডারিং পারফর্ম্যান্সে প্রায় কোনও প্রভাব ছাড়াই আপনার TextView-এ এটি চালু করতে পারেন। আরও দ্রুত হাইফেনেশন চালু করতে, setHyphenationFrequency()-এ fullFast বা normalFast ফ্রিকোয়েন্সি ব্যবহার করুন।

Text Conversion API

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

  1. সার্চ করা শব্দের ফোনেটিক উচ্চারণ হিসেবে হিরাগানা ইনপুট করুন (যেমন, কোনও জায়গা বা অ্যাপের নাম)
  2. হিরাগানা অক্ষরকে কাঞ্জিতে পরিবর্তন করতে কীবোর্ড ব্যবহার করুন
  3. কাঞ্জি অক্ষর ব্যবহার করে আবার সার্চ করুন
  4. অবশেষে তাদের সার্চ ফলাফল পান

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

ল্যাটিন নয় এমন স্ক্রিপ্টের জন্য উন্নত লাইনের উচ্চতা

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

Android 12-এ (উপরে) লাইনের উচ্চতা ক্লিপ করা হয়েছিল, যা এখন Android 13-এ (নিচে) আরও ভালভাবে পজিশন করা হয়েছে এবং ক্লিপ করা হয়নি।

উন্নত জাপানি টেক্সট র‍্যাপিং

Android 13 থেকে শুরু করে, TextViews, Bunsetsu (শব্দের সবচেয়ে ছোট ইউনিট যা শুনতে স্বাভাবিক লাগে) বা বাক্যাংশ অনুযায়ী টেক্সট র‍্যাপ করতে পারে, অক্ষরের পরিবর্তে, আরও পালিশ করা এবং পাঠযোগ্য জাপানি অ্যাপ্লিকেশনের জন্য। TextViews-এর সাথে android:lineBreakWordStyle="phrase" ব্যবহার করে আপনি এই র‍্যাপিংয়ের সুবিধা নিতে পারবেন।

জাপানি টেক্সট র‍্যাপিং, ফ্রেজ স্টাইল সহ (নিচে) এবং ছাড়া (উপরে)।

Unicode লাইব্রেরি আপডেট

Android 13-এ লেটেস্ট উন্নতি, সমাধান ও পরিবর্তন যোগ করা হয়েছে যা Unicode ICU 70, Unicode CLDR 40 এবং Unicode 14.0-এ অন্তর্ভুক্ত।

এখানে কয়েকটি উল্লেখযোগ্য পরিবর্তন দেওয়া হল:

  • ইংরেজি (কানাডা) en‑CA এবং ইংরেজি (ফিলিপিন্স প্রজাতন্ত্র) en‑PH উভয়ই ইংরেজি (যুক্তরাজ্য) en‑GB-এর পরিবর্তে অনুবাদ রিসোর্স উপলভ্য না থাকলে ইংরেজি (মার্কিন যুক্তরাষ্ট্র) en অনুবাদ রিসোর্স ব্যবহার করে।
  • many বহুবচন বিভাগটি স্প্যানিশ es, ইতালিয়ান it, পর্তুগিজ pt এবং পর্তুগিজ (পর্তুগাল) pt‑PT-এর জন্য চালু করা হয়েছে। CLDR v38-এ প্রবর্তিত ফরাসি ভাষার মতো, এটি বড় সংখ্যার জন্য ব্যবহৃত হয়।

কালার ভেক্টর ফন্ট

COLRv1 ভেক্টর ইমোজি (বাঁদিকে) এবং বিটম্যাপ ইমোজি (ডানদিকে)

Android 13 থেকে শুরু করে, সিস্টেমে COLR ভার্সন ১ (COLRv1) ফন্টের জন্য রেন্ডারিং সাপোর্ট অন্তর্ভুক্ত করা হয়েছে এবং সিস্টেম ইমোজি COLRv1 ফর্ম্যাটে আপডেট করা হয়েছে। COLRv1 হল একটি অত্যন্ত কমপ্যাক্ট ফন্ট ফর্ম্যাট যা যেকোনও সাইজে দ্রুত এবং স্পষ্টভাবে রেন্ডার করে।

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

COLRv1 সম্পর্কে আরও জানতে, নিম্নলিখিত রিসোর্স দেখুন:

দ্রুত সেটিংস প্লেসমেন্ট API

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

ব্যবহারকারী তার 'দ্রুত সেটিংস' মেনুতে টাইল যোগ করতে চান কিনা তা জানতে চেয়ে
          একটি ডায়ালগ।

ক্লিপবোর্ড প্রিভিউ

Android 13 থেকে শুরু করে, ক্লিপবোর্ডে কন্টেন্ট যোগ করা হলে সিস্টেম একটি স্ট্যান্ডার্ড ভিজ্যুয়াল কনফার্মেশন দেখায়। নতুন কনফার্মেশন নিম্নলিখিত কাজ করে:

  • কন্টেন্ট কপি করা হয়েছে কিনা তা কনফার্ম করে।
  • কপি করা কন্টেন্টের প্রিভিউ দেখায়।

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

কপি/পেস্ট উইজেট
ক্লিপবোর্ডে কন্টেন্ট প্রবেশ করলে নতুন UI দেখানো হয়।

আগের ধাপে ফিরে যাওয়া সংক্রান্ত পূর্বাভাসের জেসচার

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

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

ব্লুটুথ LE অডিও

লো এনার্জি (LE) অডিও হল ওয়্যারলেস অডিও যা ব্লুটুথ ক্লাসিকের পরিবর্তে ব্যবহার করা হয় এবং নির্দিষ্ট ব্যবহারের কেস ও কানেকশন টপোলজি চালু করে। এটি ব্যবহারকারীদের বন্ধু ও পরিবারের সাথে তাদের অডিও শেয়ার ও ব্রডকাস্ট করতে বা তথ্য, বিনোদন বা অ্যাক্সেসিবিলিটির জন্য পাবলিক ব্রডকাস্টে সাবস্ক্রাইব করতে দেয়। এটি এমনভাবে ডিজাইন করা হয়েছে যাতে ব্যবহারকারীরা ব্যাটারির আয়ু কমানো ছাড়াই হাই ফিডেলিটি অডিও শুনতে পান এবং বিভিন্ন ব্যবহারের ক্ষেত্রে নিরবচ্ছিন্নভাবে পাল্টাতে পারেন যা ব্লুটুথ ক্লাসিকের মাধ্যমে সম্ভব নয়। Android 13 থেকে শুরু করে, সিস্টেমে LE অডিওর জন্য বিল্ট-ইন সাপোর্ট অন্তর্ভুক্ত করা হয়েছে, তাই ডেভেলপাররা মানানসই ডিভাইসে ফ্রিতে এইসব সুবিধা পান।

MIDI 2.0

Android 13 থেকে শুরু করে, সিস্টেমে MIDI 2.0 স্ট্যান্ডার্ডের জন্য সহায়তা অন্তর্ভুক্ত করা হয়েছে, যার মধ্যে USB-এর মাধ্যমে MIDI 2.0 হার্ডওয়্যার কানেক্ট করার ক্ষমতাও রয়েছে। এই স্ট্যান্ডার্ডে কন্ট্রোলারের জন্য আরও বেশি রেজোলিউশন, ওয়েস্টার্ন নয় এমন ইনটোনেশনের জন্য আরও ভালো সহায়তা এবং প্রতি-নোট কন্ট্রোলার ব্যবহার করে আরও বেশি এক্সপ্রেসিভ পারফর্ম্যান্সের মতো ফিচার অফার করা হয়।

স্প্ল্যাশ স্ক্রিনের কার্যকারিতা উন্নত করা হয়েছে

Android 13, স্প্ল্যাশ স্ক্রিন API-তে অ্যানিমেটেড স্প্ল্যাশ স্ক্রিনের কার্যকারিতা উন্নত করে:

  • সিস্টেম সরাসরি AnimatedVectorDrawable থেকে অ্যানিমেশনের সময়সীমা অনুমান করে। Android 13-এর আগে, সরাসরি windowSplashScreenAnimationDuration সেট করা প্রয়োজন ছিল।

  • Android 13 এবং তার পরবর্তী ভার্সনে আপনার অ্যাপ সবসময় স্প্ল্যাশ স্ক্রিনে আইকন দেখাবে কিনা তা আরও ভালোভাবে নিয়ন্ত্রণ করতে নতুন windowSplashScreenBehavior অ্যাট্রিবিউট ব্যবহার করুন।

বিস্তারিত ডকুমেন্টেশন দেখতে, স্প্ল্যাশ স্ক্রিন দেখুন।

ART অপ্টিমাইজেশন

Android 13 (API লেভেল 33) এবং তার পরবর্তী ভার্সনে, ART নেটিভ কোডে এবং সেখান থেকে সুইচ করার প্রসেস অনেক দ্রুত করে তোলে, JNI কল এখন 2.5 গুণ পর্যন্ত দ্রুত হয়। রানটাইম রেফারেন্স প্রসেসিংও আবার করা হয়েছে যাতে এটি বেশিরভাগ ক্ষেত্রে নন-ব্লকিং হয়, যা আরও জ্যাঙ্ক কমায়। এছাড়াও, আপনি Reference.refersTo() পাবলিক API ব্যবহার করে নাগালের বাইরে থাকা অবজেক্ট আরও দ্রুত রিক্লেম করতে পারবেন এবং আপনি লক্ষ্য করবেন যে অপ্টিমাইজ করা ক্লাস ও মেথড লুকআপের জন্য ইন্টারপ্রেটার এখন আরও দ্রুত কাজ করছে। এছাড়াও, ART ইনস্টল করার সময় আরও বেশি বাইট-কোড যাচাইকরণ করে, রানটাইমে যাচাইকরণের খরচ এড়ায় এবং অ্যাপ চালু করার সময় কম রাখে।

গোপনীয়তা এবং নিরাপত্তা

কন্টেক্সট-রেজিস্টার করা রিসিভারের আরও নিরাপদ এক্সপোর্ট

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

এই এক্সপোর্ট কনফিগারেশন সেইসব অ্যাপে উপলভ্য যেগুলি নিম্নলিখিতগুলির মধ্যে অন্তত একটি করে:

  • AndroidX Core লাইব্রেরি-এর ভার্সন 1.9.0 বা তার পরবর্তী যেকোনও ভার্সন থেকে ContextCompat ক্লাস ব্যবহার করুন।
  • Android ১৩ বা তার পরবর্তী ভার্সন টার্গেট করুন।

ফটো পিকার

Android 13 (API লেভেল 33) এবং এর পরবর্তী যেকোনও ভার্সনে ফটো পিকার অভিজ্ঞতা অন্তর্ভুক্ত থাকে। আপনার অ্যাপ ফটো পিকার লঞ্চ করলে, ব্যবহারকারীরা আপনার অ্যাপের সাথে শেয়ার করার জন্য নির্দিষ্ট ছবি ও ভিডিও বেছে নেন, যেমন প্রোফাইল ছবি, আপনার অ্যাপকে সম্পূর্ণ মিডিয়া লাইব্রেরি দেখার অ্যাক্সেস দেওয়ার পরিবর্তে। ব্যবহারকারীর ফটো ও ভিডিও অ্যাক্সেস করার জন্য এটিই সাজেস্ট করা পদ্ধতি।

ফটো পিকার ব্যবহারকারীদের জন্য উন্নত গোপনীয়তা প্রদান করে কারণ আপনার অ্যাপকে কোনও রানটাইম অনুমতি ঘোষণা করতে হয় না। এছাড়াও, ফটো পিকার অ্যাপের জন্য একটি বিল্ট-ইন, স্ট্যান্ডার্ডাইজড UI প্রদান করে, যা আরও ধারাবাহিক ব্যবহারকারীর অভিজ্ঞতা তৈরি করে।

আশেপাশের ওয়াই-ফাই ডিভাইসের জন্য নতুন রানটাইম অনুমতি

Android 13 (API লেভেল 33) NEARBY_DEVICES অনুমতি গ্রুপে একটি নতুন রানটাইম অনুমতি নিয়ে এসেছে, যা ওয়াই-ফাইয়ের মাধ্যমে কাছাকাছি অ্যাক্সেস পয়েন্টে ডিভাইসের কানেকশন ম্যানেজ করে এমন অ্যাপের জন্য প্রযোজ্য। এইসব অ্যাপকে নতুন অনুমতি, NEARBY_WIFI_DEVICES, ঘোষণা করতে হবে, যখন তারা বিভিন্ন ওয়াই-ফাই API কল করে। এছাড়াও, যতক্ষণ না অ্যাপ ওয়াই-ফাই API থেকে ফিজিক্যাল লোকেশন সংগ্রহ করছে, ততক্ষণ Android ১৩ বা তার পরবর্তী ভার্সনকে টার্গেট করার সময় ACCESS_FINE_LOCATION অনুমতি ঘোষণা করার প্রয়োজন নেই।

আশেপাশের ওয়াই-ফাই ডিভাইস সংক্রান্ত অনুমতি সম্পর্কে আরও জানুন।

এক্স্যাক্ট অ্যালার্ম ব্যবহার করার জন্য নতুন অনুমতি

আপনার অ্যাপ Android 13 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে, আপনি USE_EXACT_ALARM অনুমতি ব্যবহার করতে পারবেন, যা আপনার অ্যাপকে অটোমেটিক দেওয়া হয়। তবে, আপনার অ্যাপকে এই অনুমতি ব্যবহার করতে হলে, নিম্নলিখিত শর্তের মধ্যে অন্তত একটি পূরণ করতে হবে:

  • আপনার অ্যাপটি একটি অ্যালার্ম ঘড়ি অ্যাপ বা টাইমার অ্যাপ।
  • আপনার অ্যাপটি একটি ক্যালেন্ডার অ্যাপ যা আসন্ন ইভেন্টের জন্য বিজ্ঞপ্তি দেখায়।

আপনার অ্যাপ যদি এক্স্যাক্ট অ্যালার্ম সেট করে কিন্তু আগের তালিকায় দেখানো কোনও কেস পূরণ না করে, তাহলে SCHEDULE_EXACT_ALARM অনুমতি ঘোষণা করা চালিয়ে যান এবং ব্যবহারকারী আপনার অ্যাপে অ্যাক্সেস অস্বীকার করলে কী করবেন সেই পরিস্থিতির জন্য প্রস্তুত থাকুন।

Developer downgradable permissions

Android ১৩ থেকে শুরু করে, আপনার অ্যাপ অব্যবহৃত রানটাইম অনুমতির অ্যাক্সেস তুলে নিতে পারবে। এই API আপনার অ্যাপকে নিম্নলিখিত কাজগুলি করার অনুমতি দেয় যা গোপনীয়তা বাড়ায়:

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

APK সিগনেচার স্কিম v3.1

Android 13-এ APK Signature Scheme v3.1-এর জন্য সহায়তা যোগ করা হয়েছে, যা আগে থেকে থাকা APK Signature Scheme v3-এর উপর উন্নতি করে। এই স্কিম কিছু পরিচিত সমস্যার সমাধান করে যা APK Signature Scheme v3-এর রোটেশন সংক্রান্ত। বিশেষ করে, v3.1 সিগনেচার স্কিম SDK ভার্সন টার্গেটিংয়ে কাজ করে, যা প্ল্যাটফর্মের পরবর্তী রিলিজ টার্গেট করার জন্য রোটেশনের অনুমতি দেয়।

v3.1 সিগনেচার স্কিম এমন একটি ব্লক আইডি ব্যবহার করে যা 12L বা তার আগের ভার্সনে শনাক্ত করা যায় না। তাই, প্ল্যাটফর্ম নিম্নলিখিত স্বাক্ষরকারীর আচরণ প্রয়োগ করে:

  • Android 13 বা তার পরবর্তী যেকোনও ভার্সন রান করে এমন ডিভাইস v3.1 ব্লকে রোটেট করা সাইনার ব্যবহার করে।
  • Android-এর পুরনো ভার্সন চলে এমন ডিভাইস রোটেট করা সাইনারকে উপেক্ষা করে এবং পরিবর্তে 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-এ আরও ভালভাবে সমস্যার রিপোর্ট করা

যেসব অ্যাপ 'কী' জেনারেট করে, Keystore এবং KeyMint এখন আরও বিস্তারিত এবং সঠিক সমস্যার ইন্ডিকেটর প্রদান করে। আমরা java.security.ProviderException-এর অধীনে একটি ব্যতিক্রম ক্লাস হায়ারার্কি যোগ করেছি, যেখানে Android-নির্দিষ্ট ব্যতিক্রমগুলি অন্তর্ভুক্ত রয়েছে, যেমন Keystore/KeyMint ত্রুটি কোড, এবং ত্রুটিটি আবার চেষ্টা করা যাবে কিনা। এছাড়াও, আপনি নতুন ব্যতিক্রম থ্রো করার জন্য কী তৈরি ও ব্যবহারের (স্বাক্ষর, এনক্রিপশন) পদ্ধতি পরিবর্তন করতে পারবেন। উন্নত সমস্যা রিপোর্টিং শুধু কী জেনারেশনের মধ্যেই সীমাবদ্ধ নয় এবং কী জেনারেশন আবার চেষ্টা করার জন্য আপনার যা প্রয়োজন তা এখন আপনাকে দিতে হবে।

ট্যাবলেট ও বড় স্ক্রিনের জন্য সহায়তা

Android 13-এ Android 12-এ চালু করা ট্যাবলেট অপ্টিমাইজেশন এবং 12L ফিচার ড্রপ অন্তর্ভুক্ত রয়েছে—যার মধ্যে সিস্টেম UI-এর জন্য অপ্টিমাইজেশন, আরও ভালো মাল্টিটাস্কিং এবং উন্নত কম্প্যাটিবিলিটি মোড অন্তর্ভুক্ত রয়েছে। আপনার পরীক্ষার অংশ হিসেবে, আপনার অ্যাপগুলি ট্যাবলেট এবং অন্যান্য বড় স্ক্রিনের ডিভাইসে সবচেয়ে ভালো দেখায় কিনা তা নিশ্চিত করুন।

নতুন কী আছে এবং কী পরীক্ষা করতে হবে সেই সম্পর্কে আরও তথ্যের জন্য, ট্যাবলেট এবং বড়-স্ক্রিন সহায়তা পৃষ্ঠা দেখুন।

গ্রাফিক্স

প্রোগ্রাম করা যায় এমন শেডার

একটি AGSL অ্যানিমেটেড শেডার, যা এই GLSL শেডার থেকে অ্যাডাপ্ট করা হয়েছে।

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

কোরিওগ্রাফার সংক্রান্ত উন্নতি

Android 13-এ Choreographer এবং ASurfaceControl-এর জন্য পাবলিক API পদ্ধতি চালু করা হয়েছে, যা অ্যাপকে সম্ভাব্য ফ্রেম টাইমলাইন সম্পর্কে আরও তথ্য প্রদান করে এবং ফ্রেম লাইফসাইকেল সম্পর্কে SurfaceFlinger-এ আরও প্রসঙ্গ যোগ করে। আগের মতোই, অ্যাপ Choreographer-এ কলব্যাক পোস্ট করতে এবং ফ্রেম টাইমলাইন সংক্রান্ত তথ্য পেতে পারে। Android 13 (API লেভেল 33)-এ, Choreographer একাধিক সম্ভাব্য প্রেজেন্টেশন টাইম এবং তাদের সংশ্লিষ্ট ফ্রেম ডেডলাইন রিটার্ন করে। অ্যাপ প্রেজেন্টেশনের সময় বেছে নিতে পারে এবং তারপরে পছন্দের বিষয়ে SurfaceFlinger-কে বিজ্ঞপ্তি পাঠাতে পারে। SurfaceFlinger তখন ট্রানজ্যাকশন বা ল্যাচ বাফার প্রয়োগ করার চেষ্টা করে না কাঙ্খিত উপস্থাপনার সময়ের আগে।

আপনার অ্যাপ নতুন Choreographer ও SurfaceControl পদ্ধতি ব্যবহার করলে, আপনি Perfetto ট্রেসে অ্যাপের ফ্রেম লাইফসাইকেল দেখতে পাবেন।

ক্যামেরা

HDR ভিডিও ক্যাপচার

Android 13 থেকে শুরু করে, Camera2 API হাই ডায়নামিক রেঞ্জ (HDR) ভিডিও ক্যাপচার করার সুবিধা দেয়, যা আপনাকে ক্যামেরা ব্যবহার করে HDR ভিডিও কন্টেন্ট প্রিভিউ ও রেকর্ড করতে দেয়। স্ট্যান্ডার্ড ডায়নামিক রেঞ্জের (SDR) তুলনায়, HDR-এ আরও বেশি রঙের রেঞ্জ থাকে এবং এটি লুমিন্যান্স কম্পোনেন্টের ডায়নামিক রেঞ্জ বাড়ায় (বর্তমান ১০০ cd/m2 থেকে ১০০০ cd/m2 পর্যন্ত)। এর ফলে ভিডিও কোয়ালিটি আরও বেশি প্রাণবন্ত হয়, যেখানে আরও গাঢ় রঙ, উজ্জ্বল হাইলাইট এবং অন্ধকার ছায়া দেখা যায়।

HDR ভিডিও ক্যাপচার সম্পর্কে আরও জানতে, HDR ভিডিও ক্যাপচার ডকুমেন্টেশন দেখুন।

মিডিয়া

স্পেশিয়ল অডিও

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

অ্যান্টিসিপেটরি অডিও রাউটিং

মিডিয়া অ্যাপ যাতে বুঝতে পারে যে তার অডিও কীভাবে রুট করা হবে, সেই জন্য Android 13 AudioManager ক্লাসে অডিও রুট API নিয়ে এসেছে। getAudioDevicesForAttributes() API আপনাকে এমন ডিভাইসের তালিকা ফিরিয়ে আনতে দেয় যা নির্দিষ্ট অডিও চালানোর জন্য ব্যবহার করা হতে পারে এবং getDirectProfilesForAttributes() API আপনাকে বুঝতে সাহায্য করে যে আপনার অডিও স্ট্রিম সরাসরি চালানো যাবে কিনা। আপনার অডিও ট্র্যাকের জন্য ব্যবহার করার মতো সেরা AudioFormat নির্ধারণ করতে এইসব API ব্যবহার করুন।

অ্যাক্সেসিবিলিটি

অডিওর বিবরণ

Android 13 (API লেভেল ৩৩) নতুন সিস্টেম-ওয়াইড অ্যাক্সেসিবিলিটি সংক্রান্ত পছন্দ চালু করে যা ব্যবহারকারীদের সব অ্যাপ জুড়ে অডিও বিবরণ চালু করার অনুমতি দেয়। অডিওর বিবরণ হল একটি অতিরিক্ত বর্ণনামূলক ট্র্যাক যাতে একজন কথক প্রেজেন্টেশনের মাধ্যমে কথা বলেন, অডিওতে স্বাভাবিক বিরতির সময় স্ক্রিনে কী ঘটছে তা বর্ণনা করেন। অ্যাপ isAudioDescriptionRequested()-এর মাধ্যমে কোয়েরি করে অডিও বিবরণের ট্র্যাকের জন্য ব্যবহারকারীর পছন্দ অনুসরণ করতে পারে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

Kotlin

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-এ লিসেনার যোগ করে ব্যবহারকারীর পছন্দ পরিবর্তন মনিটর করতে পারে:

Kotlin

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 আপডেট

Android 13-এ Android-এর মূল লাইব্রেরি রিফ্রেশ করার কাজ শুরু হয়েছে যাতে OpenJDK 11 LTS রিলিজের সাথে লাইব্রেরি আপডেট ও অ্যাপ্লিকেশন ও প্ল্যাটফর্ম ডেভেলপারদের জন্য Java 11 ল্যাঙ্গুয়েজ সাপোর্ট, দুটিই অ্যালাইন করা যায়। Android 13-এ নিয়ে আসা কোর লাইব্রেরি পরিবর্তনগুলিও ART মেইনলাইন মডিউলে Google Play সিস্টেম আপডেটের মাধ্যমে Android 12 ডিভাইসে উপলভ্য হবে।

Android 13-এ কোর লাইব্রেরিতে নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত করা হয়েছে:

  • স্থানীয় ভেরিয়েবল এবং প্যারামিটার ল্যাম্বডার জন্য var কীওয়ার্ডের জন্য সহায়তা।
  • String ক্লাসে নতুন পদ্ধতি:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • Collection.toArray(IntFunction)-এর জন্য সহায়তা যাতে কোনও কালেকশনকে অ্যারেতে অ্যাডাপ্ট করা আরও সহজ হয়।

  • java.util ক্লাসে Optional, OptionalDouble, OptionalInt এবং OptionalLong-এর জন্য ifPresentOrElse(), isEmpty(), orElseThrow() এবং stream()-এর সহায়তা।

  • সকেট আবার ব্যবহার করা সহ SocketOptions-এর জন্য অতিরিক্ত সহায়তা।

  • NullReader, NullWriter, InputStream, OutputStream এবং transferTo() Reader কার্যকারিতা যা পঠিত অক্ষরগুলিকে একটি Writer-এ স্থানান্তর করে।

  • Charsets ব্যবহার করে URL এনকোডিং ও ডিকোডিংয়ের জন্য কার্যকারিতা যোগ করা হয়েছে।

  • FileReader, FileWriter, PrintStream এবং PrintWriter-এর জন্য Charset কার্যকারিতা।

  • ByteArrayInput বা OutputStream এবং Input বা OutputStream-এর জন্য নতুন transferTo(), readNBytes(), readAllBytes() এবং writeBytes() ফাংশন।

  • java.lang.invoke.VarHandle-এর জন্য রানটাইম ও কম্পাইলার সহায়তা।

  • অভ্যন্তরীণভাবে VarHandle ব্যবহার করে OpenJDK 11 API-তে java.util.concurrent আপডেট করে।

Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।