আচরণের পরিবর্তন: Android 13 বা উচ্চতরকে লক্ষ্য করে এমন অ্যাপ

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

অ্যান্ড্রয়েড ১৩-এ চলমান সমস্ত অ্যাপকে প্রভাবিত করে এমন আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করতে ভুলবেন না।

গোপনীয়তা

বিজ্ঞপ্তির অনুমতি ফোরগ্রাউন্ড পরিষেবার উপস্থিতিকে প্রভাবিত করে

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

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

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, ব্যবহারকারীকে বেশ কয়েকটি সাধারণ ওয়াই-ফাই ব্যবহারের ক্ষেত্রে আপনার অ্যাপটিকে ACCESS_FINE_LOCATION অনুমতি দিতে হবে।

যেহেতু ব্যবহারকারীদের জন্য অবস্থানের অনুমতিগুলিকে Wi-Fi কার্যকারিতার সাথে যুক্ত করা কঠিন, তাই Android 13 (API স্তর 33) NEARBY_DEVICES অনুমতি গোষ্ঠীতে এমন অ্যাপগুলির জন্য একটি রানটাইম অনুমতি প্রবর্তন করে যা Wi-Fi এর মাধ্যমে কাছাকাছি অ্যাক্সেস পয়েন্টগুলিতে ডিভাইসের সংযোগ পরিচালনা করে। এই অনুমতি, NEARBY_WIFI_DEVICES , নিম্নলিখিতগুলির মতো Wi-Fi ব্যবহারের ক্ষেত্রে পূরণ করে:

  • প্রিন্টার বা মিডিয়া কাস্টিং ডিভাইসের মতো কাছাকাছি ডিভাইসগুলি খুঁজুন বা সংযুক্ত করুন। এই ওয়ার্কফ্লো আপনার অ্যাপকে এই ধরণের কাজগুলি সম্পন্ন করতে দেয়:
    • ব্যান্ডের বাইরে AP তথ্য গ্রহণ করুন, যেমন BLE এর মাধ্যমে।
    • Wi-Fi Aware এর মাধ্যমে ডিভাইসগুলি আবিষ্কার করুন এবং সংযোগ করুন এবং একটি স্থানীয়-কেবল হটস্পট ব্যবহার করে সংযোগ করুন।
    • Wi-Fi Direct এর মাধ্যমে ডিভাইসগুলি আবিষ্কার করুন এবং সংযুক্ত করুন।
  • একটি পরিচিত SSID, যেমন একটি গাড়ি বা স্মার্ট হোম ডিভাইসের সাথে একটি সংযোগ শুরু করুন।
  • শুধুমাত্র স্থানীয় হটস্পট শুরু করুন।
  • কাছাকাছি Wi-Fi Aware ডিভাইসগুলিতে যান।

যতক্ষণ না আপনার অ্যাপটি Wi-Fi API থেকে ভৌত অবস্থানের তথ্য সংগ্রহ করে, ততক্ষণ Android 13 বা তার পরবর্তী সংস্করণগুলিকে লক্ষ্য করে Wi-Fi API ব্যবহার করার সময় ACCESS_FINE_LOCATION এর পরিবর্তে NEARBY_WIFI_DEVICES অনুরোধ করুন। যখন আপনি NEARBY_WIFI_DEVICES অনুমতি ঘোষণা করেন, তখন দৃঢ়ভাবে দাবি করুন যে আপনার অ্যাপটি কখনই Wi-Fi API থেকে ভৌত অবস্থানের তথ্য সংগ্রহ করে না। এটি করার জন্য, android:usesPermissionFlags অ্যাট্রিবিউটটিকে neverForLocation এ সেট করুন। এই প্রক্রিয়াটি Android 12 (API লেভেল 31) এবং তার পরবর্তী সংস্করণগুলিতে করা প্রক্রিয়ার অনুরূপ যখন আপনি দাবি করেন যে Bluetooth ডিভাইসের তথ্য কখনও লোকেশনের জন্য ব্যবহার করা হয় না

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

গ্রানুলার মিডিয়া অনুমতি

ডায়ালগের জন্য উপর থেকে নীচে দুটি বোতাম হল অনুমতি দিন এবং অনুমতি দেবেন না।
চিত্র ১. READ_MEDIA_AUDIO অনুমতির অনুরোধ করার সময় ব্যবহারকারী যে সিস্টেম অনুমতি ডায়ালগটি দেখতে পান।

যদি আপনার অ্যাপটি Android 13 বা তার উচ্চতর সংস্করণের জন্য উপযুক্ত হয় এবং অন্যান্য অ্যাপের তৈরি মিডিয়া ফাইলগুলি অ্যাক্সেস করার প্রয়োজন হয়, তাহলে আপনাকে READ_EXTERNAL_STORAGE অনুমতির পরিবর্তে নিম্নলিখিত এক বা একাধিক গ্রানুলার মিডিয়া অনুমতির জন্য অনুরোধ করতে হবে:

মিডিয়ার ধরণ অনুরোধের অনুমতি
ছবি এবং ছবি READ_MEDIA_IMAGES
ভিডিও READ_MEDIA_VIDEO
অডিও ফাইল READ_MEDIA_AUDIO

অন্য অ্যাপের মিডিয়া ফাইল অ্যাক্সেস করার আগে, যাচাই করুন যে ব্যবহারকারী আপনার অ্যাপটিকে উপযুক্ত গ্রানুলার মিডিয়া অনুমতি দিয়েছেন।

চিত্র ১-এ এমন একটি অ্যাপ দেখানো হয়েছে যা READ_MEDIA_AUDIO অনুমতির অনুরোধ করে।

আপনি যদি একই সাথে READ_MEDIA_IMAGES অনুমতি এবং READ_MEDIA_VIDEO অনুমতি উভয়ের জন্য অনুরোধ করেন, তাহলে শুধুমাত্র একটি সিস্টেম অনুমতি ডায়ালগ প্রদর্শিত হবে।

যদি আপনার অ্যাপটি পূর্বে READ_EXTERNAL_STORAGE অনুমতি মঞ্জুর করা হয়ে থাকে, তাহলে আপগ্রেড করার সময় অনুরোধ করা যেকোনো READ_MEDIA_* অনুমতি স্বয়ংক্রিয়ভাবে মঞ্জুর করা হবে। আপগ্রেড করা অনুমতিগুলি পর্যালোচনা করতে আপনি নিম্নলিখিত ADB কমান্ড ব্যবহার করতে পারেন:

adb shell cmd appops get --uid PACKAGE_NAME

ব্যাকগ্রাউন্ডে বডি সেন্সর ব্যবহারের জন্য নতুন অনুমতি প্রয়োজন

অ্যান্ড্রয়েড ১৩ "ব্যবহারের সময়" শরীরের সেন্সর, যেমন হার্ট রেট, তাপমাত্রা এবং রক্তের অক্সিজেন শতাংশের জন্য অ্যাক্সেসের ধারণাটি প্রবর্তন করে। এই অ্যাক্সেস মডেলটি অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) -এ অবস্থানের জন্য প্রবর্তিত সিস্টেমের সাথে খুব মিল।

যদি আপনার অ্যাপটি Android 13-কে টার্গেট করে এবং ব্যাকগ্রাউন্ডে চলাকালীন বডি সেন্সর তথ্য অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনাকে বিদ্যমান BODY_SENSORS অনুমতির পাশাপাশি নতুন BODY_SENSORS_BACKGROUND অনুমতি ঘোষণা করতে হবে।

কর্মক্ষমতা এবং ব্যাটারি

ব্যাটারি রিসোর্স ব্যবহার

যদি ব্যবহারকারী আপনার অ্যাপটিকে "সীমাবদ্ধ" অবস্থায় রাখে, যখন আপনার অ্যাপটি Android 13-কে টার্গেট করে, তাহলে সিস্টেমটি BOOT_COMPLETED সম্প্রচার বা LOCKED_BOOT_COMPLETED সম্প্রচার সরবরাহ করবে না যতক্ষণ না অ্যাপটি অন্য কারণে শুরু হয়।

ব্যবহারকারীর অভিজ্ঞতা

PlaybackState থেকে প্রাপ্ত মিডিয়া নিয়ন্ত্রণগুলি

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

চিত্র ২-এ ফোন এবং ট্যাবলেট ডিভাইসে এটি কেমন দেখায়, তার একটি উদাহরণ দেখানো হয়েছে।

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

অ্যান্ড্রয়েড ১৩-এর আগে, সিস্টেমটি MediaStyle বিজ্ঞপ্তি থেকে পাঁচটি পর্যন্ত অ্যাকশন যে ক্রমে যোগ করা হয়েছিল সেই ক্রমে প্রদর্শন করত। কমপ্যাক্ট মোডে - উদাহরণস্বরূপ, কোলাপসড কুইক সেটিংসে - setShowActionsInCompactView() দিয়ে নির্দিষ্ট করা তিনটি পর্যন্ত অ্যাকশন দেখানো হত।

অ্যান্ড্রয়েড ১৩ থেকে শুরু করে, সিস্টেমটি নিম্নলিখিত টেবিলে বর্ণিত PlaybackState উপর ভিত্তি করে পাঁচটি পর্যন্ত অ্যাকশন বোতাম প্রদর্শন করে। কমপ্যাক্ট মোডে, শুধুমাত্র প্রথম তিনটি অ্যাকশন স্লট প্রদর্শিত হবে। যেসব অ্যাপ অ্যান্ড্রয়েড ১৩ কে লক্ষ্য করে না বা যেগুলোতে PlaybackState অন্তর্ভুক্ত নেই, তাদের জন্য সিস্টেমটি পূর্ববর্তী অনুচ্ছেদে বর্ণিত MediaStyle বিজ্ঞপ্তিতে যোগ করা Action তালিকার উপর ভিত্তি করে নিয়ন্ত্রণগুলি প্রদর্শন করবে।

স্লট অ্যাকশন মানদণ্ড
খেলা PlaybackState বর্তমান অবস্থা নিম্নলিখিতগুলির মধ্যে একটি:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
স্পিনার লোড হচ্ছে PlaybackState বর্তমান অবস্থা নিম্নলিখিতগুলির মধ্যে একটি:
  • STATE_CONNECTING
  • STATE_BUFFERING
বিরতি PlaybackState বর্তমান অবস্থা উপরের কোনটিই নয়।
পূর্ববর্তী PlaybackState অ্যাকশনের মধ্যে ACTION_SKIP_TO_PREVIOUS অন্তর্ভুক্ত।
কাস্টম PlaybackState অ্যাকশনে ACTION_SKIP_TO_PREVIOUS অন্তর্ভুক্ত থাকে না এবং PlaybackState কাস্টম অ্যাকশনে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত থাকে যা এখনও স্থাপন করা হয়নি।
খালি PlaybackState অতিরিক্তগুলিতে SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV কী-এর জন্য একটি true বুলিয়ান মান অন্তর্ভুক্ত থাকে।
পরবর্তী PlaybackState অ্যাকশনের মধ্যে ACTION_SKIP_TO_NEXT অন্তর্ভুক্ত থাকে।
কাস্টম PlaybackState অ্যাকশনে ACTION_SKIP_TO_NEXT অন্তর্ভুক্ত থাকে না এবং PlaybackState কাস্টম অ্যাকশনে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত থাকে যা এখনও স্থাপন করা হয়নি।
খালি PlaybackState অতিরিক্তগুলিতে SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT এর জন্য একটি true বুলিয়ান মান অন্তর্ভুক্ত থাকে।
কাস্টম PlaybackState কাস্টম অ্যাকশনের মধ্যে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত থাকে যা এখনও স্থাপন করা হয়নি।
কাস্টম PlaybackState কাস্টম অ্যাকশনের মধ্যে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত থাকে যা এখনও স্থাপন করা হয়নি।

কাস্টম অ্যাকশনগুলি PlaybackState এ যে ক্রমে যোগ করা হয়েছিল সেই ক্রমে স্থাপন করা হয়।

ওয়েবভিউ কন্টেন্টে অ্যাপ রঙের থিম স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়েছে

Android 13 (API লেভেল 33) বা তার বেশি ভার্সনের অ্যাপগুলির জন্য, setForceDark() পদ্ধতিটি বন্ধ করে দেওয়া হয়েছে, যার ফলে পদ্ধতিটি কল করা হলে নো-অপশন থাকবে।

পরিবর্তে, WebView এখন সর্বদা অ্যাপের থিম অ্যাট্রিবিউট, isLightTheme অনুসারে মিডিয়া কোয়েরি prefers-color-scheme সেট করে। অন্য কথায়, যদি isLightTheme true হয় বা নির্দিষ্ট না হয়, prefers-color-scheme হল light ; অন্যথায়, এটি dark । এই আচরণের অর্থ হল ওয়েব কন্টেন্টের হালকা বা গাঢ় স্টাইল স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয় যাতে কন্টেন্টটি যদি এটি সমর্থন করে তবে অ্যাপের থিমের সাথে মেলে।

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

যদি আপনার অ্যাপের রঙের থিম আচরণ এখনও কাস্টমাইজ করতে হয়, তাহলে setAlgorithmicDarkeningAllowed() পদ্ধতিটি ব্যবহার করুন। পূর্ববর্তী Android সংস্করণগুলির সাথে ব্যাকওয়ার্ড সামঞ্জস্যের জন্য, আমরা AndroidX-এ সমতুল্য setAlgorithmicDarkeningAllowed() পদ্ধতিটি ব্যবহার করার পরামর্শ দিচ্ছি।

আপনার অ্যাপের targetSdkVersion এবং থিম সেটিংসের উপর নির্ভর করে আপনার অ্যাপে কী আচরণ আশা করা যেতে পারে সে সম্পর্কে আরও জানতে সেই পদ্ধতির ডকুমেন্টেশন দেখুন।

সংযোগ

BluetoothAdapter#enable() এবং BluetoothAdapter#disable() অবচিত হয়েছে

Android 13 (API লেভেল 33) বা তার বেশি ভার্সনের অ্যাপগুলির জন্য, BluetoothAdapter#enable() এবং BluetoothAdapter#disable() পদ্ধতিগুলি অবচিত হয় এবং সর্বদা false ফেরত দেয়।

নিম্নলিখিত ধরণের অ্যাপগুলি এই পরিবর্তনগুলি থেকে মুক্ত:

  • ডিভাইস মালিকের অ্যাপ
  • প্রোফাইল মালিক অ্যাপস
  • সিস্টেম অ্যাপস

গুগল প্লে পরিষেবা

বিজ্ঞাপন আইডির জন্য অনুমতি প্রয়োজন

যেসব অ্যাপ গুগল প্লে সার্ভিসেস অ্যাডভার্টাইজিং আইডি ব্যবহার করে এবং অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং তার উচ্চতর ভার্সনকে টার্গেট করে, তাদের অ্যাপের ম্যানিফেস্ট ফাইলে AD_ID স্বাভাবিক অনুমতি ঘোষণা করতে হবে, যেমন:

<manifest ...>
    <!-- Required only if your app targets Android 13 or higher. -->
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

    <application ...>
        ...
    </application>
</manifest>

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

যদি আপনার অ্যাপ এমন SDK ব্যবহার করে যা লাইব্রেরির ম্যানিফেস্টে AD_ID অনুমতি ঘোষণা করে, তাহলে অনুমতিটি ডিফল্টরূপে আপনার অ্যাপের ম্যানিফেস্ট ফাইলের সাথে মার্জ করা হবে। এই ক্ষেত্রে, আপনার অ্যাপের manfiest ফাইলে অনুমতি ঘোষণা করার প্রয়োজন নেই।

আরও জানতে, Play Console সহায়তায় বিজ্ঞাপন আইডি দেখুন।

আপডেট করা নন-SDK বিধিনিষেধ

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

যদি আপনার অ্যাপটি Android 13-কে টার্গেট না করে, তাহলে এই পরিবর্তনগুলির কিছু তাৎক্ষণিকভাবে আপনার উপর প্রভাব ফেলতে পারে না। তবে, যদিও আপনি বর্তমানে কিছু নন-SDK ইন্টারফেস ব্যবহার করতে পারেন ( আপনার অ্যাপের টার্গেট API স্তরের উপর নির্ভর করে ), যেকোনো নন-SDK পদ্ধতি বা ক্ষেত্র ব্যবহার করলে আপনার অ্যাপটি ভেঙে যাওয়ার ঝুঁকি সবসময় বেশি থাকে।

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

অ্যান্ড্রয়েডের এই রিলিজে পরিবর্তনগুলি সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড 13-এ নন-SDK ইন্টারফেস সীমাবদ্ধতার আপডেটগুলি দেখুন। সাধারণত নন-SDK ইন্টারফেস সম্পর্কে আরও জানতে, নন-SDK ইন্টারফেসের উপর বিধিনিষেধগুলি দেখুন।