Android 9 বৈশিষ্ট্য এবং API

অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) ব্যবহারকারী এবং ডেভেলপারদের জন্য দুর্দান্ত নতুন বৈশিষ্ট্য এবং ক্ষমতা প্রবর্তন করে। এই নথিটি ডেভেলপারদের জন্য নতুন কী তা হাইলাইট করে৷

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

Wi-Fi RTT সহ ইনডোর পজিশনিং

নতুন RTT APIগুলি আপনার অ্যাপে ইনডোর পজিশনিং সমর্থন করে।

Android 9 IEEE 802.11-2016 ওয়াই-ফাই প্রোটোকলের জন্য প্ল্যাটফর্ম সমর্থন যোগ করে—যা ওয়াই-ফাই রাউন্ড-ট্রিপ-টাইম (RTT) নামেও পরিচিত—আপনাকে আপনার অ্যাপ্লিকেশানগুলিতে ইনডোর অবস্থানের সুবিধা নিতে দেয়৷

হার্ডওয়্যার সমর্থন সহ Android 9 চালিত ডিভাইসগুলিতে, আপনার অ্যাপগুলি কাছাকাছি RTT-সক্ষম Wi-Fi অ্যাক্সেস পয়েন্টের (APs) দূরত্ব পরিমাপ করতে RTT API ব্যবহার করতে পারে। ডিভাইসটিতে অবশ্যই অবস্থান পরিষেবা সক্রিয় থাকতে হবে এবং Wi-Fi স্ক্যানিং চালু থাকতে হবে ( সেটিংস > অবস্থানের অধীনে), এবং আপনার অ্যাপের ACCESS_FINE_LOCATION অনুমতি থাকতে হবে। RTT ব্যবহার করার জন্য ডিভাইসটিকে অ্যাক্সেস পয়েন্টগুলির সাথে সংযোগ করার প্রয়োজন নেই৷ গোপনীয়তা বজায় রাখার জন্য, শুধুমাত্র ফোন অ্যাক্সেস পয়েন্টের দূরত্ব নির্ধারণ করতে সক্ষম; অ্যাক্সেস পয়েন্টে এই তথ্য নেই।

যদি আপনার ডিভাইসটি 3 বা তার বেশি অ্যাক্সেস পয়েন্টের দূরত্ব পরিমাপ করে, তাহলে আপনি একটি মাল্টিলেটারেশন অ্যালগরিদম ব্যবহার করে ডিভাইসের অবস্থান অনুমান করতে পারেন যা এই পরিমাপের জন্য সবচেয়ে উপযুক্ত। ফলাফল সাধারণত 1 থেকে 2 মিটারের মধ্যে সঠিক হয়।

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

Android WifiRttScan ডেমো অ্যাপে ব্যবহৃত WiFi RTT API দেখুন।

আরও তথ্যের জন্য, Wi-Fi অবস্থান দেখুন: RTT সহ

প্রদর্শন কাটআউট সমর্থন

বিকাশকারী বিকল্পগুলির স্ক্রীন বিভিন্ন কাটআউট আকার দেখাচ্ছে

এমুলেটর ব্যবহার করে ডিসপ্লে কাটআউট পরীক্ষা করা হচ্ছে

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

একটি নতুন উইন্ডো লেআউট অ্যাট্রিবিউট, layoutInDisplayCutoutMode , আপনার অ্যাপটিকে একটি ডিভাইসের কাটআউটের চারপাশে তার বিষয়বস্তু সাজানোর অনুমতি দেয়। আপনি নিম্নলিখিত মানগুলির মধ্যে একটিতে এই বৈশিষ্ট্যটি সেট করতে পারেন:

আপনি Android 9 চালিত যেকোনো ডিভাইস বা এমুলেটরে একটি স্ক্রিন কাটআউট অনুকরণ করতে পারেন:

  1. বিকাশকারী বিকল্পগুলি সক্ষম করুন৷
  2. বিকাশকারী বিকল্পগুলির স্ক্রিনে, অঙ্কন বিভাগে নীচে স্ক্রোল করুন এবং একটি কাটআউট সহ একটি প্রদর্শন অনুকরণ নির্বাচন করুন।
  3. কাটআউটের আকার নির্বাচন করুন।

বিজ্ঞপ্তি

অ্যান্ড্রয়েড 9 বিজ্ঞপ্তিতে বেশ কিছু বর্ধনের প্রবর্তন করে, যার সবকটিই API স্তর 28 এবং তার উপরে লক্ষ্য করে ডেভেলপারদের জন্য উপলব্ধ।

মেসেজিং বিজ্ঞপ্তি

ছবির সাথে মেসেজিং স্টাইল সংযুক্ত।

মেসেজিং বিজ্ঞপ্তি

উত্তর এবং কথোপকথন সহ মেসেজিং স্টাইল।

Android 9 বৈশিষ্ট্য সহ বিজ্ঞপ্তিগুলি ব্যবহার করে এমন নমুনা কোডের জন্য, লোকের নমুনা দেখুন।

উন্নত মেসেজিং অভিজ্ঞতা

Android 7.0 (API স্তর 24) থেকে শুরু করে, আপনি বার্তাগুলির উত্তর দিতে বা একটি বিজ্ঞপ্তি থেকে সরাসরি অন্য পাঠ্য লিখতে একটি অ্যাকশন যোগ করতে পারেন। অ্যান্ড্রয়েড 9 নিম্নলিখিত বর্ধনগুলির সাথে এই বৈশিষ্ট্যটিকে উন্নত করে:

  • কথোপকথনের অংশগ্রহণকারীদের জন্য সরলীকৃত সমর্থন: Person শ্রেণীটি তাদের অবতার এবং ইউআরআই সহ একটি কথোপকথনে জড়িত ব্যক্তিদের সনাক্ত করতে ব্যবহৃত হয়। অন্যান্য অনেক API, যেমন addMessage() , এখন CharSequence এর পরিবর্তে Person ক্লাসের সুবিধা নেয়। Person শ্রেণীও বিল্ডার ডিজাইন প্যাটার্ন সমর্থন করে।

  • ছবির জন্য সমর্থন: Android 9 এখন ফোনে মেসেজিং বিজ্ঞপ্তিতে ছবি প্রদর্শন করে। আপনি একটি চিত্র প্রদর্শন করতে বার্তায় setData() ব্যবহার করতে পারেন। নিম্নলিখিত কোড স্নিপেট প্রদর্শন করে কিভাবে একজন Person এবং একটি ছবি সম্বলিত একটি বার্তা তৈরি করতে হয়।

কোটলিন

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

জাভা

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • খসড়া হিসাবে উত্তরগুলি সংরক্ষণ করুন: যখন কোনও ব্যবহারকারী অসাবধানতাবশত কোনও বার্তাপ্রেরণ বিজ্ঞপ্তি বন্ধ করে দেয় তখন আপনার অ্যাপটি সিস্টেম দ্বারা প্রেরিত EXTRA_REMOTE_INPUT_DRAFT পুনরুদ্ধার করতে পারে৷ আপনি অ্যাপটিতে পাঠ্য ক্ষেত্রগুলিকে প্রাক-পপুলেট করতে এই অতিরিক্ত ব্যবহার করতে পারেন যাতে ব্যবহারকারীরা তাদের উত্তর শেষ করতে পারেন।

  • একটি কথোপকথন একটি গোষ্ঠী কথোপকথন কিনা তা সনাক্ত করুন: আপনি উদ্দেশ্যমূলকভাবে একটি কথোপকথনকে একটি গোষ্ঠী বা নন-গ্রুপ কথোপকথন হিসাবে চিহ্নিত করতে setGroupConversation() ব্যবহার করতে পারেন৷

  • একটি অভিপ্রায়ের জন্য শব্দার্থিক ক্রিয়া সেট করুন: setSemanticAction() পদ্ধতি আপনাকে একটি ক্রিয়াকে শব্দার্থিক অর্থ প্রদান করতে দেয়, যেমন "পড়া হিসাবে চিহ্নিত করুন", "মুছুন", "উত্তর" ইত্যাদি।

  • SmartReply: Android 9 আপনার মেসেজিং অ্যাপে উপলব্ধ একই প্রস্তাবিত উত্তর সমর্থন করে। RemoteInput.setChoices() ব্যবহার করুন ব্যবহারকারীকে মানসম্মত প্রতিক্রিয়ার একটি অ্যারে প্রদান করতে।

চ্যানেল সেটিংস, সম্প্রচার এবং বিরক্ত করবেন না

Android 8.0 বিজ্ঞপ্তি চ্যানেলগুলি চালু করেছে, যা আপনি প্রদর্শন করতে চান এমন প্রতিটি ধরণের বিজ্ঞপ্তির জন্য একটি ব্যবহারকারী-কাস্টমাইজযোগ্য চ্যানেল তৈরি করার অনুমতি দেয়৷ Android 9 এই পরিবর্তনগুলির সাথে বিজ্ঞপ্তি চ্যানেল সেটিংস সহজ করে:

  • চ্যানেল গোষ্ঠীগুলিকে ব্লক করা: ব্যবহারকারীরা এখন একটি অ্যাপের জন্য বিজ্ঞপ্তি সেটিংসের মধ্যে চ্যানেলগুলির সম্পূর্ণ গ্রুপগুলিকে ব্লক করতে পারে৷ আপনি isBlocked() পদ্ধতি ব্যবহার করে একটি গোষ্ঠীকে কখন ব্লক করা হয় তা সনাক্ত করতে পারেন এবং ফলস্বরূপ, সেই গোষ্ঠীর চ্যানেলগুলির জন্য কোনো বিজ্ঞপ্তি পাঠাতে পারবেন না।

    উপরন্তু, আপনার অ্যাপ নতুন getNotificationChannelGroup() পদ্ধতি ব্যবহার করে বর্তমান চ্যানেল গ্রুপ সেটিংসের জন্য অনুসন্ধান করতে পারে।

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

  • NotificationManager.Policy তিনটি নতুন Do-Not-Durb-এর অগ্রাধিকার বিভাগ রয়েছে:

    • PRIORITY_CATEGORY_ALARMS অ্যালার্মকে অগ্রাধিকার দেয়৷
    • PRIORITY_CATEGORY_MEDIA মিডিয়া এবং ভয়েস নেভিগেশনের মতো মিডিয়া উত্স থেকে শব্দগুলিকে অগ্রাধিকার দেয়৷
    • PRIORITY_CATEGORY_SYSTEM সিস্টেমের শব্দকে অগ্রাধিকার দেয়৷
  • NotificationManager.Policy এ সাতটি নতুন Do-Not-Disturb ধ্রুবক রয়েছে যা আপনি ভিজ্যুয়াল বাধা দমন করতে ব্যবহার করতে পারেন:

    • SUPPRESSED_EFFECT_FULL_SCREEN_INTENT বিজ্ঞপ্তিটিকে পূর্ণ-স্ক্রীন কার্যকলাপ আরম্ভ করা থেকে বাধা দেয়৷
    • SUPPRESSED_EFFECT_LIGHTS নোটিফিকেশন লাইট ব্লক করে।
    • SUPPRESSED_EFFECT_PEEK বিজ্ঞপ্তিগুলিকে সংক্ষিপ্তভাবে দৃশ্যে স্লাইড করা থেকে বাধা দেয় ("উঁকি দেওয়া")।
    • SUPPRESSED_EFFECT_STATUS_BAR স্ট্যাটাস বার সমর্থন করে এমন ডিভাইসগুলিতে স্ট্যাটাস বারে বিজ্ঞপ্তিগুলি উপস্থিত হতে বাধা দেয়৷
    • SUPPRESSED_EFFECT_BADGE ব্যাজগুলিকে সমর্থন করে এমন ডিভাইসগুলিতে ব্যাজগুলিকে ব্লক করে৷ আরও তথ্যের জন্য, একটি বিজ্ঞপ্তি ব্যাজ পরিবর্তন করুন
    • SUPPRESSED_EFFECT_AMBIENT অ্যাম্বিয়েন্ট ডিসপ্লে সমর্থন করে এমন ডিভাইসে বিজ্ঞপ্তি ব্লক করে।
    • SUPPRESSED_EFFECT_NOTIFICATION_LIST একটি তালিকা দৃশ্য সমর্থন করে এমন ডিভাইসগুলির তালিকার দৃশ্যে বিজ্ঞপ্তিগুলি উপস্থিত হতে বাধা দেয়, যেমন বিজ্ঞপ্তি ছায়া বা লকস্ক্রিন৷

মাল্টি-ক্যামেরা সমর্থন এবং ক্যামেরা আপডেট

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

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

অ্যান্ড্রয়েড 9-এ মাল্টি-ক্যামেরা API FULL বা LIMITED ক্ষমতা সহ ডিভাইসগুলির জন্য একরঙা ক্যামেরা সমর্থন করে। একরঙা আউটপুট YUV_420_888 বিন্যাসের মাধ্যমে গ্রেস্কেল হিসাবে Y, U (Cb) 128 হিসাবে এবং V (Cr) 128 এর মাধ্যমে অর্জন করা হয়।

Android 9 সমর্থিত ডিভাইসগুলিতে বহিরাগত USB/UVC ক্যামেরাগুলির জন্য সমর্থন সক্ষম করে।

অঙ্কনযোগ্য এবং বিটম্যাপের জন্য ইমেজডিকোডার

অ্যান্ড্রয়েড 9 ImageDecoder ক্লাস প্রবর্তন করে, যা চিত্রগুলি ডিকোড করার জন্য একটি আধুনিক পদ্ধতি প্রদান করে। BitmapFactory এবং BitmapFactory.Options API-এর পরিবর্তে এই ক্লাসটি ব্যবহার করুন।

ImageDecoder আপনাকে একটি বাইট বাফার, একটি ফাইল বা একটি URI থেকে একটি Drawable বা একটি Bitmap তৈরি করতে দেয়। একটি ইমেজ ডিকোড করতে, প্রথমে এনকোড করা ইমেজের উৎস সহ createSource() কল করুন। তারপর, একটি Drawable বা একটি Bitmap তৈরি করতে ImageDecoder.Source অবজেক্টটি পাস করে decodeDrawable() বা decodeBitmap() কল করুন। ডিফল্ট সেটিংস পরিবর্তন করতে, OnHeaderDecodedListener decodeDrawable() অথবা decodeBitmap() এ পাস করুন। ImageDecoder ইমেজের ডিফল্ট প্রস্থ এবং উচ্চতা সহ onHeaderDecoded() কল করে, একবার সেগুলি জানা হয়ে যায়। যদি এনকোড করা ছবি একটি অ্যানিমেটেড GIF বা WebP হয়, decodeDrawable() একটি Drawable ফেরত দেয় যা AnimatedImageDrawable ক্লাসের একটি উদাহরণ।

ছবির বৈশিষ্ট্য সেট করতে আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন:

  • ডিকোড করা চিত্রটিকে সঠিক আকারে স্কেল করতে, লক্ষ্য মাত্রাগুলিকে setTargetSize() এ পাস করুন। আপনি একটি নমুনা আকার ব্যবহার করে ছবি স্কেল করতে পারেন। setTargetSampleSize() এ নমুনার আকার সরাসরি পাস করুন।
  • স্কেল করা ইমেজের রেঞ্জের মধ্যে একটি ইমেজ ক্রপ করতে, setCrop() কল করুন।
  • একটি পরিবর্তনযোগ্য বিটম্যাপ তৈরি করতে, setMutableRequired()true পাস করুন।

ImageDecoder আপনাকে একটি ছবিতে কাস্টমাইজড এবং জটিল প্রভাব যুক্ত করতে দেয় যেমন গোলাকার কোণ বা বৃত্তের মুখোশ। PostProcessor ক্লাসের একটি উদাহরণ সহ setPostProcessor() ব্যবহার করুন যা আপনি চান এমন অঙ্কন কমান্ডগুলি চালান।

অ্যানিমেশন

Android 9 GIF এবং WebP অ্যানিমেটেড ছবি আঁকা এবং প্রদর্শনের জন্য AnimatedImageDrawable ক্লাস চালু করেছে। AnimatedImageDrawable AnimatedVectorDrawable এর মতই কাজ করে যে রেন্ডার থ্রেড AnimatedImageDrawable এর অ্যানিমেশনগুলি চালায়। রেন্ডার থ্রেড ডিকোড করার জন্য একটি কর্মী থ্রেডও ব্যবহার করে, যাতে ডিকোডিং রেন্ডার থ্রেডের অন্যান্য ক্রিয়াকলাপে হস্তক্ষেপ না করে। এই বাস্তবায়ন আপনার অ্যাপকে একটি অ্যানিমেটেড ইমেজ প্রদর্শন করার অনুমতি দেয় তার আপডেটগুলি পরিচালনা না করে বা আপনার অ্যাপের UI থ্রেডে অন্যান্য ইভেন্টগুলিতে হস্তক্ষেপ না করে।

একটি AnimatedImageDrawable ImageDecoder একটি উদাহরণ ব্যবহার করে ডিকোড করা যেতে পারে। নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে আপনার AnimatedImageDrawable ডিকোড করতে ImageDecoder ব্যবহার করবেন:

কোটলিন

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

জাভা

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

ImageDecoder বেশ কয়েকটি পদ্ধতি রয়েছে যা আপনাকে চিত্রটিকে আরও সংশোধন করতে দেয়। উদাহরণস্বরূপ, আপনি চিত্রের চেহারা পরিবর্তন করতে setPostProcessor() পদ্ধতি ব্যবহার করতে পারেন, যেমন একটি বৃত্তের মুখোশ বা বৃত্তাকার কোণগুলি প্রয়োগ করা।

HDR VP9 ভিডিও, HEIF ইমেজ কম্প্রেশন, এবং মিডিয়া APIs

Android 9 হাই ডায়নামিক রেঞ্জ (HDR) VP9 প্রোফাইল 2-এর জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি HDR-সক্ষম ডিভাইসগুলিতে YouTube, Play Movies এবং অন্যান্য উত্স থেকে আপনার ব্যবহারকারীদের HDR-সক্ষম চলচ্চিত্রগুলি সরবরাহ করতে পারেন।

অ্যান্ড্রয়েড 9 হাই এফিসিয়েন্সি ইমেজ ফাইল ফরম্যাট ( HEIF বা HEIC) ব্যবহার করে ছবি এনকোড করার জন্য সমর্থন যোগ করে, যা কম্প্রেশন উন্নত করে এবং স্টোরেজ স্পেস এবং নেটওয়ার্ক ডেটা ব্যবহার কমায়। HEIF স্থির চিত্রের নমুনা MediaMuxer এবং MediaExtractor ক্লাসে সমর্থিত। অ্যান্ড্রয়েড 9 ডিভাইসে প্ল্যাটফর্ম সমর্থন সহ, আপনার ব্যাকএন্ড সার্ভার থেকে HEIF ছবিগুলি পাঠানো এবং ব্যবহার করা সহজ৷ আপনার অ্যাপ শেয়ারিং এবং ডিসপ্লে করার জন্য এই ডেটা ফরম্যাটের সাথে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করার পরে, আপনার অ্যাপে একটি ইমেজ স্টোরেজ ফরম্যাট হিসেবে HEIF-কে চেষ্টা করে দেখুন। আপনি ImageDecoder বা BitmapFactory ব্যবহার করে একটি jpeg-to-heic রূপান্তর করতে পারেন (যা একটি JPEG ফাইল থেকে একটি বিটম্যাপ পায়)। তারপর আপনি YUV বাইট বাফার থেকে HEIF স্থির চিত্র বা Surface বা Bitmap উদাহরণ লিখতে HeifWriter ব্যবহার করতে পারেন।

AudioTrack , AudioRecord এবং MediaDrm ক্লাস থেকেও মিডিয়া মেট্রিক্স পাওয়া যায়।

অ্যান্ড্রয়েড 9 MediaDRM ক্লাসে মেট্রিক্স, এইচডিসিপি লেভেল, সিকিউরিটি লেভেল এবং সেশনের সংখ্যা পেতে এবং সিকিউরিটি লেভেল এবং সুরক্ষিত স্টপগুলির উপর আরো নিয়ন্ত্রণ যোগ করার জন্য পদ্ধতি প্রবর্তন করে। বিস্তারিত জানার জন্য API ডিফ রিপোর্ট দেখুন।

অ্যান্ড্রয়েড 9-এ, AAudio API ব্যবহার, সামগ্রীর ধরন এবং ইনপুট প্রিসেট সহ বেশ কয়েকটি অতিরিক্ত AAudioStream বৈশিষ্ট্যগুলির জন্য সমর্থন যোগ করে। এই বৈশিষ্ট্যগুলি ব্যবহার করে, আপনি স্ট্রিমগুলি তৈরি করতে পারেন যা ভিওআইপি বা ক্যামকর্ডার অ্যাপ্লিকেশনগুলির জন্য সুর করা হয়৷ আপনি একটি সাবমিক্সের সাথে একটি AAudio স্ট্রিম যুক্ত করতে সেশন আইডি সেট করতে পারেন যা প্রভাবগুলি অন্তর্ভুক্ত করতে পারে৷ প্রভাব নিয়ন্ত্রণ করতে AudioEffect API ব্যবহার করুন।

অ্যান্ড্রয়েড 9 গতিশীল প্রক্রিয়াকরণের জন্য AudioEffect API প্রবর্তন করে। এই ক্লাসের সাহায্যে, আপনি একাধিক ধাপ জুড়ে চ্যানেল-ভিত্তিক অডিও প্রভাব তৈরি করতে পারেন - সমীকরণ, মাল্টি-ব্যান্ড কম্প্রেশন এবং লিমিটার সহ। ব্যান্ড এবং সক্রিয় পর্যায়ের সংখ্যা কনফিগারযোগ্য, এবং বেশিরভাগ পরামিতি রিয়েল টাইমে নিয়ন্ত্রণ করা যেতে পারে।

JobScheduler-এ ডেটা খরচ সংবেদনশীলতা

Android 9 থেকে শুরু করে, JobScheduler নেটওয়ার্ক-সম্পর্কিত কাজের হ্যান্ডলিং উন্নত করতে ক্যারিয়ারদের দ্বারা প্রদত্ত নেটওয়ার্ক স্থিতি সংকেত ব্যবহার করতে পারে।

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

কাজ যোগ করার সময়, JobScheduler সঠিকভাবে কাজ পরিচালনা করতে সাহায্য করার জন্য setEstimatedNetworkBytes() , setPrefetch() , এবং setRequiredNetwork() ব্যবহার করতে ভুলবেন না। যখন আপনার কাজ কার্যকর হয়, JobParameters.getNetwork() দ্বারা ফেরত দেওয়া Network অবজেক্টটি ব্যবহার করতে ভুলবেন না। অন্যথায় আপনি অপ্রত্যাশিতভাবে ডিভাইসের ডিফল্ট নেটওয়ার্ক ব্যবহার করবেন যা আপনার প্রয়োজনীয়তা পূরণ নাও করতে পারে, যার ফলে অনিচ্ছাকৃত ডেটা ব্যবহার হবে।

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

নিউরাল নেটওয়ার্ক এপিআই অ্যান্ড্রয়েড 8.1 (এপিআই লেভেল 27) এ চালু করা হয়েছিল অ্যান্ড্রয়েডে ডিভাইসে মেশিন লার্নিংকে ত্বরান্বিত করতে। Android 9 প্রসারিত করে এবং API উন্নত করে, নয়টি নতুন অপারেশনের জন্য সমর্থন যোগ করে:

পরিচিত সমস্যা: ANEURALNETWORKS_PAD অপারেশনে ANEURALNETWORKS_TENSOR_QUANT8_ASYMM অপারেশনে পাস করার সময়, NNAPI-এর আউটপুট TensorFlow Lite- এর মতো উচ্চ-স্তরের মেশিন লার্নিং ফ্রেমওয়ার্কের আউটপুটের সাথে নাও মিলতে পারে। সমস্যাটির সমাধান না হওয়া পর্যন্ত আপনার পরিবর্তে শুধুমাত্র ANEURALNETWORKS_TENSOR_FLOAT32 পাস করা উচিত।

উপরন্তু, API একটি নতুন ফাংশনও প্রবর্তন করে, ANeuralNetworksModel_relaxComputationFloat32toFloat16() , যা আপনাকে নির্দিষ্ট করতে দেয় যে ANEURALNETWORKS_TENSOR_FLOAT32 গণনা করতে হবে কিনা তা IEEE1-flobit-mat 754bit-এর মতো কম পরিসীমা এবং নির্ভুলতার সাথে।

অটোফিল ফ্রেমওয়ার্ক

Android 9 একাধিক উন্নতি প্রবর্তন করে যা ফর্ম পূরণ করার সময় ব্যবহারকারীর অভিজ্ঞতাকে আরও উন্নত করতে অটোফিল পরিষেবাগুলি প্রয়োগ করতে পারে৷ আপনার অ্যাপে অটোফিল বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, অটোফিল ফ্রেমওয়ার্ক গাইড দেখুন৷

নিরাপত্তা বৃদ্ধি

অ্যান্ড্রয়েড 9 বেশ কয়েকটি সুরক্ষা বৈশিষ্ট্য প্রবর্তন করে, যা নিম্নলিখিত বিভাগগুলি সংক্ষিপ্ত করে:

অ্যান্ড্রয়েড সুরক্ষিত নিশ্চিতকরণ

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

ব্যবহারকারী বিবৃতিটি গ্রহণ করলে, Android Keystore একটি ক্রিপ্টোগ্রাফিক স্বাক্ষর গ্রহণ করে এবং সংরক্ষণ করে যা একটি কীড-হ্যাশ বার্তা প্রমাণীকরণ কোড (HMAC) দ্বারা সুরক্ষিত। অ্যান্ড্রয়েড কীস্টোর বার্তাটির বৈধতা নিশ্চিত করার পরে, আপনার অ্যাপ ব্যবহারকারীর গৃহীত বার্তাটিতে স্বাক্ষর করতে বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্টে (TEE) ট্রাস্টেড trustedConfirmationRequired রিকোয়ার্ড থেকে তৈরি কী ব্যবহার করতে পারে৷ স্বাক্ষরটি খুব উচ্চ আত্মবিশ্বাসের সাথে নির্দেশ করে যে ব্যবহারকারী বিবৃতিটি দেখেছেন এবং এতে সম্মত হয়েছেন।

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

Android Protected Confirmation-এর জন্য সমর্থন যোগ করার নির্দেশনার জন্য, Android Protected Confirmation গাইড দেখুন।

ইউনিফাইড বায়োমেট্রিক প্রমাণীকরণ ডায়ালগ

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

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

হার্ডওয়্যার নিরাপত্তা মডিউল

যে সমর্থিত ডিভাইসগুলিতে Android 9 বা উচ্চতর ইনস্টল করা আছে সেগুলিতে একটি StrongBox Keymaster থাকতে পারে, যা একটি হার্ডওয়্যার নিরাপত্তা মডিউলে থাকা Keymaster HAL-এর বাস্তবায়ন। মডিউল নিম্নলিখিত রয়েছে:

  • এর নিজস্ব সিপিইউ।
  • নিরাপদ স্টোরেজ।
  • একটি সত্য র্যান্ডম-সংখ্যা জেনারেটর.
  • প্যাকেজ টেম্পারিং এবং অ্যাপের অননুমোদিত সাইডলোডিং প্রতিরোধ করার জন্য অতিরিক্ত প্রক্রিয়া।

স্ট্রংবক্স কীমাস্টারে সংরক্ষিত কীগুলি পরীক্ষা করার সময়, সিস্টেমটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (টিইই) এর সাথে একটি কী এর অখণ্ডতাকে সমর্থন করে।

স্ট্রংবক্স কীমাস্টার ব্যবহার সম্পর্কে আরও জানতে, হার্ডওয়্যার নিরাপত্তা মডিউল দেখুন।

কীস্টোরে নিরাপদ কী আমদানি করুন

Android 9 একটি ASN.1-এনকোডেড কী বিন্যাস ব্যবহার করে কীস্টোরে নিরাপদে এনক্রিপ্ট করা কীগুলি আমদানি করার ক্ষমতা যুক্ত করে অতিরিক্ত কী ডিক্রিপশন সুরক্ষা প্রদান করে৷ কীমাস্টার তারপর কীস্টোরে কীগুলি ডিক্রিপ্ট করে, তাই কীগুলির বিষয়বস্তু ডিভাইসের হোস্ট মেমরিতে প্লেইনটেক্সট হিসাবে উপস্থিত হয় না।

আরও নিরাপদে এনক্রিপ্ট করা কীগুলি কীভাবে আমদানি করবেন সে সম্পর্কে আরও জানুন৷

কী রোটেশন সহ APK স্বাক্ষর স্কিম

Android 9 APK স্বাক্ষর স্কিম v3 এর জন্য সমর্থন যোগ করে। এই স্কিমটিতে প্রতিটি স্বাক্ষরকারী শংসাপত্রের জন্য তার স্বাক্ষর ব্লকে একটি প্রমাণ-অফ-ঘূর্ণন রেকর্ড অন্তর্ভুক্ত করার বিকল্প রয়েছে৷ এই সক্ষমতা আপনার অ্যাপটিকে একটি নতুন স্বাক্ষর শংসাপত্রের সাথে স্বাক্ষর করতে সক্ষম করে APK ফাইলের অতীত স্বাক্ষরকারী শংসাপত্রগুলি যেটির সাথে এটি এখন স্বাক্ষরিত তার সাথে লিঙ্ক করে৷

apksigner ব্যবহার করে কীগুলি কীভাবে ঘোরানো যায় সে সম্পর্কে আরও জানুন।

শুধুমাত্র আনলক করা ডিভাইসগুলিতে কী ডিক্রিপশনের অনুমতি দেওয়ার বিকল্প

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

ডিভাইসটি লক থাকা অবস্থায় একটি কী ডিক্রিপশন থেকে সুরক্ষিত রাখতে, setUnlockedDeviceRequired() পদ্ধতিতে true পাস করে পতাকাটি সক্ষম করুন। এই ধাপটি সম্পন্ন করার পরে, যখন ব্যবহারকারীর স্ক্রীন লক করা হয়, তখন এই কী ব্যবহার করে ডেটা ডিক্রিপ্ট বা সাইন করার যে কোনো প্রচেষ্টা ব্যর্থ হয়। একটি লক করা ডিভাইস অ্যাক্সেস করার আগে একটি পিন, পাসওয়ার্ড, ফিঙ্গারপ্রিন্ট বা অন্য কোনো বিশ্বস্ত ফ্যাক্টর প্রয়োজন।

উত্তরাধিকার এনক্রিপশন সমর্থন

অ্যান্ড্রয়েড 9 ডিভাইসগুলি যেগুলি কীমাস্টার 4-এর সাথে পাঠানো হয় সেগুলি ট্রিপল ডেটা এনক্রিপশন অ্যালগরিদম বা ট্রিপল ডিইএস সমর্থন করে৷ যদি আপনার অ্যাপটি লিগ্যাসি সিস্টেমগুলির সাথে ইন্টারঅপারেটিং করে যার জন্য ট্রিপল ডিইএস প্রয়োজন, সংবেদনশীল শংসাপত্রগুলি এনক্রিপ্ট করার সময় এই ধরনের সাইফার ব্যবহার করুন৷

কীভাবে আপনার অ্যাপকে আরও সুরক্ষিত করা যায় সে সম্পর্কে আরও জানতে, Android বিকাশকারীদের জন্য নিরাপত্তা দেখুন।

WPS এর অবচয়

নিরাপত্তার কারণে ওয়াই-ফাই সুরক্ষিত সেটআপ (WPS) বন্ধ করা হয়েছে।

অ্যান্ড্রয়েড ব্যাকআপ

অ্যান্ড্রয়েড 9 ব্যাকআপ এবং পুনরুদ্ধার সম্পর্কিত নতুন কার্যকারিতা এবং বিকাশকারী বিকল্পগুলি যুক্ত করে৷ এই পরিবর্তনগুলি সম্পর্কে বিশদ বিবরণ নিম্নলিখিত বিভাগে প্রদর্শিত হবে৷

ক্লায়েন্ট-সাইড এনক্রিপশন ব্যাকআপ

অ্যান্ড্রয়েড 9 একটি ক্লায়েন্ট-সাইড সিক্রেট সহ অ্যান্ড্রয়েড ব্যাকআপ এনক্রিপ্ট করার জন্য সমর্থন যোগ করে। নিম্নলিখিত শর্ত পূরণ হলে এই সমর্থন স্বয়ংক্রিয়ভাবে সক্ষম হয়:

যখন এই গোপনীয়তা পরিমাপ সক্ষম করা হয়, তখন ব্যবহারকারীর ডিভাইস দ্বারা তৈরি ব্যাকআপগুলি থেকে ডেটা পুনরুদ্ধার করতে ডিভাইসের পিন, প্যাটার্ন বা পাসওয়ার্ডের প্রয়োজন হয়৷ এই বৈশিষ্ট্যটির পিছনে প্রযুক্তি সম্পর্কে আরও জানতে, Google ক্লাউড কী ভল্ট পরিষেবার সাদা কাগজটি দেখুন৷

ব্যাকআপের জন্য প্রয়োজনীয় ডিভাইস শর্তাবলী সংজ্ঞায়িত করুন

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

অ্যান্ড্রয়েড ডিভাইসে ডেটা ব্যাক আপ করার বিষয়ে আরও জানতে, ডেটা ব্যাকআপ ওভারভিউ দেখুন।

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

অ্যান্ড্রয়েড 9 অ্যাক্সেসিবিলিটি ফ্রেমওয়ার্কে বর্ধিতকরণের প্রবর্তন করে যা আপনার অ্যাপের ব্যবহারকারীদের আরও ভাল অভিজ্ঞতা প্রদান করা সহজ করে তোলে।

নেভিগেশন শব্দার্থবিদ্যা

অ্যান্ড্রয়েড 9-এ যোগ করা বৈশিষ্ট্যগুলি কীভাবে অ্যাক্সেসিবিলিটি পরিষেবাগুলি, বিশেষ করে স্ক্রিন রিডারগুলি, স্ক্রিনের এক অংশ থেকে অন্য অংশে নেভিগেট করে তা নির্ধারণ করা আপনার পক্ষে সহজ করে তোলে৷ এই বৈশিষ্ট্যগুলি দৃষ্টি প্রতিবন্ধী ব্যবহারকারীদের আপনার অ্যাপের UI-তে পাঠ্যের মাধ্যমে দ্রুত সরাতে সাহায্য করতে পারে এবং তাদের একটি নির্বাচন করার অনুমতি দেয়।

উদাহরণস্বরূপ, একটি শপিং অ্যাপে, একটি স্ক্রিন রিডার ব্যবহারকারীদের একটি বিভাগ থেকে সরাসরি অন্য বিভাগে নেভিগেট করতে সাহায্য করতে পারে, স্ক্রিন রিডারকে পরবর্তীতে যাওয়ার আগে একটি বিভাগে সমস্ত আইটেম পড়তে হবে না।

অ্যাক্সেসিবিলিটি প্যানের শিরোনাম

অ্যান্ড্রয়েড 8.1 (API স্তর 27) এবং নিম্নতর, অ্যাক্সেসিবিলিটি পরিষেবাগুলি সর্বদা নির্ধারণ করতে পারে না কখন স্ক্রিনের একটি নির্দিষ্ট ফলক আপডেট করা হয়েছিল, যেমন যখন একটি ক্রিয়াকলাপ একটি খণ্ডকে অন্য খণ্ডের সাথে প্রতিস্থাপন করে। প্যানগুলি লজিক্যালি-গ্রুপ করা, দৃশ্যত-সম্পর্কিত UI উপাদানগুলি নিয়ে গঠিত যা সাধারণত একটি খণ্ড গঠিত হয়।

অ্যান্ড্রয়েড 9-এ, আপনি এই প্যানের জন্য অ্যাক্সেসিবিলিটি প্যান শিরোনাম , বা স্বতন্ত্রভাবে শনাক্তযোগ্য শিরোনাম প্রদান করতে পারেন। যদি একটি প্যানে একটি অ্যাক্সেসিবিলিটি প্যানের শিরোনাম থাকে, প্যানে পরিবর্তন হলে অ্যাক্সেসিবিলিটি পরিষেবাগুলি আরও বিস্তারিত তথ্য পায়। এই ক্ষমতা পরিষেবাগুলিকে UI-তে কী পরিবর্তন হয়েছে সে সম্পর্কে ব্যবহারকারীকে আরও দানাদার তথ্য সরবরাহ করতে দেয়৷

একটি ফলকের শিরোনাম নির্দিষ্ট করতে, android:accessibilityPaneTitle বৈশিষ্ট্যটি ব্যবহার করুন। আপনি একটি UI ফলকের শিরোনাম আপডেট করতে পারেন যা setAccessibilityPaneTitle() ব্যবহার করে রানটাইমে প্রতিস্থাপিত হয়। উদাহরণস্বরূপ, আপনি একটি Fragment অবজেক্টের বিষয়বস্তু এলাকার জন্য একটি শিরোনাম প্রদান করতে পারেন।

শিরোনাম-ভিত্তিক নেভিগেশন

যদি আপনার অ্যাপটি যৌক্তিক শিরোনামগুলি সহ পাঠ্য বিষয়বস্তু প্রদর্শন করে, তাহলে সেই শিরোনামগুলিকে উপস্থাপন করে এমন View উদাহরণগুলির জন্য android:accessibilityHeading বৈশিষ্ট্যটিকে true হিসাবে সেট করুন৷ এই শিরোনামগুলি যোগ করে, আপনি ব্যবহারকারীদের এক শিরোনাম থেকে অন্য শিরোনামে সরাসরি নেভিগেট করতে সহায়তা করার জন্য অ্যাক্সেসিবিলিটি পরিষেবাগুলিকে অনুমতি দেন৷ যেকোন অ্যাক্সেসিবিলিটি পরিষেবা ব্যবহারকারীদের UI নেভিগেশন অভিজ্ঞতা উন্নত করতে এই ক্ষমতা ব্যবহার করতে পারে।

গ্রুপ নেভিগেশন এবং আউটপুট

স্ক্রীন রিডাররা ঐতিহ্যগতভাবে android:focusable অ্যাট্রিবিউট ব্যবহার করে তা নির্ধারণ করতে কখন তারা একটি ViewGroup , বা View অবজেক্টের একটি সংগ্রহ, একটি একক হিসাবে পড়বে। এইভাবে, ব্যবহারকারীরা বুঝতে পারে যে মতামতগুলি যুক্তিযুক্তভাবে একে অপরের সাথে সম্পর্কিত ছিল।

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

Android 9 থেকে শুরু করে, আপনি android:screenReaderFocusable অ্যাট্রিবিউটের জায়গায় android:focusable screenReaderFocusable অ্যাট্রিবিউট ব্যবহার করতে পারেন এমন পরিস্থিতিতে যেখানে একটি View অবজেক্টকে ফোকাসযোগ্য করার অনাকাঙ্ক্ষিত পরিণতি হয়৷ স্ক্রীন রিডাররা android:screenReaderFocusable বা android:focusable to true সেট করা সমস্ত উপাদানের উপর ফোকাস রাখে।

সুবিধাজনক কর্ম

অ্যান্ড্রয়েড 9 ব্যবহারকারীদের পক্ষে সুবিধাজনক ক্রিয়া সম্পাদনের জন্য সমর্থন যোগ করে:

টুলটিপ সঙ্গে মিথস্ক্রিয়া
অ্যাক্সেসিবিলিটি ফ্রেমওয়ার্কে যোগ করা বৈশিষ্ট্যগুলি আপনাকে একটি অ্যাপের UI-তে টুলটিপগুলিতে অ্যাক্সেস দেয়। একটি টুলটিপের পাঠ্য পড়তে getTooltipText() ব্যবহার করুন, এবং তাদের টুলটিপগুলি দেখানো বা লুকানোর জন্য View দৃষ্টান্ত নির্দেশ করতে ACTION_SHOW_TOOLTIP এবং ACTION_HIDE_TOOLTIP ব্যবহার করুন৷
বিশ্বব্যাপী কর্ম যোগ করা হয়েছে
অ্যান্ড্রয়েড 9 AccessibilityService ক্লাসে দুটি অতিরিক্ত ডিভাইস অ্যাকশনের জন্য সমর্থন প্রবর্তন করে। আপনার পরিষেবা ব্যবহারকারীদের তাদের ডিভাইস লক করতে এবং যথাক্রমে GLOBAL_ACTION_LOCK_SCREEN এবং GLOBAL_ACTION_TAKE_SCREENSHOT অ্যাকশন ব্যবহার করে স্ক্রিনশট নিতে সাহায্য করতে পারে৷

উইন্ডো পরিবর্তন বিবরণ

অ্যান্ড্রয়েড 9 একটি অ্যাপের উইন্ডোতে আপডেটগুলি ট্র্যাক করা সহজ করে তোলে যখন একটি অ্যাপ একই সাথে একাধিক উইন্ডো পুনরায় আঁকে। যখন একটি TYPE_WINDOWS_CHANGED ইভেন্ট ঘটে, উইন্ডোগুলি কীভাবে পরিবর্তিত হয়েছে তা নির্ধারণ করতে getWindowChanges() API ব্যবহার করুন। একটি মাল্টিউইন্ডো আপডেটের সময়, প্রতিটি উইন্ডো তার নিজস্ব ইভেন্টের সেট তৈরি করে। getSource() পদ্ধতি প্রতিটি ইভেন্টের সাথে যুক্ত উইন্ডোর রুট ভিউ প্রদান করে।

যদি কোনো অ্যাপ তার View অবজেক্টের জন্য অ্যাক্সেসিবিলিটি প্যান শিরোনাম সংজ্ঞায়িত করে থাকে, তাহলে অ্যাপের UI আপডেট হলে আপনার পরিষেবা চিনতে পারে। যখন একটি TYPE_WINDOW_STATE_CHANGED ঘটনা ঘটে, তখন উইন্ডোটি কীভাবে পরিবর্তিত হয়েছে তা নির্ধারণ করতে getContentChangeTypes() দ্বারা প্রত্যাবর্তিত প্রকারগুলি ব্যবহার করুন৷ উদাহরণস্বরূপ, ফ্রেমওয়ার্ক শনাক্ত করতে পারে যখন একটি প্যানে একটি নতুন শিরোনাম আছে, বা কখন একটি ফলক অদৃশ্য হয়ে গেছে।

ঘূর্ণন

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

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

আরও বিশদ বিবরণের জন্য, সম্পর্কিত আচরণের পরিবর্তনগুলি দেখুন।

মোবাইল ঘোরানো নতুন ঘূর্ণন মোড দেখাচ্ছে ব্যবহারকারীদের ম্যানুয়ালি ঘূর্ণন ট্রিগার করতে দেয়

একটি নতুন ঘূর্ণন মোড ব্যবহারকারীদের সিস্টেম বারে একটি বোতাম ব্যবহার করে প্রয়োজনে ম্যানুয়ালি ঘূর্ণন ট্রিগার করতে দেয়।

পাঠ্য

Android 9 প্ল্যাটফর্মে নিম্নলিখিত পাঠ্য-সম্পর্কিত বৈশিষ্ট্যগুলি নিয়ে আসে:

  • প্রি-কম্পিউটেড টেক্সট: PrecomputedText ক্লাস আপনাকে সময়ের আগে প্রয়োজনীয় তথ্য গণনা এবং ক্যাশে করতে সক্ষম করে পাঠ্য-রেন্ডারিং কর্মক্ষমতা উন্নত করে। এটি আপনার অ্যাপটিকে মূল থ্রেডের বাইরে পাঠ্য বিন্যাস সম্পাদন করতে সক্ষম করে।

  • ম্যাগনিফায়ার: Magnifier ক্লাস একটি প্ল্যাটফর্ম উইজেট যা একটি ম্যাগনিফায়ার API প্রদান করে, যা সমস্ত অ্যাপ জুড়ে সামঞ্জস্যপূর্ণ ম্যাগনিফায়ার-বৈশিষ্ট্যের অভিজ্ঞতার জন্য অনুমতি দেয়।

  • Smart Linkify: Android 9 TextClassifier শ্রেণীকে উন্নত করে, যা নির্বাচিত পাঠ্যের মধ্যে কিছু সত্তা সনাক্ত করতে এবং ক্রিয়াকলাপের পরামর্শ দিতে মেশিন লার্নিংকে কাজে লাগায়। উদাহরণস্বরূপ, TextClassifier ব্যবহারকারী একটি ফোন নম্বর নির্বাচন করেছে তা সনাক্ত করতে আপনার অ্যাপকে সক্ষম করতে পারে। আপনার অ্যাপটি ব্যবহারকারীকে সেই নম্বরটি ব্যবহার করে একটি ফোন কল করার পরামর্শ দিতে পারে। TextClassifier এর বৈশিষ্ট্যগুলি Linkify ক্লাসের কার্যকারিতা প্রতিস্থাপন করে।

  • টেক্সট লেআউট: বেশ কিছু সুবিধার পদ্ধতি এবং বৈশিষ্ট্য আপনার UI ডিজাইন বাস্তবায়ন করা সহজ করে তোলে। বিস্তারিত জানার জন্য, TextView এর জন্য রেফারেন্স ডকুমেন্টেশন দেখুন।

DEX ফাইলের ART আগাম সময়ের রূপান্তর

অ্যান্ড্রয়েড 9 বা উচ্চতর সংস্করণে চলমান ডিভাইসগুলিতে, অ্যান্ড্রয়েড রানটাইম (এআরটি) আগাম-সময়ের কম্পাইলার একটি অ্যাপ প্যাকেজে থাকা DEX ফাইলগুলিকে আরও কমপ্যাক্ট উপস্থাপনায় রূপান্তর করে সংকুচিত ডালভিক এক্সিকিউটেবল ফরম্যাট (DEX) ফাইলগুলিকে আরও অপ্টিমাইজ করে৷ এই পরিবর্তনটি আপনার অ্যাপকে দ্রুত শুরু করতে এবং কম ডিস্ক স্পেস এবং RAM ব্যবহার করতে দেয়।

এই উন্নতি বিশেষ করে স্লো ডিস্ক I/O গতির সাথে নিম্ন-সম্পন্ন ডিভাইসগুলিকে উপকৃত করে।

অন-ডিভাইস সিস্টেম ট্রেসিং

অ্যান্ড্রয়েড 9 আপনাকে আপনার ডিভাইস থেকে সিস্টেম ট্রেস রেকর্ড করার অনুমতি দেয়, তারপরে আপনার ডেভেলপমেন্ট টিমের সাথে এই রেকর্ডিংয়ের একটি প্রতিবেদন ভাগ করুন৷ এই প্রতিবেদনটি HTML সহ একাধিক ফরম্যাট সমর্থন করে।

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

এই টুল সম্পর্কে আরও জানতে, ডিভাইসে সিস্টেম ট্রেসিং সম্পাদন করুন দেখুন।