Android 10 ব্যবহারকারী ও ডেভেলপারদের জন্য দুর্দান্ত ফিচার ও ক্ষমতা নিয়ে এসেছে। ডেভেলপারদের জন্য কী কী উপলভ্য আছে তা এই ডকুমেন্টে হাইলাইট করা হয়েছে।
API সম্পর্কে জানতে, API ডিফারেন্স রিপোর্ট পড়ুন অথবা Android API রেফারেন্স দেখুন — "API লেভেল ২৯-এ যোগ করা হয়েছে" এমন API খুঁজুন। এছাড়াও, Android 10-এর আচরণে পরিবর্তন (API লেভেল 29 টার্গেট করা অ্যাপের জন্য এবং সব অ্যাপের জন্য) এবং গোপনীয়তায় পরিবর্তন চেক করে দেখতে ভুলবেন না, যাতে প্ল্যাটফর্মে পরিবর্তন আপনার অ্যাপকে প্রভাবিত করতে পারে এমন ক্ষেত্রগুলি সম্পর্কে জানতে পারেন।
নিরাপত্তা সংক্রান্ত উন্নতি
Android 10-এ বেশ কিছু নিরাপত্তা ফিচার রয়েছে, যেগুলি নিচের বিভাগে সংক্ষেপে আলোচনা করা হয়েছে।
উন্নত বায়োমেট্রিক যাচাইকরণ ডায়ালগ
Android 10-এ বায়োমেট্রিক যাচাইকরণ সাপোর্টের ক্ষেত্রে নিম্নলিখিত উন্নতি করা হয়েছে:
- বায়োমেট্রিক যাচাইকরণ ক্ষমতার জন্য একটি চেক।
- একটি ফলব্যাক মেকানিজম যা ব্যবহারকারীকে তার ডিভাইসের পিন, প্যাটার্ন বা পাসওয়ার্ড ব্যবহার করে যাচাইকরণ করতে দেয় যদি তারা তাদের বায়োমেট্রিক ইনপুট ব্যবহার করে যাচাইকরণ করতে না পারে।
- একটি ইঙ্গিত যা সিস্টেমকে বলে যে ব্যবহারকারী অন্তর্নিহিত বায়োমেট্রিক পদ্ধতি ব্যবহার করে প্রমাণীকরণ করার পরে ব্যবহারকারীর নিশ্চিতকরণের প্রয়োজন নেই। যেমন, আপনি সিস্টেমকে বলতে পারেন যে ব্যবহারকারী ফেস অথেন্টিকেশন ব্যবহার করে অথেন্টিকেট করার পরে আর কোনও কনফার্মেশনের প্রয়োজন নেই।
APK থেকে সরাসরি এম্বেড করা DEX কোড রান করুন
Android 10 থেকে, আপনি প্ল্যাটফর্মকে আপনার অ্যাপের APK ফাইল থেকে সরাসরি এম্বেড করা DEX কোড চালাতে বলতে পারেন। এই বিকল্পটি কোনও আক্রমণ প্রতিরোধ করতে সাহায্য করতে পারে যদি কোনও আক্রমণকারী কখনও ডিভাইসে স্থানীয়ভাবে কম্পাইল করা কোডের সাথে কারচুপি করতে পারে।
আরও তথ্যের জন্য, APK থেকে সরাসরি এম্বেড করা DEX কোড রান করুন দেখুন।
TLS 1.3 সাপোর্ট
Android 10-এ TLS 1.3-এর জন্য সহায়তা যোগ করা হয়েছে। TLS 1.3 হল TLS স্ট্যান্ডার্ডের একটি প্রধান সংশোধন যার মধ্যে পারফর্ম্যান্সের সুবিধা এবং উন্নত নিরাপত্তা অন্তর্ভুক্ত রয়েছে। আমাদের বেঞ্চমার্ক থেকে জানা যায় যে TLS 1.2-এর তুলনায় TLS 1.3-এর মাধ্যমে ৪০% পর্যন্ত দ্রুত সুরক্ষিত কানেকশন তৈরি করা যায়।
TLS 1.3 প্রয়োগ করার ব্যাপারে আরও জানতে, সব অ্যাপের জন্য আচরণগত পরিবর্তন পৃষ্ঠার মধ্যে TLS বিভাগ দেখুন।
Public Conscrypt API
Android 10 থেকে, Conscrypt নিরাপত্তা প্রদানকারীর মধ্যে TLS কার্যকারিতার জন্য একটি পাবলিক API অন্তর্ভুক্ত রয়েছে।
android.net.ssl-এর অধীনে ক্লাসের সংগ্রহে
স্ট্যাটিক পদ্ধতি রয়েছে যার মাধ্যমে এমন কার্যকারিতা অ্যাক্সেস করা যায় যা জেনেরিক
javax.net.ssl API থেকে উপলভ্য নয়। এইসব ক্লাসের নাম সংশ্লিষ্ট javax.net.ssl ক্লাসের বহুবচন হিসেবে
অনুমান করা যেতে পারে। যেমন, javax.net.ssl.SSLSocket-এর ইনস্ট্যান্সের উপর কাজ করে এমন কোড
পরিবর্তে SSLSockets থেকে
পদ্ধতি ব্যবহার করতে পারে।
কানেক্টিভিটি ফিচার
Android 10-এ নেটওয়ার্কিং ও কানেক্টিভিটি সংক্রান্ত বেশ কিছু উন্নতি করা হয়েছে।
ওয়াই-ফাই নেটওয়ার্ক কানেকশন API
Android 10-এ পিয়ার-টু-পিয়ার কানেকশনের সুবিধা যোগ করা হয়েছে। এই
ফিচার আপনার অ্যাপকে ব্যবহারকারীকে অনুরোধ করা নেটওয়ার্কের প্রপার্টি বর্ণনা করার জন্য
WifiNetworkSpecifier
ব্যবহার করে ডিভাইস যে অ্যাক্সেস পয়েন্টের সাথে কানেক্ট করা আছে তা পরিবর্তন করার জন্য প্রম্পট করতে দেয়। পিয়ার-টু-পিয়ার কানেকশন
নেটওয়ার্ক-প্রদান করে না এমন উদ্দেশ্যে ব্যবহার করা হয়, যেমন Chromecast এবং Google Home হার্ডওয়্যারের মতো
সেকেন্ডারি ডিভাইসের জন্য বুটস্ট্র্যাপিং কনফিগারেশন।
আরও তথ্যের জন্য, পিয়ার-টু-পিয়ার কানেক্টিভিটির জন্য ওয়াই-ফাই নেটওয়ার্ক রিকোয়েস্ট API দেখুন।
ওয়াই-ফাই নেটওয়ার্ক সাজেশন API
Android ১০-এ আপনার অ্যাপের জন্য ওয়াই-ফাই অ্যাক্সেস পয়েন্টে কানেক্ট করার জন্য ব্যবহারকারীকে প্রম্পট করার সুবিধা যোগ করা হয়েছে। কোন নেটওয়ার্কে কানেক্ট করতে হবে সেই সম্পর্কে আপনি সাজেশন দিতে পারেন। আপনার এবং অন্যান্য অ্যাপ থেকে পাওয়া ইনপুটের উপর ভিত্তি করে, প্ল্যাটফর্মটি শেষ পর্যন্ত বেছে নেবে যে কোন অ্যাক্সেস পয়েন্টটি গ্রহণ করতে হবে।
এই ফিচার সম্পর্কে আরও জানতে, Wi-Fi সাজেস্ট দেখুন।
ওয়াই-ফাই হাই-পারফর্ম্যান্স ও লো-লেটেন্সি মোডে উন্নতি
Android 10 আপনাকে লেটেন্সি কমাতে অন্তর্নিহিত মডেমকে ইঙ্গিত দেওয়ার অনুমতি দেয়।
Android 10, ওয়াই-ফাই লক API-কে আরও উন্নত করে যাতে হাই-পারফর্ম্যান্স মোড ও লো-লেটেন্সি মোড আরও ভালোভাবে কাজ করতে পারে। উচ্চ-পারফর্ম্যান্স ও লো-লেটেন্সি মোডের জন্য ওয়াই-ফাই পাওয়ার সেভ বন্ধ করা আছে এবং লো-লেটেন্সি মোডে আরও লেটেন্সি অপ্টিমাইজেশন চালু করা হতে পারে, যা মডেমের উপর নির্ভর করে।
অ্যাপ্লিকেশন লক করার সময় লো-লেটেন্সি মোড তখনই চালু হয় যখন অ্যাপ্লিকেশনটি ফোরগ্রাউন্ডে চলছে এবং স্ক্রিন চালু আছে। লো-লেটেন্সি মোড বিশেষ করে রিয়েল-টাইম মোবাইল গেমিং অ্যাপ্লিকেশনের জন্য সহায়ক।
DNS সমাধানকারীতে বিশেষ লুকআপ
Android 10-এ ক্লিয়ারটেক্সট লুকআপ ও DNS-ওভার-TLS মোড, দুটিরই ব্যবহার করে
বিশেষায়িত DNS লুকআপের জন্য নেটিভ সাপোর্ট যোগ করা হয়েছে। আগে, প্ল্যাটফর্ম DNS
রিজলভার শুধুমাত্র A এবং AAAA রেকর্ড সমর্থন করত, যা শুধুমাত্র একটি নামের সাথে যুক্ত IP
ঠিকানাগুলি দেখার অনুমতি দেয়, কিন্তু অন্য কোনও রেকর্ডের ধরন সমর্থন করে না।
DnsResolver API জেনেরিক,
অ্যাসিঙ্ক্রোনাস রেজোলিউশন প্রদান করে, যা আপনাকে SRV, NAPTR এবং অন্যান্য
রেকর্ডের ধরন দেখতে দেয়। মনে রাখবেন, উত্তর পার্স করার কাজটি অ্যাপের উপর ছেড়ে দেওয়া হয়েছে।
NDK-ভিত্তিক অ্যাপের জন্য, android_res_nsend দেখুন।
Wi-Fi Easy Connect
Android 10 আপনাকে কোনও পিয়ার ডিভাইসে ওয়াই-ফাই ক্রেডেনশিয়াল প্রোভিশন করার জন্য 'সহজ কানেক্ট' ব্যবহার করার সুবিধা দেয়, যা WPS-এর পরিবর্তে ব্যবহার করা হয়।
অ্যাপগুলি
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
ইনটেন্ট ব্যবহার করে তাদের সেট-আপ এবং প্রভিশনিং ফ্লোতে Easy Connect ইন্টিগ্রেট করতে পারে।
এই ফিচার সম্পর্কে আরও জানতে, Wi-Fi Easy Connect দেখুন।
Wi-Fi Direct কানেকশন API
Android 10-এ WifiP2pConfig এবং WifiP2pManager API ক্লাস আপডেট করা হয়েছে
যাতে পূর্বনির্ধারিত তথ্য ব্যবহার করে Wi-Fi Direct-এর সাথে দ্রুত কানেকশন স্থাপন করার ক্ষমতাকে
সমর্থন করা যায়। এই তথ্য ব্লুটুথ বা NFC-এর মতো সাইড চ্যানেলের মাধ্যমে
শেয়ার করা হয়।
নিম্নলিখিত কোড স্যাম্পেল থেকে জানা যায় যে আগে থেকে নির্ধারিত তথ্য ব্যবহার করে কীভাবে গ্রুপ তৈরি করতে হয়:
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
জাভা
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
ক্রেডেনশিয়াল ব্যবহার করে কোনও গ্রুপে যোগ দিতে, manager.createGroup()-এর পরিবর্তে
নিম্নলিখিত তথ্য ব্যবহার করুন:
Kotlin
manager.connect(channel, config, null)
জাভা
manager.connect(channel, config, null);
ব্লুটুথ LE কানেকশন ওরিয়েন্টেড চ্যানেল (CoC)
Android 10 আপনার অ্যাপকে দুটি BLE ডিভাইসের মধ্যে আরও বড় ডেটা স্ট্রিম ট্রান্সফার করার জন্য BLE CoC কানেকশন ব্যবহার করার সুবিধা দেয়। এই ইন্টারফেস ব্লুটুথ এবং কানেক্টিভিটি মেকানিক্সকে অ্যাবস্ট্র্যাক্ট করে যাতে ইমপ্লিমেন্টেশন সহজ হয়।
টেলিফোনি ফিচার
Android 10-এ টেলিফোনি সম্পর্কিত বেশ কিছু উন্নতি করা হয়েছে।
কলের কোয়ালিটি উন্নত করা
Android 10-এ, এই ফিচার কাজ করে এমন ডিভাইসে, নেটওয়ার্ক থেকে এবং নেটওয়ার্কে, IP মাল্টিমিডিয়া সাবসিস্টেম (IMS) কলের কোয়ালিটি সহ, চলমান কলের কোয়ালিটি সম্পর্কে তথ্য সংগ্রহ করার ক্ষমতা যোগ করা হয়েছে।
কল স্ক্রিনিং ও কলার আইডি
Android 10 আপনার অ্যাপকে এমন একটি উপায় প্রদান করে যার মাধ্যমে ব্যবহারকারীর অ্যাড্রেস বুকে
না থাকা কলকে সম্ভাব্য স্প্যাম কল হিসেবে শনাক্ত করা যায় এবং ব্যবহারকারীর হয়ে
স্প্যাম কলকে সাইলেন্টলি বাতিল করা যায়। এইসব ব্লক করা কল সম্পর্কে তথ্য
কল লগে ব্লক করা কল হিসেবে লগ করা হয় যাতে ব্যবহারকারী কল মিস করলে
তাকে আরও বেশি স্বচ্ছতা প্রদান করা যায়। এই API ব্যবহার করলে, কল স্ক্রিনিং ও কলার আইডি কার্যকারিতা প্রদান করার জন্য
ব্যবহারকারীর থেকে READ_CALL_LOG অনুমতি নেওয়ার
প্রয়োজন হয় না।
কল রিডাইরেকশন পরিষেবা API
Android 10-এ কল ইনটেন্ট ম্যানেজ করার পদ্ধতি পরিবর্তন করা হয়েছে। NEW_OUTGOING_CALL
ব্রডকাস্ট বন্ধ করা হয়েছে এবং এর পরিবর্তে
CallRedirectionService API ব্যবহার করা হচ্ছে। CallRedirectionService API আপনাকে
Android প্ল্যাটফর্ম থেকে করা আউটগোয়িং কল পরিবর্তন করার ইন্টারফেস প্রদান করে। যেমন, থার্ড-পার্টি অ্যাপ কল বাতিল করে VoIP-এর মাধ্যমে রি-রুট করতে পারে।
এক্সটার্নাল স্টোরেজে ফাইল তৈরি করার ক্ষেত্রে উন্নতি
স্কোপড স্টোরেজ চালু করার পাশাপাশি, Android 10 এক্সটার্নাল স্টোরেজ সম্পর্কিত নিম্নলিখিত ক্ষমতাগুলি যোগ করে:
- আপনি
IS_PENDINGফ্ল্যাগ ব্যবহার করে আপনার অ্যাপকে ডিস্কে লেখা মিডিয়া ফাইলে এক্সক্লুসিভ অ্যাক্সেস দিতে পারেন। - ফাইল কোথায় স্টোর করা উচিত সেই নির্দিষ্ট লোকেশন সম্পর্কে আপনি অবগত থাকলে, নতুন লেখা ফাইল কোথায় স্টোর করতে হবে সেই সম্পর্কে সিস্টেমকে ইঙ্গিত দিতে পারেন।
- প্রতিটি এক্সটার্নাল স্টোরেজ ডিভাইসের একটি অনন্য ভলিউম নাম আছে।
মিডিয়া ও গ্রাফিক্স
Android 10-এ নিম্নলিখিত নতুন মিডিয়া ও গ্রাফিক্স ফিচার এবং API নিয়ে আসা হয়েছে:
অডিও ইনপুট শেয়ার করা হচ্ছে
Android 10-এ দুটি অ্যাপ একসাথে অডিও ইনপুট শেয়ার করতে পারে। সম্পূর্ণ তথ্যের জন্য, অডিও ইনপুট শেয়ার করা দেখুন।
অডিও প্লেব্যাক ক্যাপচার
Android ১০, কোনও অ্যাপকে অন্য অ্যাপ থেকে অডিও প্লেব্যাক ক্যাপচার করার ক্ষমতা দেয়। সম্পূর্ণ তথ্যের জন্য, প্লেব্যাক ক্যাপচার দেখুন।
MediaStyle বিজ্ঞপ্তিতে সিকবার
Android ১০ থেকে শুরু করে, MediaStyle বিজ্ঞপ্তিতে একটি সিকবার দেখানো হয়। সিকবার
PlaybackState.getPosition() থেকে
প্লেব্যাক প্রোগ্রেস দেখায়,
এবং কিছু ক্ষেত্রে সিকবার ব্যবহার করে প্রোগ্রাম চালানোর সময় কোনও লোকেশনে
যাওয়া যায়। সিকবারের উপস্থিতি ও আচরণ এইসব নিয়ম দ্বারা নিয়ন্ত্রিত হয়:
- অ্যাক্টিভ
MediaSessionথাকলে এবং এর সময়সীমা (MediaMetadata.METADATA_KEY_DURATIONদ্বারা নির্দিষ্ট করা) শূন্যের বেশি হলে, সিকবার দেখা যায়। এর অর্থ হল, লাইভ স্ট্রিম ও রেডিও ব্রডকাস্টের মতো অনির্দিষ্ট স্ট্রিমের জন্য বারটি দেখা যায় না। - সেশন
ACTION_SEEK_TOপ্রয়োগ করলে, ব্যবহারকারী প্লেব্যাক লোকেশন নিয়ন্ত্রণ করতে সিকবার টেনে নিয়ে যেতে পারবেন।
Native MIDI API
Android Native MIDI API (AMidi) অ্যাপ্লিকেশন ডেভেলপারদের C/C++ কোডের মাধ্যমে MIDI ডেটা পাঠানো ও রিসিভ করার সুবিধা দেয়, যা তাদের C/C++ অডিও/কন্ট্রোল লজিকের সাথে আরও ঘনিষ্ঠভাবে ইন্টিগ্রেট করে এবং JNI-এর প্রয়োজনীয়তা কম করে।
আরও তথ্যের জন্য, Android Native MIDI API দেখুন।
MediaCodecInfo-তে উন্নতি
Android 10-এ
MediaCodecInfo-এ পদ্ধতি যোগ করা হয়েছে যা কোডেক সম্পর্কে আরও
তথ্য প্রকাশ করে।
আরও তথ্যের জন্য, মিডিয়া কোডেক দেখুন।
Thermal API
ডিভাইস খুব গরম হয়ে গেলে, এটি CPU এবং/অথবা GPU-এর পারফর্ম্যান্স কমিয়ে দিতে পারে এবং এর ফলে অ্যাপ ও গেমের পারফর্ম্যান্স অপ্রত্যাশিতভাবে প্রভাবিত হতে পারে। জটিল গ্রাফিক্স, ভারী কম্পিউটেশন বা একটানা নেটওয়ার্ক অ্যাক্টিভিটি ব্যবহার করে এমন অ্যাপে সমস্যা হওয়ার সম্ভাবনা বেশি থাকে এবং চিপসেট ও কোর ফ্রিকোয়েন্সি, ইন্টিগ্রেশনের লেভেল এবং ডিভাইসের প্যাকেজিং ও ফর্ম ফ্যাক্টরের উপর ভিত্তি করে বিভিন্ন ডিভাইসে এই সমস্যাগুলি আলাদা হতে পারে।
Android 10-এ, অ্যাপ এবং গেমগুলি ডিভাইসে পরিবর্তনগুলি নিরীক্ষণ করতে এবং স্বাভাবিক তাপমাত্রা পুনরুদ্ধার করতে কম পাওয়ার ব্যবহার বজায় রাখার জন্য পদক্ষেপ নিতে একটি থার্মাল API ব্যবহার করতে পারে। অ্যাপ PowerManager-এ লিসেনার রেজিস্টার করে, যার মাধ্যমে সিস্টেম হালকা ও মাঝারি থেকে শুরু করে গুরুতর, সঙ্কটজনক, জরুরি এবং শাটডাউন পর্যন্ত চলমান থার্মাল স্ট্যাটাস রিপোর্ট করে।
ডিভাইস থার্মাল স্ট্রেস রিপোর্ট করলে, অ্যাপ ও গেম বিভিন্ন উপায়ে পাওয়ারের ব্যবহার কমাতে চলমান অ্যাক্টিভিটি বন্ধ করে সাহায্য করতে পারে। যেমন, স্ট্রিমিং অ্যাপ রেজোলিউশন/বিট রেট বা নেটওয়ার্ক ট্রাফিক কমাতে পারে, ক্যামেরা অ্যাপ ফ্ল্যাশ বা ইনটেনসিভ ইমেজ এনহ্যান্সমেন্ট বন্ধ করতে পারে, গেম ফ্রেম রেট বা পলিগন টেসেলেশন কমাতে পারে, মিডিয়া অ্যাপ স্পিকারের ভলিউম কমাতে পারে এবং ম্যাপ অ্যাপ জিপিএস বন্ধ করতে পারে।
থার্মাল API-এর জন্য একটি নতুন ডিভাইস HAL লেয়ার প্রয়োজন—এটি বর্তমানে Android 10-এ চলা Pixel ডিভাইসে কাজ করে এবং আমরা যত তাড়াতাড়ি সম্ভব ইকোসিস্টেমে ব্যাপক সহায়তা আনতে আমাদের ডিভাইস-মেকার পার্টনারদের সাথে কাজ করছি।
ক্যামেরা ও ছবি
Android 10-এ ক্যামেরা ও ছবি সংক্রান্ত নিম্নলিখিত নতুন ফিচার যোগ করা হয়েছে:
মোনোক্রোম ক্যামেরা সাপোর্ট
Android 9 (API লেভেল ২৮) প্রথম মোনোক্রোম ক্যামেরা ফিচার নিয়ে আসে। Android 10-এ মনোক্রোম ক্যামেরা সাপোর্টে বেশ কিছু উন্নতি করা হয়েছে:
- মেমরি দক্ষতা উন্নত করতে Y8 স্ট্রিম ফর্ম্যাট সাপোর্ট।
- মনোক্রোম র DNG ক্যাপচার করার জন্য সহায়তা।
- সাধারণ মনোক্রোম ক্যামেরা এবং নিয়ার ইনফ্রারেড ক্যামেরার মধ্যে পার্থক্য করার জন্য MONO এবং NIR CFA এনিউমারেশন চালু করা।
নেটিভ মনোক্রোম ছবি ক্যাপচার করতে আপনি এই ফিচার ব্যবহার করতে পারেন। একটি লজিক্যাল মাল্টি-ক্যামেরা ডিভাইস, কম আলোতে আরও ভালো ছবির কোয়ালিটি পেতে, ফিজিক্যাল সাব-ক্যামেরা হিসেবে মনোক্রোম ক্যামেরা ব্যবহার করতে পারে।
ডায়নামিক ডেপথ ফর্ম্যাট
Android 10 থেকে শুরু করে, ক্যামেরা, ডাইনামিক ডেপথ ফর্ম্যাট (DDF) নামক একটি নতুন স্কিমা ব্যবহার করে, একটি আলাদা ফাইলে ছবির ডেপথ ডেটা স্টোর করতে পারে। অ্যাপ JPG ছবি ও তার ডেপথ মেটাডেটা, দুটিই অনুরোধ করতে পারে, সেই তথ্য ব্যবহার করে পোস্ট-প্রসেসিংয়ে তারা যে কোনও ব্লার প্রয়োগ করতে পারে, আসল ছবির ডেটা পরিবর্তন না করেই।
এই ফর্ম্যাটের স্পেসিফিকেশন পড়তে, Dynamic Depth ফর্ম্যাট দেখুন।
হাই এফিসিয়েন্সি ইমেজ ফাইল ফর্ম্যাট
হাই এফিসিয়েন্সি ইমেজ ফাইল (HEIF) ফর্ম্যাট হল একটি স্ট্যান্ডার্ড ছবি ও ভিডিও ফর্ম্যাট যা অন্যান্য ফাইল ফর্ম্যাটের তুলনায় আরও উন্নত কোয়ালিটির এনকোডিং ও ছোট ফাইল সাইজ প্রদান করে।
ফাইলের ফর্ম্যাট সম্পর্কে আরও জানতে, HEIC দেখুন।
মাল্টি-ক্যামেরায় উন্নতি
Android 10-এ একাধিক ক্যামেরাকে একটি লজিক্যাল ক্যামেরায় ফিউজ করার সুবিধা উন্নত করা হয়েছে, এই ফিচারটি Android 9 (API লেভেল ২৮)-এ প্রথম চালু করা হয়। Camera2 API-তে নিম্নলিখিতগুলি যোগ করা হয়েছে:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)—ক্যামেরা ক্যাপচার সেশন তৈরি করার জন্য পাস করা সেশন কনফিগারেশন ব্যবহার করা যাবে কিনা তা কোয়েরি করার সুবিধা দেয়।LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID—লজিক্যাল ক্যামেরা ডিভাইসের ব্যাক-আপ হিসেবে কাজ করা অ্যাক্টিভ ফিজিক্যাল ক্যামেরার আইডি নির্ধারণ করতে আপনাকে সাহায্য করে। আরও ভালো পাওয়ার এফিসিয়েন্সি পেতে, আপনি লজিক্যাল স্ট্রিম ও ফিজিক্যাল সাবক্যামেরা স্ট্রিমের জন্য অনুরোধ করতে, ফেরত পাওয়া আইডি ব্যবহার করতে পারবেন।
অ্যাক্সেসিবিলিটি পরিষেবা API
Android 10-এ নিম্নলিখিত নতুন অ্যাক্সেসিবিলিটি পরিষেবা ফিচার ও API চালু করা হয়েছে:
AccessibilityNodeInfo এন্ট্রি কী ফ্ল্যাগ
Android 10 থেকে, আপনি
isTextEntryKey() কল করে
নির্ধারণ করতে পারবেন যে প্রদত্ত AccessibilityNodeInfo টেক্সট এন্ট্রি কী
যা কীবোর্ড বা কীপ্যাডের অংশ।
অ্যাক্সেসিবিলিটি ডায়ালগ পড়ে শোনানো
অ্যাক্সেসিবিলিটি পরিষেবা চালু করার জন্য ব্যবহারকারীকে অ্যাক্সেসিবিলিটি শর্টকাট ব্যবহার করতে হলে, Android 10-এ পরিষেবা অনুরোধ করলে, ডায়ালগের সাথে টেক্সট-টু-স্পিচ প্রম্পট দেখানোর অনুমতি দেয়।
জেসচার নেভিগেশন চালু থাকলে অ্যাক্সেসিবিলিটি শর্টকাট
Android ১০-এ জেসচার নেভিগেশন ফিচার চালু থাকলে, অ্যাক্সেসিবিলিটি বোতাম দেখা যায় না বা বেছে নেওয়া যায় না। অ্যাক্সেসিবিলিটি পরিষেবা মেনু অ্যাক্সেস করতে, ব্যবহারকারীকে অবশ্যই নিম্নলিখিত জেসচারের মধ্যে যেকোনও একটি করতে হবে:
- দুটো আঙ্গুল দিয়ে উপরের দিকে সোয়াইপ করুন।
- দুটি আঙুল দিয়ে উপরের দিকে সোয়াইপ করে ধরে রাখুন।
ফিজিক্যাল কীবোর্ডের জন্য অ্যাক্সেসিবিলিটি শর্টকাট
Android ১০-এ, ব্যবহারকারীরা ফিজিক্যাল কীবোর্ডে Control+Alt+Z প্রেস করে অ্যাক্সেসিবিলিটি শর্টকাট ট্রিগার করতে পারবেন।
সফ্ট কীবোর্ড কন্ট্রোলার এনহ্যান্সমেন্ট
Android 10-এ, অ্যাক্সেসিবিলিটি পরিষেবা সফ্ট কীবোর্ড দেখানোর জন্য অনুরোধ করতে পারে, এমনকি ডিভাইস হার্ড কীবোর্ড অ্যাটাচ করা আছে বলে শনাক্ত করলেও। ব্যবহারকারীরা এই আচরণ ওভাররাইড করতে পারবেন।
ব্যবহারকারীর নির্ধারণ করা অ্যাক্সেসিবিলিটি টাইম-আউট
Android 10-এ
getRecommendedTimeoutMillis()
API চালু করা হয়েছে। এই পদ্ধতি ইন্টার্যাক্টিভ ও নন-ইন্টার্যাক্টিভ UI এলিমেন্টের জন্য ব্যবহারকারীর দ্বারা নির্ধারিত টাইম-আউটের ক্ষেত্রে সহায়তা প্রদান করে। রিটার্ন ভ্যালু ব্যবহারকারীর পছন্দ এবং অ্যাক্সেসিবিলিটি পরিষেবা API,
উভয়ের দ্বারাই প্রভাবিত হয়।
অটোফিল সংক্রান্ত উন্নতি
Android 10-এ অটোফিল পরিষেবায় নিম্নলিখিত উন্নতি করা হয়েছে।
মানানসই হওয়া সম্পর্কিত অটোফিল অনুরোধ
অটোফিল অনুরোধ কম্প্যাটিবিলিটি মোডের মাধ্যমে জেনারেট করা হয়েছে কিনা তা নির্ধারণ করতে আপনি
FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
ফ্ল্যাগ ব্যবহার করতে পারেন।
একই সাথে ইউজারনেম ও পাসওয়ার্ড সেভ করুন
আপনি এমন ক্ষেত্রে সহায়তা করতে পারেন যেখানে কোনও অ্যাপ্লিকেশন ব্যবহারকারীর নাম, পাসওয়ার্ড এবং অন্যান্য ফিল্ড দেখানোর জন্য একাধিক অ্যাক্টিভিটি ব্যবহার করে। এর জন্য
SaveInfo.FLAG_DELAY_SAVE
ফ্ল্যাগ ব্যবহার করতে হবে।
সেভ UI-এর সাথে ব্যবহারকারীর ইন্টার্যাকশন
আপনি ডায়ালগে অ্যাকশন লিসেনার সেট করে এবং সংশ্লিষ্ট পাসওয়ার্ড রিমোট ভিউয়ের দৃশ্যমানতা পরিবর্তন করে সেভ ডায়ালগে পাসওয়ার্ড ফিল্ড দেখাতে এবং লুকাতে পারেন।
ডেটাসেট আপডেট করার জন্য সহায়তা
'অটোফিল' ফিচার আগে থেকে থাকা পাসওয়ার্ড আপডেট করতে পারে। যেমন, কোনও ব্যবহারকারী আগে থেকেই পাসওয়ার্ড সেভ করে রাখলে এবং নতুন পাসওয়ার্ড সেভ করলে, অটোফিল ব্যবহারকারীকে নতুন পাসওয়ার্ড সেভ করার পরিবর্তে আগে থেকে থাকা পাসওয়ার্ড আপডেট করার জন্য প্রম্পট করে।
ফিল্ড ক্লাসিফিকেশন সংক্রান্ত উন্নতি
Android 10-এ ফিল্ড ক্লাসিফিকেশন API-এর জন্য নিম্নলিখিত উন্নতিগুলি অন্তর্ভুক্ত করা হয়েছে।
UserData.Builder কনস্ট্রাক্টর
Builder
প্যাটার্নের সাথে আরও ভালোভাবে অ্যালাইন করার জন্য UserData.Builder
কনস্ট্রাক্টর পরিবর্তন করা হয়েছে।
একাধিক ধরনের বিভাগ আইডিতে একটি ভ্যালু ম্যাপ করার অনুমতি দিন
Android ১০-এ
UserData.Builder ব্যবহার করার সময়, আপনি এখন একাধিক ধরনের ক্যাটেগরি আইডিতে একটি ভ্যালু ম্যাপ করতে পারবেন। আগের
রিলিজে, কোনও ভ্যালু একাধিকবার যোগ করা হলে, একটি ব্যতিক্রম থ্রো করা হত।
ক্রেডিট কার্ড নম্বরের জন্য উন্নত সহায়তা
ফিল্ড ক্লাসিফিকেশন এখন ক্রেডিট কার্ড নম্বরের শেষ চারটি সংখ্যা হিসেবে চার-সংখ্যার নম্বর শনাক্ত করতে পারে।
অ্যাপ-নির্দিষ্ট ফিল্ড ক্লাসিফিকেশনের জন্য সহায়তা
Android 10-এ
FillResponse.setUserData() যোগ করা হয়েছে,
যা আপনাকে সেশনের সময়সীমার জন্য অ্যাপ-নির্দিষ্ট ব্যবহারকারীর ডেটা সেট করার অনুমতি দেয়।
এটি অটোফিল পরিষেবাকে অ্যাপ-নির্দিষ্ট কন্টেন্ট সহ ফিল্ডের ধরন শনাক্ত করতে সাহায্য করে।
UI এবং সিস্টেম কন্ট্রোল
Android 10-এ ইউজার ইন্টারফেসে নিম্নলিখিত উন্নতি করা হয়েছে:
JVMTI PopFrame ক্যাপ সাপোর্ট করে
Android 10-এ Android JVMTI ইমপ্লিমেন্টেশনে
can_pop_frames
ক্ষমতার জন্য সহায়তা যোগ করা হয়েছে। ডিবাগ করার সময়, এই ফিচার
আপনাকে ব্রেকপয়েন্টে পজ করার পরে ফাংশন আবার রান করতে এবং লোকাল, গ্লোবাল বা ফাংশনের ইমপ্লিমেন্টেশন
অ্যাডজাস্ট করতে দেয়। আরও তথ্যের জন্য, Oracle-এর পপ ফ্রেম রেফারেন্স পৃষ্ঠা দেখুন।
Surface control API
Android 10-এ সিস্টেম-কম্পোজিটর
(SurfaceFlinger)-এ লো-লেভেল অ্যাক্সেসের জন্য
SurfaceControl API
প্রদান করা হয়। বেশিরভাগ ব্যবহারকারীর জন্য, কম্পোজিটর ব্যবহার করার সঠিক উপায় হল SurfaceView। SurfaceControl API নির্দিষ্ট কিছু ক্ষেত্রে উপযোগী হতে পারে, যেমন:
- একাধিক সারফেসের সিঙ্ক্রোনাইজেশন
- ক্রস-প্রসেস সারফেস এম্বেডিং
- নিম্ন-স্তরের লাইফটাইম ম্যানেজমেন্ট
SurfaceControl API, SDK এবং NDK বাইন্ডিং,
উভয় ক্ষেত্রেই উপলভ্য।
NDK প্রয়োগের মধ্যে কম্পোজিটরের সাথে বাফার ম্যানুয়ালি এক্সচেঞ্জ করার জন্য API অন্তর্ভুক্ত থাকে। এটি সেইসব ব্যবহারকারীদের জন্য বিকল্প প্রদান করে যারা
BufferQueue-এর
সীমাবদ্ধতার সম্মুখীন হয়েছেন।
WebView হ্যাং রেন্ডারার শনাক্তকরণ
Android 10-এ
WebViewRenderProcessClient
অ্যাবস্ট্রাক্ট ক্লাস চালু করা হয়েছে, যা অ্যাপ ব্যবহার করে শনাক্ত করতে পারে যে
WebView কাজ করছে কিনা। এই ক্লাস
ব্যবহার করতে:
- আপনার নিজস্ব সাবক্লাস নির্ধারণ করুন এবং এর
onRenderProcessResponsive()এবংonRenderProcessUnresponsive()পদ্ধতি প্রয়োগ করুন। - এক বা একাধিক
WebViewঅবজেক্টে আপনারWebViewRenderProcessClient-এর ইনস্ট্যান্স অ্যাটাচ করুন। WebViewকাজ না করলে, সিস্টেম ক্লায়েন্টেরonRenderProcessUnresponsive()মেথড কল করে,WebViewওWebViewRenderProcessপাস করে। (WebViewসিঙ্গল-প্রসেস হলে,WebViewRenderProcessপ্যারামিটার নাল হয়।) আপনার অ্যাপ উপযুক্ত অ্যাকশন নিতে পারে, যেমন ব্যবহারকারীকে রেন্ডারিং প্রসেস থামাতে চান কিনা তা জিজ্ঞাসা করে একটি ডায়ালগ বক্স দেখানো।
WebView যদি কাজ না করে, তাহলে সিস্টেম নির্দিষ্ট সময় অন্তর (প্রতি পাঁচ সেকেন্ডে একবারের বেশি নয়) onRenderProcessUnresponsive()-কে কল করে,
কিন্তু অন্য কোনও অ্যাকশন নেয় না।
WebView আবার রেসপন্স করলে, সিস্টেম onRenderProcessResponsive()-কে একবারই কল করে।
সেটিংস প্যানেল
Android 10-এ সেটিংস প্যানেল নামে একটি API চালু করা হয়েছে, যার মাধ্যমে অ্যাপ ব্যবহারকারীদের তাদের অ্যাপের প্রসঙ্গে সেটিংস দেখাতে পারে। এর ফলে, অ্যাপ ব্যবহার করার জন্য NFC বা মোবাইল ডেটা-এর মতো বিষয় পরিবর্তন করতে ব্যবহারকারীদের সেটিংস-এ যেতে হয় না।
যেমন, ধরুন কোনও ব্যবহারকারী তার ডিভাইস বিমান মোডে থাকাকালীন ওয়েব ব্রাউজার খুললেন। Android ১০-এর আগে, অ্যাপটি শুধুমাত্র একটি সাধারণ মেসেজ দেখাতে পারত যেখানে ব্যবহারকারীকে কানেক্টিভিটি ফিরিয়ে আনতে সেটিংস খুলতে বলা হত। Android ১০-এর মাধ্যমে, ব্রাউজার অ্যাপ ইনলাইন প্যানেল দেখাতে পারে যেখানে বিমান মোড, ওয়াই-ফাই (আশেপাশের নেটওয়ার্ক সহ) এবং মোবাইল ডেটার মতো কানেক্টিভিটি সংক্রান্ত গুরুত্বপূর্ণ সেটিংস দেখানো হয়। এই প্যানেলের মাধ্যমে, ব্যবহারকারীরা অ্যাপ থেকে না বেরিয়েই কানেক্টিভিটি ফিরিয়ে আনতে পারবেন।
সেটিংস প্যানেল দেখাতে, নিম্নলিখিত
Settings.Panel অ্যাকশনের মধ্যে একটির সাথে ইনটেন্ট ফায়ার করুন:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
জাভা
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type এর মধ্যে একটি হতে পারে:
ACTION_INTERNET_CONNECTIVITY- ইন্টারনেট কানেক্টিভিটি সম্পর্কিত সেটিংস দেখায়, যেমন বিমান মোড, ওয়াই-ফাই, এবং মোবাইল ডেটা।
ACTION_WIFI- ওয়াই-ফাই সেটিংস দেখায়, কিন্তু অন্যান্য কানেক্টিভিটি সেটিংস নয়। এটি সেইসব অ্যাপের জন্য উপযোগী যেগুলি বড় ফাইল আপলোড বা ডাউনলোড করার জন্য ওয়াই-ফাই কানেকশন ব্যবহার করে।
ACTION_NFC- নিয়ার ফিল্ড কমিউনিকেশন (NFC)-এর সাথে সম্পর্কিত সব সেটিংস দেখায়।
ACTION_VOLUME- সব অডিও স্ট্রিমের জন্য ভলিউম সেটিংস দেখায়।
শেয়ারিং উন্নত করা
Android ১০ শেয়ার করার ক্ষেত্রে বেশ কিছু উন্নতি প্রদান করে:
Sharing Shortcuts API
শেয়ারিং শর্টকাট API Direct Share API-এর জায়গা নেয়।
চাহিদা অনুযায়ী ফলাফল রিঅ্যাক্টিভভাবে ফিরিয়ে আনার পরিবর্তে, শেয়ারিং শর্টকাট API
অ্যাপকে সরাসরি শেয়ার টার্গেট আগে থেকে প্রকাশ করতে দেয়। ShortcutManager
কীভাবে কাজ করে তা এখানে দেওয়া হল।
দুটি API একই রকম হওয়ায়, দুটি ফিচারই যাতে সহজে ব্যবহার করা যায়, তার জন্য আমরা ShortcutInfo
API আরও উন্নত করেছি। শেয়ারিং শর্টকাট API-এর মাধ্যমে, আপনি সরাসরি কোনও শেয়ার টার্গেটে
বিভাগ বা লোকজন অ্যাসাইন করতে পারবেন। একই অ্যাপ আপডেট না করা পর্যন্ত বা অ্যাপটি আনইনস্টল না করা পর্যন্ত
শেয়ার টার্গেট সিস্টেমে থেকে যায়।
পুরনো ডাইরেক্ট শেয়ার মেকানিজম এখনও কাজ করে, তবে যে অ্যাপ এটি ব্যবহার করে সেটির অগ্রাধিকার শেয়ারিং শর্টকাট API ব্যবহার করা অ্যাপের চেয়ে কম।
ShortcutInfo.Builder
শেয়ার টার্গেট সম্পর্কে অতিরিক্ত তথ্য প্রদান করার জন্য পদ্ধতি যোগ ও উন্নত করে।
সরাসরি টার্গেট শেয়ার করুন
আপনি ডাইরেক্ট শেয়ার টার্গেট হিসেবে ডায়নামিক শর্টকাট প্রকাশ করতে পারবেন। সরাসরি শেয়ার টার্গেট প্রকাশ করুন দেখুন।
ShortcutManagerCompat
হল একটি নতুন AndroidX API যা পুরনো DirectShare API-এর সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদান করে। শেয়ার
টার্গেট প্রকাশ করার জন্য এটিই হল সবচেয়ে ভালো উপায়।
টেক্সটের প্রিভিউ দেখা হচ্ছে
কোনও অ্যাপ টেক্সট কন্টেন্ট শেয়ার করলে, এটি Sharesheet UI-তে কন্টেন্টের ঐচ্ছিক প্রিভিউ দেখাতে পারে।
রিচ টেক্সট প্রিভিউ যোগ করা দেখুন
আরও জানুন
অ্যাপ কীভাবে ডেটা শেয়ার করতে পারে সেই সম্পর্কে আরও জানতে, অন্যান্য অ্যাপে সাধারণ ডেটা পাঠানো এবং অন্যান্য অ্যাপ থেকে সাধারণ ডেটা পাওয়া দেখুন
ডার্ক থিম
Android 10-এ ডার্ক থিম উপলভ্য যা Android সিস্টেম UI এবং ডিভাইসে চলা অ্যাপ, উভয়ের ক্ষেত্রেই প্রযোজ্য। সম্পূর্ণ তথ্য পেতে, ডার্ক থিম দেখুন।
ফোরগ্রাউন্ড পরিষেবার ধরন
Android 10-এ
foregroundServiceType
XML ম্যানিফেস্ট অ্যাট্রিবিউট চালু করা হয়েছে, যা আপনি একাধিক নির্দিষ্ট পরিষেবার সংজ্ঞায় অন্তর্ভুক্ত করেন। কোনও নির্দিষ্ট পরিষেবার জন্য একাধিক ফোরগ্রাউন্ড পরিষেবার ধরন অ্যাসাইন করা সম্ভব,
যদিও এটি খুব কমই উপযুক্ত হয়।
নিম্নলিখিত সারণীতে বিভিন্ন ফোরগ্রাউন্ড পরিষেবার ধরন এবং পরিষেবাগুলি দেখানো হয়েছে যেখানে একটি নির্দিষ্ট ধরন ঘোষণা করা উপযুক্ত:
| ফোরগ্রাউন্ড পরিষেবার ধরন | এই ধরনের পরিষেবা ঘোষণা করা উচিত এমন পরিষেবার জন্য ব্যবহারের উদাহরণ |
|---|---|
connectedDevice
| হালকা ও ছোট ফিটনেস ট্র্যাকার মনিটর করা |
dataSync
| নেটওয়ার্ক থেকে ফাইল ডাউনলোড করা |
location
| ব্যবহারকারীর শুরু করা অ্যাকশন চালিয়ে যাওয়া |
mediaPlayback
| অডিও বুক, পডকাস্ট বা মিউজিক চালান |
mediaProjection
| অল্প সময়ের জন্য ডিভাইসের ডিসপ্লের ভিডিও রেকর্ড করুন |
phoneCall
| চলমান ফোন কল ম্যানেজ করুন |
Kotlin
Kotlin ডেভেলপমেন্টের জন্য Android 10-এ নিম্নলিখিত আপডেট অন্তর্ভুক্ত আছে।
libcore API-এর জন্য নালেবিলিটি অ্যানোটেশন
Android 10, libcore API-এর জন্য SDK-তে নালেবিলিটি অ্যানোটেশনের কভারেজ উন্নত করে। এইসব অ্যানোটেশন, Android Studio-তে Kotlin বা Java নালেবিলিটি বিশ্লেষণ ব্যবহার করছেন এমন অ্যাপ ডেভেলপারদের, এইসব API-এর সাথে ইন্টার্যাক্ট করার সময় নালনেস সংক্রান্ত তথ্য পেতে সাহায্য করে।
সাধারণত, Kotlin-এ নালেবিলিটি সংক্রান্ত চুক্তি লঙ্ঘন করলে কম্পাইলেশন
সংক্রান্ত সমস্যা হয়। আপনার আগে থেকে থাকা কোডের সাথে মানানসই কিনা তা নিশ্চিত করতে, শুধুমাত্র
@RecentlyNullable এবং @RecentlyNonNull অ্যানোটেশন যোগ করা হয়েছে। এর অর্থ হল
নালেবিলিটি সংক্রান্ত লঙ্ঘনের ফলে সমস্যার পরিবর্তে সতর্কতা দেখানো হয়।
এছাড়াও, Android 9-এ যোগ করা যেকোনও @RecentlyNullable বা @RecentlyNonNull অ্যানোটেশন
পরিবর্তন করে যথাক্রমে @Nullable এবং @NonNull করা হচ্ছে।
এর অর্থ হল, Android ১০ ও তার পরবর্তী ভার্সনে, নালেবিলিটি লঙ্ঘন হলে
সতর্কতার পরিবর্তে সমস্যা দেখা দেয়।
অ্যানোটেশন সংক্রান্ত পরিবর্তন সম্পর্কে আরও জানতে, Android Developers ব্লগে Android Pie SDK এখন আরও বেশি Kotlin-ফ্রেন্ডলি দেখুন।
NDK
Android ১০-এ নিম্নলিখিত NDK পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে।
ফাইল ডেসক্রিপটর মালিকানার উন্নত ডিবাগিং
Android 10-এ fdsan যোগ করা হয়েছে, যা আপনাকে ফাইল ডেসক্রিপটর মালিকানা সংক্রান্ত সমস্যা আরও সহজে খুঁজে পেতে ও সমাধান করতে সাহায্য করে।
ফাইল ডেসক্রিপটর মালিকানার অপব্যবহার সম্পর্কিত বাগ, যা সাধারণত use-after-close এবং double-close হিসেবে দেখা যায়, সেগুলি মেমরি অ্যালোকেশন use-after-free এবং double-free বাগের মতো, তবে এগুলি ডায়াগনসিস করা এবং সমাধান করা অনেক বেশি কঠিন। fdsan ফাইল ডেসক্রিপটর মালিকানা এনফোর্স করার মাধ্যমে ফাইল ডেসক্রিপটর অপব্যবহার শনাক্ত এবং/অথবা প্রতিরোধ করার চেষ্টা করে।
এইসব সমস্যার কারণে ক্র্যাশ হওয়া সম্পর্কে আরও জানতে, fdsan-এর মাধ্যমে শনাক্ত করা সমস্যা দেখুন। fdsan সম্পর্কে আরও তথ্যের জন্য, fdsan-এ Googlesource পৃষ্ঠা দেখুন।
ELF TLS
NDK ব্যবহার করে তৈরি করা অ্যাপ্লিকেশন, যার ন্যূনতম API লেভেল ২৯, সেটি emutls-এর পরিবর্তে ELF TLS
ব্যবহার করতে পারে। থ্রেড-লোকাল ভেরিয়েবল ম্যানেজ করার এই পদ্ধতিকে সাপোর্ট করার জন্য
ডায়নামিক ও স্ট্যাটিক লিঙ্কার সাপোর্ট যোগ করা হয়েছে।
API লেভেল ২৮ ও তার নিচের ভার্সনের জন্য তৈরি করা অ্যাপের ক্ষেত্রে, libgcc/compiler-rt-এর জন্য
উন্নতি করা হয়েছে যাতে কিছু emutls সংক্রান্ত সমস্যার সমাধান করা যায়।
আরও তথ্যের জন্য, NDK ডেভেলপারদের জন্য Android-এ পরিবর্তন দেখুন।
রানটাইম
Android ১০-এ নিম্নলিখিত রানটাইম পরিবর্তন অন্তর্ভুক্ত আছে।
Mallinfo-ভিত্তিক গার্বেজ সংগ্রহ ট্রিগার করা হচ্ছে
ছোট প্ল্যাটফর্মের Java অবজেক্ট যখন C++ হিপে বিশাল অবজেক্টকে রেফারেন্স করে, তখন C++ অবজেক্ট প্রায়ই শুধুমাত্র তখনই রিক্লেম করা যায় যখন Java অবজেক্ট সংগ্রহ করা হয় এবং, উদাহরণস্বরূপ, চূড়ান্ত করা হয়। আগের রিলিজে, প্ল্যাটফর্মটি Java অবজেক্টের সাথে যুক্ত অনেক C++ অবজেক্টের সাইজ অনুমান করেছে। এই অনুমান সবসময় সঠিক হয় না এবং মাঝে মাঝে এর ফলে মেমরির ব্যবহার অনেক বেড়ে যায়, কারণ প্ল্যাটফর্মটি যখন গার্বেজ সংগ্রহ করার কথা তখন তা করতে ব্যর্থ হয়।
Android ১০-এ, গার্বেজ কালেক্টর (GC) সিস্টেম malloc() দ্বারা বরাদ্দ করা হিপের মোট সাইজ
ট্র্যাক করে, যাতে বড় malloc()
বরাদ্দকরণ সবসময় GC-ট্রিগার করা গণনার মধ্যে অন্তর্ভুক্ত থাকে। Java এক্সিকিউশনের সাথে
প্রচুর সংখ্যক C++ অ্যালোকেশন ইন্টারলিভ করা অ্যাপের ক্ষেত্রে এর ফলে
গার্বেজ কালেকশন ফ্রিকোয়েন্সি বৃদ্ধি পেতে পারে। অন্যান্য অ্যাপের ক্ষেত্রে সামান্য কম হতে পারে।
টেস্টিং ও ডিবাগিং
Android 10-এ টেস্টিং ও ডিবাগিংয়ের জন্য নিম্নলিখিত উন্নতি অন্তর্ভুক্ত আছে।
অন-ডিভাইস সিস্টেম ট্রেসিংয়ের ক্ষেত্রে উন্নতি
Android ১০ থেকে, আপনি যখন অন-ডিভাইস সিস্টেম ট্রেস করেন তখন ট্রেসের সাইজ এবং সময়সীমার জন্য সীমা নির্দিষ্ট করতে পারেন। আপনি কোনও একটি ভ্যালু নির্দিষ্ট করলে, সিস্টেম একটি দীর্ঘ ট্রেস পারফর্ম করে, ট্রেস রেকর্ড করার সময় পর্যায়ক্রমে ট্রেস বাফারকে ডেস্টিনেশন ফাইলে কপি করে। আপনার উল্লেখ করা সাইজ বা সময়সীমা সম্পূর্ণ হলে ট্রেস সম্পূর্ণ হয়।
স্ট্যান্ডার্ড ট্রেসের মাধ্যমে আপনি যে ধরনের টেস্ট করেন তার থেকে আলাদা ধরনের টেস্ট করার জন্য এই অতিরিক্ত প্যারামিটার ব্যবহার করুন। যেমন, আপনি হয়ত পারফর্ম্যান্স সংক্রান্ত কোনও বাগ ডায়াগনসিস করছেন যা আপনার অ্যাপ অনেকক্ষণ ধরে চলার পরেই দেখা যায়। এই ক্ষেত্রে, আপনি সারাদিন ধরে একটি দীর্ঘ ট্রেস রেকর্ড করতে পারেন এবং তারপরে রিপোর্টে CPU শিডিউলার, ডিস্ক অ্যাক্টিভিটি, অ্যাপ থ্রেড এবং অন্যান্য ডেটা বিশ্লেষণ করতে পারেন যাতে আপনি বাগের কারণ নির্ধারণ করতে পারেন।
Android ১০ ও তার পরবর্তী ভার্সনে, ট্রেস ফাইল এমন একটি ফর্ম্যাটে সেভ করা হয় যা Perfetto-এর মাধ্যমে খোলা যায়, এটি পারফর্ম্যান্স ইনস্ট্রুমেন্টেশন ও ট্রেসিংয়ের জন্য একটি ওপেন-সোর্স প্রোজেক্ট। আপনি Perfetto ট্রেস ফাইল Systrace ফর্ম্যাটে কনভার্ট করতে পারবেন।
TextClassifier সংক্রান্ত উন্নতি
Android 10,
TextClassifier
ইন্টারফেসে অতিরিক্ত টেক্সট ক্লাসিফিকেশন কার্যকারিতা প্রদান করে।
ভাষা শনাক্তকরণ
detectLanguage()
পদ্ধতিটি আগে থেকে থাকা শ্রেণীবিভাগ পদ্ধতির মতোই কাজ করে। এটি
TextLanguage.Request
অবজেক্ট গ্রহণ করে এবং
TextLanguage
অবজেক্ট রিটার্ন করে।
TextLanguage অবজেক্টে ক্রমিক যুগ্মের (ordered pairs) একটি তালিকা থাকে। প্রতিটি জোড়ায়
একটি লোকেল এবং শ্রেণীবিভাগের জন্য সংশ্লিষ্ট কনফিডেন্স স্কোর থাকে।
সাজেস্ট করা কথোপকথন সংক্রান্ত অ্যাকশন
suggestConversationActions()
পদ্ধতিটি আগে থেকে থাকা শ্রেণীবিভাগ পদ্ধতির মতোই কাজ করে। এটি একটি
ConversationActions.Request
অবজেক্ট গ্রহণ করে এবং একটি
ConversationActions
অবজেক্ট রিটার্ন করে।
ConversationActions
অবজেক্টে
ConversationAction
অবজেক্টের তালিকা থাকে। প্রতিটি ConversationAction অবজেক্টে একটি সম্ভাব্য
সাজেস্ট করা অ্যাকশন এবং এর কনফিডেন্স স্কোর অন্তর্ভুক্ত থাকে।
বিজ্ঞপ্তিতে স্মার্ট রিপ্লাই/অ্যাকশন
Android 9-এ বিজ্ঞপ্তির মধ্যে সাজেস্ট করা উত্তর দেখানোর সুবিধা চালু করা হয়েছে। Android 10-এ এই সুবিধা আরও বাড়ানো হয়েছে, যাতে সাজেশন হিসেবে ইনটেন্ট-ভিত্তিক অ্যাকশন অন্তর্ভুক্ত করা যায়। এছাড়াও, প্ল্যাটফর্মটি অটোমেটিক এইসব সাজেশন জেনারেট করতে পারে। অ্যাপ এখনও নিজস্ব সাজেশন প্রদান করতে পারে অথবা সিস্টেম-জেনারেটেড সাজেশন থেকে অপ্ট-আউট করতে পারে।এইসব উত্তর জেনারেট করার জন্য ব্যবহৃত API হল
TextClassifier-এর অংশ,
এবং Android 10-এ ডেভেলপারদের জন্য সরাসরি উপলভ্য করা হয়েছে।
আরও তথ্যের জন্য TextClassifier-এর উন্নতি সংক্রান্ত বিভাগ
পড়ুন।
আপনার অ্যাপ যদি নিজস্ব সাজেশন প্রদান করে, তাহলে প্ল্যাটফর্ম কোনও অটোমেটিক সাজেশন
তৈরি করে না। আপনার অ্যাপের বিজ্ঞপ্তিতে কোনও সাজেস্ট করা উত্তর বা অ্যাকশন দেখাতে না চাইলে, setAllowGeneratedReplies()
এবং
setAllowSystemGeneratedContextualActions()
ব্যবহার করে সিস্টেম-জেনারেটেড উত্তর ও অ্যাকশন থেকে অপ্ট-আউট করতে পারবেন।