অ্যান্ড্রয়েড ১০ ব্যবহারকারী এবং ডেভেলপারদের জন্য দুর্দান্ত বৈশিষ্ট্য এবং ক্ষমতা উপস্থাপন করে। এই নথিতে ডেভেলপারদের জন্য কী কী উপলব্ধ তা তুলে ধরা হয়েছে।
API গুলি সম্পর্কে জানতে, API ডিফ রিপোর্টটি পড়ুন অথবা Android API রেফারেন্সটি দেখুন — "API লেভেল 29 এ যোগ করা হয়েছে এমন API গুলি" সন্ধান করুন। এছাড়াও, প্ল্যাটফর্ম পরিবর্তনগুলি আপনার অ্যাপগুলিকে কোথায় প্রভাবিত করতে পারে সে সম্পর্কে জানতে Android 10 আচরণ পরিবর্তনগুলি ( API লেভেল 29 এবং সমস্ত অ্যাপের জন্য) এবং গোপনীয়তা পরিবর্তনগুলি পরীক্ষা করে দেখতে ভুলবেন না।
নিরাপত্তা বৃদ্ধি
অ্যান্ড্রয়েড ১০ বেশ কিছু নিরাপত্তা বৈশিষ্ট্য উপস্থাপন করেছে, যা নিম্নলিখিত বিভাগগুলিতে সংক্ষেপে বর্ণনা করা হয়েছে।
উন্নত বায়োমেট্রিক প্রমাণীকরণ ডায়ালগ
অ্যান্ড্রয়েড ১০ বায়োমেট্রিক প্রমাণীকরণ সহায়তায় নিম্নলিখিত উন্নতিগুলি প্রবর্তন করে:
- বায়োমেট্রিক প্রমাণীকরণ ক্ষমতার জন্য একটি পরীক্ষা।
- একটি ফলব্যাক প্রক্রিয়া যা ব্যবহারকারীকে তাদের ডিভাইসের পিন, প্যাটার্ন বা পাসওয়ার্ড ব্যবহার করে প্রমাণীকরণ করতে দেয় যদি তারা তাদের বায়োমেট্রিক ইনপুট ব্যবহার করে প্রমাণীকরণ করতে না পারে।
- একটি ইঙ্গিত যা সিস্টেমকে বলে যে ব্যবহারকারী একটি অন্তর্নিহিত বায়োমেট্রিক পদ্ধতি ব্যবহার করে প্রমাণীকরণ করার পরে ব্যবহারকারীর নিশ্চিতকরণের প্রয়োজন হবে না। উদাহরণস্বরূপ, আপনি সিস্টেমকে বলতে পারেন যে ব্যবহারকারীর মুখ প্রমাণীকরণ ব্যবহার করে প্রমাণীকরণ করার পরে আর কোনও নিশ্চিতকরণের প্রয়োজন হবে না।
APK থেকে সরাসরি এমবেডেড DEX কোড চালান
অ্যান্ড্রয়েড ১০-এ, আপনি প্ল্যাটফর্মটিকে সরাসরি আপনার অ্যাপের APK ফাইল থেকে এমবেডেড DEX কোড চালাতে বলতে পারেন। যদি কোনও আক্রমণকারী ডিভাইসে স্থানীয়ভাবে সংকলিত কোডের সাথে হস্তক্ষেপ করতে সক্ষম হয়, তাহলে এই বিকল্পটি আক্রমণ প্রতিরোধ করতে সাহায্য করতে পারে।
আরও তথ্যের জন্য, APK থেকে সরাসরি এমবেডেড DEX কোড চালান দেখুন।
TLS 1.3 সাপোর্ট
অ্যান্ড্রয়েড ১০ টিএলএস ১.৩ এর জন্য সমর্থন যোগ করে। টিএলএস ১.৩ টিএলএস স্ট্যান্ডার্ডের একটি বড় সংশোধন যার মধ্যে পারফরম্যান্স সুবিধা এবং বর্ধিত সুরক্ষা অন্তর্ভুক্ত রয়েছে। আমাদের মানদণ্ডগুলি ইঙ্গিত দেয় যে টিএলএস ১.২ এর তুলনায় টিএলএস ১.৩ দিয়ে সুরক্ষিত সংযোগ স্থাপন করা ৪০% দ্রুত সম্ভব।
আমাদের TLS 1.3 বাস্তবায়ন সম্পর্কে আরও তথ্যের জন্য, সকল অ্যাপের জন্য আচরণ পরিবর্তন পৃষ্ঠার মধ্যে TLS বিভাগটি দেখুন।
পাবলিক কনস্ক্রিপ্ট এপিআই
অ্যান্ড্রয়েড ১০-এর হিসাবে, কনস্ক্রিপ্ট সুরক্ষা প্রদানকারী টিএলএস কার্যকারিতার জন্য একটি পাবলিক এপিআই অন্তর্ভুক্ত করে।
android.net.ssl অধীনে ক্লাসের সংগ্রহে এমন কার্যকারিতা অ্যাক্সেস করার জন্য স্ট্যাটিক পদ্ধতি রয়েছে যা জেনেরিক javax.net.ssl API থেকে পাওয়া যায় না। এই ক্লাসগুলির নামগুলি সংশ্লিষ্ট javax.net.ssl ক্লাসের বহুবচন হিসাবে অনুমান করা যেতে পারে। উদাহরণস্বরূপ, javax.net.ssl.SSLSocket এর উদাহরণগুলিতে পরিচালিত কোড পরিবর্তে SSLSockets থেকে পদ্ধতি ব্যবহার করতে পারে।
সংযোগ বৈশিষ্ট্য
অ্যান্ড্রয়েড ১০-এ নেটওয়ার্কিং এবং সংযোগ সম্পর্কিত বেশ কিছু উন্নতি অন্তর্ভুক্ত রয়েছে।
ওয়াই-ফাই নেটওয়ার্ক সংযোগ API
অ্যান্ড্রয়েড ১০ পিয়ার-টু-পিয়ার সংযোগের জন্য সমর্থন যোগ করে। এই বৈশিষ্ট্যটি আপনার অ্যাপকে অনুরোধকৃত নেটওয়ার্কের বৈশিষ্ট্য বর্ণনা করার জন্য WifiNetworkSpecifier ব্যবহার করে ডিভাইসটি সংযুক্ত অ্যাক্সেস পয়েন্টটি পরিবর্তন করতে ব্যবহারকারীকে অনুরোধ করতে সক্ষম করে। পিয়ার-টু-পিয়ার সংযোগটি নেটওয়ার্ক-প্রদানকারী নয় এমন উদ্দেশ্যে ব্যবহৃত হয়, যেমন Chromecast এবং Google Home হার্ডওয়্যারের মতো সেকেন্ডারি ডিভাইসের জন্য বুটস্ট্র্যাপিং কনফিগারেশন।
আরও তথ্যের জন্য, পিয়ার-টু-পিয়ার সংযোগের জন্য ওয়াই-ফাই নেটওয়ার্ক অনুরোধ API দেখুন।
ওয়াই-ফাই নেটওয়ার্ক সাজেশন এপিআই
অ্যান্ড্রয়েড ১০ আপনার অ্যাপের জন্য সমর্থন যোগ করে যা ব্যবহারকারীকে একটি ওয়াই-ফাই অ্যাক্সেস পয়েন্টে সংযোগ করতে প্রম্পট করে। আপনি কোন নেটওয়ার্কে সংযোগ করতে হবে তার জন্য পরামর্শ দিতে পারেন। প্ল্যাটফর্মটি আপনার এবং অন্যান্য অ্যাপের ইনপুটের উপর ভিত্তি করে শেষ পর্যন্ত কোন অ্যাক্সেস পয়েন্ট গ্রহণ করবে তা বেছে নেবে।
এই বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, Wi-Fi পরামর্শ দেখুন।
ওয়াই-ফাই উচ্চ-কর্মক্ষমতা এবং কম-বিলম্বিত মোডের উন্নতি
অ্যান্ড্রয়েড ১০ আপনাকে অন্তর্নিহিত মডেমকে একটি ইঙ্গিত প্রদান করতে দেয় যাতে লেটেন্সি কমানো যায়।
অ্যান্ড্রয়েড ১০ উচ্চ-কর্মক্ষমতা মোড এবং কম-বিলম্বিত মোডকে কার্যকরভাবে সমর্থন করার জন্য ওয়াই-ফাই লক এপিআই প্রসারিত করে। উচ্চ-কর্মক্ষমতা এবং কম-বিলম্বিত মোডের জন্য ওয়াই-ফাই পাওয়ার সেভ অক্ষম করা আছে এবং মডেম সমর্থনের উপর নির্ভর করে কম-বিলম্বিত মোডে আরও ল্যাটেন্সি অপ্টিমাইজেশন সক্ষম করা যেতে পারে।
লো-লেটেন্সি মোড কেবল তখনই সক্রিয় থাকে যখন লকটি অর্জনকারী অ্যাপ্লিকেশনটি ফোরগ্রাউন্ডে চলমান থাকে এবং স্ক্রিনটি চালু থাকে। লো-লেটেন্সি মোডটি রিয়েল-টাইম মোবাইল গেমিং অ্যাপ্লিকেশনগুলির জন্য বিশেষভাবে সহায়ক।
DNS রেজলভারে বিশেষায়িত লুকআপ
অ্যান্ড্রয়েড ১০ ক্লিয়ারটেক্সট লুকআপ এবং DNS-ওভার-TLS মোড উভয় ব্যবহার করে বিশেষায়িত DNS লুকআপের জন্য নেটিভ সাপোর্ট যোগ করে। পূর্বে, প্ল্যাটফর্ম DNS রেজলভার শুধুমাত্র A এবং AAAA রেকর্ড সমর্থন করত, যা শুধুমাত্র নামের সাথে সম্পর্কিত IP ঠিকানাগুলি অনুসন্ধান করার অনুমতি দেয়, কিন্তু অন্য কোনও রেকর্ড প্রকার সমর্থন করত না। DnsResolver API জেনেরিক, অ্যাসিঙ্ক্রোনাস রেজোলিউশন প্রদান করে, যা আপনাকে SRV , NAPTR এবং অন্যান্য রেকর্ড প্রকারগুলি অনুসন্ধান করতে সক্ষম করে। মনে রাখবেন যে প্রতিক্রিয়া বিশ্লেষণ করার কাজটি অ্যাপের উপর ছেড়ে দেওয়া হয়েছে।
NDK-ভিত্তিক অ্যাপগুলির জন্য, android_res_nsend দেখুন।
ওয়াই-ফাই সহজ সংযোগ
অ্যান্ড্রয়েড ১০ আপনাকে WPS-এর পরিবর্তে পিয়ার ডিভাইসে Wi-Fi শংসাপত্র সরবরাহ করতে Easy Connect ব্যবহার করতে সক্ষম করে, যা অপ্রচলিত। অ্যাপগুলি ACTION_PROCESS_WIFI_EASY_CONNECT_URI ইন্টেন্ট ব্যবহার করে তাদের সেটআপ এবং প্রভিশনিং ফ্লোতে Easy Connect সংহত করতে পারে।
এই বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, Wi-Fi Easy Connect দেখুন।
ওয়াই-ফাই ডাইরেক্ট সংযোগ API
WifiP2pConfig এবং WifiP2pManager API ক্লাসগুলিতে পূর্বনির্ধারিত তথ্য ব্যবহার করে Wi-Fi Direct-এ দ্রুত সংযোগ স্থাপনের ক্ষমতা সমর্থন করার জন্য Android 10-এ আপডেট রয়েছে। এই তথ্য ব্লুটুথ বা NFC-এর মতো একটি পার্শ্ব চ্যানেলের মাধ্যমে ভাগ করা হয়।
নিম্নলিখিত কোড নমুনাটি পূর্বনির্ধারিত তথ্য ব্যবহার করে কীভাবে একটি গ্রুপ তৈরি করতে হয় তা দেখায়:
কোটলিন
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() পরিবর্তে নিম্নলিখিতগুলি ব্যবহার করুন:
কোটলিন
manager.connect(channel, config, null)
জাভা
manager.connect(channel, config, null);
ব্লুটুথ LE সংযোগ-ভিত্তিক চ্যানেল (CoC)
অ্যান্ড্রয়েড ১০ আপনার অ্যাপকে দুটি BLE ডিভাইসের মধ্যে বৃহত্তর ডেটা স্ট্রিম স্থানান্তর করতে BLE CoC সংযোগ ব্যবহার করতে সক্ষম করে। এই ইন্টারফেসটি বাস্তবায়নকে সহজ করার জন্য ব্লুটুথ এবং সংযোগ মেকানিক্সের সারাংশ তৈরি করে।
টেলিফোনি বৈশিষ্ট্য
অ্যান্ড্রয়েড ১০-এ টেলিফোনি সম্পর্কিত বেশ কিছু উন্নতি অন্তর্ভুক্ত রয়েছে।
কল মানের উন্নতি
অ্যান্ড্রয়েড ১০, এই বৈশিষ্ট্যটি সমর্থন করে এমন ডিভাইসগুলিতে চলমান আইপি মাল্টিমিডিয়া সাবসিস্টেম (আইএমএস) কলের গুণমান সম্পর্কে তথ্য সংগ্রহ করার ক্ষমতা যুক্ত করে, যার মধ্যে নেটওয়ার্কে আসা এবং আসা কলের গুণমান অন্তর্ভুক্ত রয়েছে।
কল স্ক্রিনিং এবং কলার আইডি
অ্যান্ড্রয়েড ১০ আপনার অ্যাপটিকে ব্যবহারকারীর ঠিকানা বইতে নেই এমন কলগুলিকে সম্ভাব্য স্প্যাম কল হিসেবে শনাক্ত করার এবং ব্যবহারকারীর পক্ষ থেকে স্প্যাম কলগুলিকে নীরবে প্রত্যাখ্যান করার একটি উপায় প্রদান করে। এই ব্লক করা কলগুলির তথ্য কল লগে ব্লক করা কল হিসাবে লগ করা হয় যাতে ব্যবহারকারীরা কল মিস করলে আরও স্বচ্ছতা প্রদান করতে পারে। এই API ব্যবহারের ফলে কল স্ক্রিনিং এবং কলার আইডি কার্যকারিতা প্রদানের জন্য ব্যবহারকারীর কাছ থেকে READ_CALL_LOG অনুমতি নেওয়ার প্রয়োজনীয়তা দূর হয়।
কল রিডাইরেকশন পরিষেবা API
অ্যান্ড্রয়েড ১০ কল ইন্টেন্ট পরিচালনার পদ্ধতি পরিবর্তন করে। NEW_OUTGOING_CALL সম্প্রচারটি বন্ধ করে দেওয়া হয়েছে এবং CallRedirectionService API দিয়ে প্রতিস্থাপিত হয়েছে। CallRedirectionService API আপনাকে অ্যান্ড্রয়েড প্ল্যাটফর্ম দ্বারা করা আউটগোয়িং কলগুলি পরিবর্তন করার জন্য ইন্টারফেস সরবরাহ করে। উদাহরণস্বরূপ, তৃতীয় পক্ষের অ্যাপগুলি কলগুলি বাতিল করতে পারে এবং VoIP এর মাধ্যমে সেগুলিকে পুনরায় রুট করতে পারে।
বহিরাগত স্টোরেজে ফাইল তৈরির উন্নতি
স্কোপড স্টোরেজ চালু করার পাশাপাশি, অ্যান্ড্রয়েড ১০ বহিরাগত স্টোরেজ সম্পর্কিত নিম্নলিখিত ক্ষমতাগুলি যুক্ত করে:
- আপনার অ্যাপটিকে ডিস্কে লেখার সময় মিডিয়া ফাইলে এক্সক্লুসিভ অ্যাক্সেস দিতে আপনি
IS_PENDINGপতাকা ব্যবহার করতে পারেন। - যদি আপনি কোন নির্দিষ্ট স্থান সম্পর্কে অবগত থাকেন যেখানে ফাইলগুলি সংরক্ষণ করা উচিত, তাহলে আপনি সিস্টেমকে নতুন লেখা ফাইলগুলি কোথায় সংরক্ষণ করতে হবে তার একটি ইঙ্গিত দিতে পারেন।
- প্রতিটি বহিরাগত স্টোরেজ ডিভাইসের একটি অনন্য ভলিউম নাম থাকে।
মিডিয়া এবং গ্রাফিক্স
অ্যান্ড্রয়েড ১০ নিম্নলিখিত নতুন মিডিয়া এবং গ্রাফিক্স বৈশিষ্ট্য এবং API গুলি প্রবর্তন করে:
অডিও ইনপুট শেয়ার করা হচ্ছে
অ্যান্ড্রয়েড ১০ দুটি অ্যাপের জন্য একই সাথে অডিও ইনপুট শেয়ার করার ক্ষমতা যোগ করে। সম্পূর্ণ তথ্যের জন্য, অডিও ইনপুট শেয়ারিং দেখুন।
অডিও প্লেব্যাক ক্যাপচার
অ্যান্ড্রয়েড ১০ একটি অ্যাপকে অন্যান্য অ্যাপ থেকে অডিও প্লেব্যাক ক্যাপচার করার ক্ষমতা দেয়। সম্পূর্ণ তথ্যের জন্য, প্লেব্যাক ক্যাপচার দেখুন।
মিডিয়াস্টাইল বিজ্ঞপ্তিতে সিকবার
অ্যান্ড্রয়েড ১০ থেকে শুরু করে, MediaStyle নোটিফিকেশনে একটি সিকবার প্রদর্শিত হয়। সিকবারটি PlaybackState.getPosition() থেকে প্লেব্যাকের অগ্রগতি দেখায় এবং কিছু ক্ষেত্রে সিকবারটি প্লেিং প্রোগ্রামের কোনও স্থানে অনুসন্ধান করতে ব্যবহার করা যেতে পারে। সিকবারের উপস্থিতি এবং আচরণ এই নিয়মগুলি দ্বারা নিয়ন্ত্রিত হয়:
- যদি কোনও সক্রিয়
MediaSessionথাকে এবং এর সময়কাল (MediaMetadata.METADATA_KEY_DURATIONদ্বারা নির্দিষ্ট করা হয়েছে) শূন্যের বেশি হয়, তাহলে seekbarটি প্রদর্শিত হয়। এর অর্থ হল লাইভস্ট্রিম এবং রেডিও সম্প্রচারের মতো অনির্দিষ্ট স্ট্রিমগুলির জন্য বারটি প্রদর্শিত হয় না। - যদি সেশনটি
ACTION_SEEK_TOপ্রয়োগ করে, তাহলে ব্যবহারকারী প্লেব্যাক অবস্থান নিয়ন্ত্রণ করতে সিকবারটি টেনে আনতে পারবেন।
নেটিভ MIDI API
অ্যান্ড্রয়েড নেটিভ MIDI API (AMidi) অ্যাপ্লিকেশন ডেভেলপারদের C/C++ কোড ব্যবহার করে MIDI ডেটা পাঠানো এবং গ্রহণ করার ক্ষমতা দেয়, যা তাদের C/C++ অডিও/কন্ট্রোল লজিকের সাথে আরও ঘনিষ্ঠভাবে সংহত করে এবং JNI-এর প্রয়োজনীয়তা কমিয়ে দেয়।
আরও তথ্যের জন্য, Android Native MIDI API দেখুন।
MediaCodecInfo-এর উন্নতি
অ্যান্ড্রয়েড ১০ MediaCodecInfo এমন পদ্ধতি যোগ করে যা কোডেক সম্পর্কে আরও তথ্য প্রকাশ করে।
আরও তথ্যের জন্য, মিডিয়া কোডেক দেখুন।
থার্মাল এপিআই
যখন ডিভাইসগুলি খুব বেশি গরম হয়ে যায়, তখন তারা CPU এবং/অথবা GPU কে থ্রোটল করতে পারে এবং এটি অপ্রত্যাশিতভাবে অ্যাপ এবং গেমগুলিকে প্রভাবিত করতে পারে। জটিল গ্রাফিক্স, ভারী গণনা, বা টেকসই নেটওয়ার্ক কার্যকলাপ ব্যবহার করে এমন অ্যাপগুলিতে সমস্যা হওয়ার সম্ভাবনা বেশি থাকে এবং চিপসেট এবং কোর ফ্রিকোয়েন্সি, ইন্টিগ্রেশনের স্তর এবং ডিভাইস প্যাকেজিং এবং ফর্ম ফ্যাক্টরের উপর ভিত্তি করে ডিভাইসগুলিতে এই সমস্যাগুলি পরিবর্তিত হতে পারে।
অ্যান্ড্রয়েড ১০-এ, অ্যাপ এবং গেমগুলি ডিভাইসের পরিবর্তনগুলি পর্যবেক্ষণ করতে এবং স্বাভাবিক তাপমাত্রা পুনরুদ্ধারের জন্য কম পাওয়ার ব্যবহার বজায় রাখার জন্য পদক্ষেপ নিতে একটি থার্মাল এপিআই ব্যবহার করতে পারে। অ্যাপগুলি পাওয়ারম্যানেজারে একটি শ্রোতা নিবন্ধন করে , যার মাধ্যমে সিস্টেমটি হালকা এবং মাঝারি থেকে শুরু করে গুরুতর, গুরুতর, জরুরি এবং শাটডাউন পর্যন্ত চলমান তাপীয় অবস্থা রিপোর্ট করে।
যখন ডিভাইসটি তাপীয় চাপের রিপোর্ট করে, তখন অ্যাপ এবং গেমগুলি বিভিন্ন উপায়ে বিদ্যুৎ ব্যবহার কমাতে চলমান কার্যকলাপ বন্ধ করে সাহায্য করতে পারে। উদাহরণস্বরূপ, স্ট্রিমিং অ্যাপগুলি রেজোলিউশন/বিট রেট বা নেটওয়ার্ক ট্র্যাফিক কমাতে পারে, একটি ক্যামেরা অ্যাপ ফ্ল্যাশ বা নিবিড় চিত্র বর্ধন অক্ষম করতে পারে, একটি গেম ফ্রেম রেট বা বহুভুজ টেসেলেশন কমাতে পারে, একটি মিডিয়া অ্যাপ স্পিকারের ভলিউম কমাতে পারে এবং একটি মানচিত্র অ্যাপ GPS বন্ধ করতে পারে।
থার্মাল এপিআই-এর জন্য একটি নতুন ডিভাইস HAL লেয়ার প্রয়োজন—এটি বর্তমানে অ্যান্ড্রয়েড ১০ চালিত পিক্সেল ডিভাইসগুলিতে সমর্থিত এবং আমরা আমাদের ডিভাইস-নির্মাতা অংশীদারদের সাথে কাজ করছি যাতে যত তাড়াতাড়ি সম্ভব ইকোসিস্টেমে ব্যাপক সমর্থন আনা যায়।
ক্যামেরা এবং ছবি
অ্যান্ড্রয়েড ১০ নিম্নলিখিত নতুন ক্যামেরা- এবং ছবি-সম্পর্কিত বৈশিষ্ট্যগুলি প্রবর্তন করেছে:
একরঙা ক্যামেরা সাপোর্ট
অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) প্রথম একরঙা ক্যামেরা ক্ষমতা চালু করে। অ্যান্ড্রয়েড ১০ একরঙা ক্যামেরা সাপোর্টে বেশ কিছু উন্নতি যোগ করে:
- মেমোরি দক্ষতা উন্নত করতে Y8 স্ট্রিম ফর্ম্যাট সাপোর্ট।
- একরঙা কাঁচা DNG ক্যাপচারের জন্য সমর্থন।
- নিয়মিত একরঙা ক্যামেরা এবং কাছাকাছি ইনফ্রারেড ক্যামেরার মধ্যে পার্থক্য করার জন্য MONO এবং NIR CFA গণনার প্রবর্তন।
আপনি এই বৈশিষ্ট্যটি ব্যবহার করে একটি নেটিভ মনোক্রোম ছবি তুলতে পারেন। একটি লজিক্যাল মাল্টি-ক্যামেরা ডিভাইস কম আলোতে উন্নত মানের ছবির মান অর্জনের জন্য একটি মনোক্রোম ক্যামেরাকে একটি ভৌত সাব-ক্যামেরা হিসেবে ব্যবহার করতে পারে।
গতিশীল গভীরতা বিন্যাস
অ্যান্ড্রয়েড ১০ থেকে শুরু করে, ক্যামেরাগুলি একটি পৃথক ফাইলে একটি ছবির জন্য গভীরতার ডেটা সংরক্ষণ করতে পারে, যার নাম ডায়নামিক ডেপথ ফর্ম্যাট (DDF)। অ্যাপগুলি JPG ইমেজ এবং এর ডেপথ মেটাডেটা উভয়ের জন্যই অনুরোধ করতে পারে, মূল ইমেজ ডেটা পরিবর্তন না করেই পোস্ট-প্রসেসিংয়ে যেকোনো ব্লার প্রয়োগ করতে সেই তথ্য ব্যবহার করে।
এই ফর্ম্যাটের স্পেসিফিকেশন পড়তে, ডায়নামিক ডেপথ ফর্ম্যাট দেখুন।
উচ্চ দক্ষতার চিত্র ফাইল ফর্ম্যাট
হাই এফিসিয়েন্সি ইমেজ ফাইল (HEIF) ফরম্যাট হল একটি স্ট্যান্ডার্ড ইমেজ এবং ভিডিও ফরম্যাট যা অন্যান্য ফাইল ফরম্যাটের তুলনায় উচ্চমানের এনকোডিং এবং ছোট ফাইল সাইজ প্রবর্তন করে।
ফাইল ফর্ম্যাট সম্পর্কে আরও তথ্যের জন্য, HEIC দেখুন।
মাল্টি-ক্যামেরার উন্নতি
অ্যান্ড্রয়েড ১০ একাধিক ক্যামেরাকে একটি একক লজিক্যাল ক্যামেরায় ফিউজ করার পদ্ধতি উন্নত করে, এটি অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) তে চালু করা একটি বৈশিষ্ট্য। ক্যামেরা২ এপিআইতে নিম্নলিখিতগুলি যোগ করা হয়েছে:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)—আপনাকে জিজ্ঞাসা করতে সক্ষম করে যে পাস করা সেশন কনফিগারেশনটি ক্যামেরা ক্যাপচার সেশন তৈরি করতে ব্যবহার করা যেতে পারে কিনা।LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID— আপনাকে একটি লজিক্যাল ক্যামেরা ডিভাইসের পিছনে সক্রিয় ফিজিক্যাল ক্যামেরার আইডি নির্ধারণ করতে সক্ষম করে। আপনি আরও ভাল পাওয়ার দক্ষতা অর্জনের জন্য লজিক্যাল স্ট্রিম এবং ফিজিক্যাল সাবক্যামেরা স্ট্রিম অনুরোধ করতে ফিরে আসা আইডিগুলি ব্যবহার করতে পারেন।
অ্যাক্সেসিবিলিটি পরিষেবা API
অ্যান্ড্রয়েড ১০ নিম্নলিখিত নতুন অ্যাক্সেসিবিলিটি পরিষেবা বৈশিষ্ট্য এবং API গুলি প্রবর্তন করেছে:
অ্যাক্সেসিবিলিটি নোডইনফো এন্ট্রি কী ফ্ল্যাগ
অ্যান্ড্রয়েড ১০-এ, আপনি isTextEntryKey() কল করে নির্ধারণ করতে পারেন যে একটি প্রদত্ত AccessibilityNodeInfo একটি টেক্সট এন্ট্রি কী প্রতিনিধিত্ব করে কিনা যা একটি কীবোর্ড বা কীপ্যাডের অংশ।
অ্যাক্সেসিবিলিটি ডায়ালগের মৌখিক প্রতিক্রিয়া
ব্যবহারকারীদের অ্যাক্সেসিবিলিটি পরিষেবা শুরু করার জন্য অ্যাক্সেসিবিলিটি শর্টকাটটি সম্পাদন করার প্রয়োজন হলে, পরিষেবাটি অনুরোধ করলে অ্যান্ড্রয়েড 10 ডায়ালগের সাথে একটি টেক্সট-টু-স্পিচ প্রম্পট রাখার অনুমতি দেয়।
অঙ্গভঙ্গি নেভিগেশন সক্ষম করা থাকলে অ্যাক্সেসিবিলিটি শর্টকাট
যখন অ্যান্ড্রয়েড ১০-এ জেসচার নেভিগেশন বৈশিষ্ট্যটি সক্ষম করা থাকে, তখন অ্যাক্সেসিবিলিটি বোতামটি দৃশ্যমান বা নির্বাচনযোগ্য হয় না। অ্যাক্সেসিবিলিটি পরিষেবা মেনু অ্যাক্সেস করতে, ব্যবহারকারীদের নিম্নলিখিত অঙ্গভঙ্গিগুলির মধ্যে একটি সম্পাদন করতে হবে:
- দুই আঙুল দিয়ে উপরের দিকে সোয়াইপ করুন।
- দুই আঙুল দিয়ে উপরে সোয়াইপ করে ধরে রাখুন।
ফিজিক্যাল কীবোর্ডের জন্য অ্যাক্সেসিবিলিটি শর্টকাট
অ্যান্ড্রয়েড ১০-এ, ব্যবহারকারীরা Control+Alt+Z টিপে একটি ফিজিক্যাল কীবোর্ডে অ্যাক্সেসিবিলিটি শর্টকাট ট্রিগার করতে পারেন।
নরম কীবোর্ড কন্ট্রোলার বর্ধিতকরণ
অ্যান্ড্রয়েড ১০-এ, অ্যাক্সেসিবিলিটি পরিষেবাগুলি ডিভাইসটি যখন একটি শক্ত কীবোর্ড সংযুক্ত শনাক্ত করে তখনও সফট কীবোর্ডটি প্রদর্শনের জন্য অনুরোধ করতে পারে। ব্যবহারকারীরা এই আচরণটি ওভাররাইড করতে পারেন।
ব্যবহারকারী-সংজ্ঞায়িত অ্যাক্সেসিবিলিটি টাইমআউট
অ্যান্ড্রয়েড ১০ getRecommendedTimeoutMillis() API প্রবর্তন করেছে। এই পদ্ধতিটি ইন্টারেক্টিভ এবং নন-ইন্টারেক্টিভ UI উপাদানগুলির জন্য ব্যবহারকারী-নির্ধারিত টাইমআউটের জন্য সমর্থন প্রদান করে। রিটার্ন মান ব্যবহারকারীর পছন্দ এবং অ্যাক্সেসিবিলিটি পরিষেবা API উভয় দ্বারা প্রভাবিত হয়।
অটোফিল উন্নতি
অ্যান্ড্রয়েড ১০-এ অটোফিল পরিষেবার নিম্নলিখিত উন্নতিগুলি রয়েছে।
সামঞ্জস্য-সম্পর্কিত অটোফিল অনুরোধ
সামঞ্জস্য মোডের মাধ্যমে একটি অটোফিল অনুরোধ তৈরি হয়েছে কিনা তা নির্ধারণ করতে আপনি FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST ফ্ল্যাগ ব্যবহার করতে পারেন।
ব্যবহারকারীর নাম এবং পাসওয়ার্ড একসাথে সংরক্ষণ করুন
আপনি SaveInfo.FLAG_DELAY_SAVE পতাকা ব্যবহার করে এমন ক্ষেত্রে সমর্থন করতে পারেন যেখানে একটি অ্যাপ্লিকেশন ব্যবহারকারীর নাম, পাসওয়ার্ড এবং অন্যান্য ক্ষেত্র প্রদর্শনের জন্য একাধিক কার্যকলাপ ব্যবহার করে।
সেভ UI এর সাথে ব্যবহারকারীর মিথস্ক্রিয়া
আপনি একটি সংরক্ষণ সংলাপে একটি পাসওয়ার্ড ক্ষেত্র দেখাতে এবং লুকাতে পারেন ডায়ালগে একটি অ্যাকশন লিসেনার সেট করে এবং সংশ্লিষ্ট পাসওয়ার্ড রিমোট ভিউয়ের দৃশ্যমানতা পরিবর্তন করে।
ডেটাসেট আপডেট করার জন্য সমর্থন
অটোফিল বিদ্যমান পাসওয়ার্ড আপডেট করতে পারে। উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারী ইতিমধ্যেই একটি পাসওয়ার্ড সংরক্ষণ করে থাকেন এবং তারা একটি নতুন পাসওয়ার্ড সংরক্ষণ করেন, তাহলে অটোফিল ব্যবহারকারীকে নতুন পাসওয়ার্ড সংরক্ষণ করার পরিবর্তে বিদ্যমান পাসওয়ার্ড আপডেট করতে অনুরোধ করে।
ক্ষেত্রের শ্রেণিবিন্যাসের উন্নতি
অ্যান্ড্রয়েড ১০-এ ফিল্ড ক্লাসিফিকেশন API-তে নিম্নলিখিত উন্নতিগুলি রয়েছে।
UserData.Builder কনস্ট্রাক্টর
UserData.Builder কনস্ট্রাক্টরটি Builder প্যাটার্নের সাথে আরও ভালোভাবে সারিবদ্ধ করার জন্য পরিবর্তিত হয়েছে।
একাধিক ধরণের ক্যাটাগরি আইডিতে একটি মান ম্যাপ করার অনুমতি দিন
Android 10-এ UserData.Builder ব্যবহার করার সময়, আপনি এখন একাধিক ধরণের ক্যাটাগরি আইডিতে একটি মান ম্যাপ করতে পারবেন। পূর্ববর্তী রিলিজগুলিতে, যদি একটি মান একাধিকবার যোগ করা হয় তবে একটি ব্যতিক্রম করা হত।
ক্রেডিট কার্ড নম্বরের জন্য উন্নত সমর্থন
ফিল্ড ক্লাসিফিকেশন এখন ক্রেডিট কার্ড নম্বরের শেষ চারটি সংখ্যা হিসেবে চার-অঙ্কের সংখ্যা সনাক্ত করতে পারে।
অ্যাপ-নির্দিষ্ট ক্ষেত্রের শ্রেণীবিভাগের জন্য সমর্থন
অ্যান্ড্রয়েড ১০ এ FillResponse.setUserData() যোগ করা হয়েছে, যা আপনাকে সেশনের সময়কালের জন্য অ্যাপ-নির্দিষ্ট ব্যবহারকারীর ডেটা সেট করতে দেয়। এটি অটোফিল পরিষেবাটিকে অ্যাপ-নির্দিষ্ট সামগ্রী সহ ক্ষেত্রগুলির প্রকার সনাক্ত করতে সহায়তা করে।
UI এবং সিস্টেম নিয়ন্ত্রণ
অ্যান্ড্রয়েড ১০ নিম্নলিখিত ব্যবহারকারী-ইন্টারফেস উন্নতি প্রদান করে:
JVMTI পপফ্রেম ক্যাপ সাপোর্ট করে
অ্যান্ড্রয়েড ১০ অ্যান্ড্রয়েড জেভিএমটিআই বাস্তবায়নে can_pop_frames সক্ষমতার জন্য সমর্থন যোগ করে। ডিবাগ করার সময়, এই বৈশিষ্ট্যটি আপনাকে ব্রেকপয়েন্টে বিরতি দেওয়ার পরে এবং স্থানীয়, গ্লোবাল, বা কোনও ফাংশন বাস্তবায়নের পরে ফাংশনগুলি পুনরায় চালানোর অনুমতি দেয়। আরও তথ্যের জন্য, ওরাকলের পপ ফ্রেম রেফারেন্স পৃষ্ঠাটি দেখুন।
সারফেস কন্ট্রোল এপিআই
অ্যান্ড্রয়েড ১০ সিস্টেম-কম্পোজিটরে নিম্ন-স্তরের অ্যাক্সেসের জন্য একটি SurfaceControl API প্রদান করে ( SurfaceFlinger )। বেশিরভাগ ব্যবহারকারীর জন্য, SurfaceView হল কম্পোজিটরটি ব্যবহার করার সঠিক উপায়। SurfaceControl API কিছু ক্ষেত্রে কার্যকর হতে পারে, উদাহরণস্বরূপ:
- একাধিক পৃষ্ঠের সিঙ্ক্রোনাইজেশন
- ক্রস-প্রক্রিয়া পৃষ্ঠ এম্বেডিং
- নিম্ন-স্তরের জীবনকাল ব্যবস্থাপনা
SurfaceControl API SDK এবং NDK উভয় বাইন্ডিংয়ে উপলব্ধ। NDK বাস্তবায়নে কম্পোজিটরের সাথে বাফারের ম্যানুয়াল বিনিময়ের জন্য একটি API অন্তর্ভুক্ত রয়েছে। এটি BufferQueue এর সীমাবদ্ধতার বিরুদ্ধে দৌড়ে যাওয়া ব্যবহারকারীদের জন্য একটি বিকল্প প্রদান করে।
ওয়েবভিউ হ্যাং রেন্ডারার সনাক্তকরণ
অ্যান্ড্রয়েড ১০ WebViewRenderProcessClient অ্যাবস্ট্রাক্ট ক্লাস চালু করেছে, যেটি ব্যবহার করে অ্যাপগুলি WebView অপ্রতিক্রিয়াশীল হয়ে পড়েছে কিনা তা সনাক্ত করতে পারে। এই ক্লাসটি ব্যবহার করতে:
- আপনার নিজস্ব সাবক্লাস সংজ্ঞায়িত করুন এবং এর
onRenderProcessResponsive()এবংonRenderProcessUnresponsive()পদ্ধতিগুলি প্রয়োগ করুন। - আপনার
WebViewRenderProcessClientএর একটি উদাহরণ এক বা একাধিকWebViewঅবজেক্টের সাথে সংযুক্ত করুন। - যদি
WebViewপ্রতিক্রিয়াহীন হয়ে যায়, তাহলে সিস্টেমটি ক্লায়েন্টেরonRenderProcessUnresponsive()পদ্ধতিটি কল করে,WebViewএবংWebViewRenderProcessপাস করে। (যদিWebViewএকক-প্রক্রিয়া হয়, তাহলেWebViewRenderProcessপ্যারামিটারটি null থাকে।) আপনার অ্যাপ যথাযথ পদক্ষেপ নিতে পারে, যেমন ব্যবহারকারীকে একটি ডায়ালগ বক্স দেখানো যাতে তারা রেন্ডারিং প্রক্রিয়াটি বন্ধ করতে চান কিনা তা জিজ্ঞাসা করা হয়।
যদি WebView প্রতিক্রিয়াশীল না থাকে, তাহলে সিস্টেমটি পর্যায়ক্রমে onRenderProcessUnresponsive() কল করবে (প্রতি পাঁচ সেকেন্ডে একবারের বেশি নয়), কিন্তু অন্য কোনও পদক্ষেপ নেবে না। যদি WebView আবার প্রতিক্রিয়াশীল হয়ে ওঠে, তাহলে সিস্টেমটি onRenderProcessResponsive() কল করবে মাত্র একবার।
সেটিংস প্যানেল
অ্যান্ড্রয়েড ১০ চালু করেছে সেটিংস প্যানেল , একটি API যা অ্যাপগুলিকে তাদের অ্যাপের প্রেক্ষাপটে ব্যবহারকারীদের সেটিংস দেখাতে দেয়। এটি ব্যবহারকারীদের অ্যাপটি ব্যবহার করার জন্য NFC বা মোবাইল ডেটার মতো জিনিস পরিবর্তন করার জন্য সেটিংসে যাওয়ার প্রয়োজনকে বাধা দেয়।


উদাহরণস্বরূপ, ধরুন একজন ব্যবহারকারী যখন তার ডিভাইসটি বিমান মোডে থাকে তখন একটি ওয়েব ব্রাউজার খোলেন। অ্যান্ড্রয়েড ১০ এর আগে, অ্যাপটি কেবল একটি সাধারণ বার্তা প্রদর্শন করত যা ব্যবহারকারীকে সংযোগ পুনরুদ্ধারের জন্য সেটিংস খুলতে বলে। অ্যান্ড্রয়েড ১০ এর মাধ্যমে, ব্রাউজার অ্যাপটি একটি ইনলাইন প্যানেল প্রদর্শন করতে পারে যা বিমান মোড, ওয়াই-ফাই (কাছাকাছি নেটওয়ার্ক সহ) এবং মোবাইল ডেটার মতো গুরুত্বপূর্ণ সংযোগ সেটিংস দেখায়। এই প্যানেলের সাহায্যে, ব্যবহারকারীরা অ্যাপটি ছাড়াই সংযোগ পুনরুদ্ধার করতে পারেন।
একটি সেটিংস প্যানেল প্রদর্শন করতে, নিম্নলিখিত Settings.Panel যেকোনো একটি ব্যবহার করে একটি ইন্টেন্ট চালু করুন। প্যানেলের ক্রিয়া:
কোটলিন
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 - সমস্ত অডিও স্ট্রিমগুলির জন্য ভলিউম সেটিংস দেখায়।
উন্নতি ভাগ করে নেওয়া
অ্যান্ড্রয়েড ১০ শেয়ারিং-এ বেশ কিছু উন্নতি প্রদান করে:
শর্টকাট শেয়ারিং এপিআই
শেয়ারিং শর্টকাটস API ডাইরেক্ট শেয়ার API গুলিকে প্রতিস্থাপন করে।
চাহিদা অনুযায়ী প্রতিক্রিয়াশীলভাবে ফলাফল পুনরুদ্ধার করার পরিবর্তে, Sharing Shortcuts API অ্যাপগুলিকে সরাসরি শেয়ার টার্গেট আগে থেকেই প্রকাশ করতে দেয়। ShortcutManager এভাবেই কাজ করে। যেহেতু দুটি API একই রকম, তাই আমরা ShortcutInfo API প্রসারিত করেছি যাতে উভয় বৈশিষ্ট্য ব্যবহার করা সহজ হয়। Sharing Shortcuts API এর সাহায্যে, আপনি সরাসরি একটি শেয়ার টার্গেটে বিভাগ বা লোকেদের বরাদ্দ করতে পারেন। শেয়ার টার্গেটগুলি সিস্টেমে টিকে থাকে যতক্ষণ না একই অ্যাপ তাদের আপডেট করে বা অ্যাপটি আনইনস্টল করা হয়।
পুরনো ডাইরেক্ট শেয়ার মেকানিজম এখনও কাজ করে, কিন্তু এটি ব্যবহার করা অ্যাপগুলির অগ্রাধিকার শেয়ারিং শর্টকাট API ব্যবহার করা অ্যাপগুলির তুলনায় কম।
ShortcutInfo.Builder শেয়ার লক্ষ্য সম্পর্কে অতিরিক্ত তথ্য প্রদানের জন্য পদ্ধতি যোগ করে এবং উন্নত করে।
সরাসরি শেয়ার লক্ষ্যমাত্রা
আপনি ডাইরেক্ট শেয়ার টার্গেট হিসেবে একটি ডায়নামিক শর্টকাট প্রকাশ করতে পারেন। ডাইরেক্ট শেয়ার টার্গেট প্রকাশ করুন দেখুন।
ShortcutManagerCompat হল একটি নতুন AndroidX API যা পুরাতন DirectShare API এর সাথে সামঞ্জস্যপূর্ণ। এটি শেয়ার লক্ষ্য প্রকাশের জন্য পছন্দের উপায়।
টেক্সটের প্রিভিউ দেখা হচ্ছে
যখন কোনও অ্যাপ টেক্সট কন্টেন্ট শেয়ার করে, তখন এটি শেয়ারশিট UI-তে কন্টেন্টের একটি ঐচ্ছিক প্রিভিউ দেখাতে পারে।
রিচ টেক্সট প্রিভিউ যোগ করা দেখুন
আরও জানুন
অ্যাপগুলি কীভাবে ডেটা ভাগ করতে পারে সে সম্পর্কে আরও তথ্যের জন্য, অন্যান্য অ্যাপগুলিতে সহজ ডেটা পাঠানো এবং অন্যান্য অ্যাপ থেকে সহজ ডেটা গ্রহণ করা দেখুন।
গাঢ় থিম
অ্যান্ড্রয়েড ১০ একটি ডার্ক থিম অফার করে যা অ্যান্ড্রয়েড সিস্টেম UI এবং ডিভাইসে চলমান অ্যাপ উভয়ের ক্ষেত্রেই প্রযোজ্য। সম্পূর্ণ তথ্যের জন্য, ডার্ক থিম দেখুন।
ফোরগ্রাউন্ড পরিষেবার ধরণ
অ্যান্ড্রয়েড ১০ foregroundServiceType টাইপ এক্সএমএল ম্যানিফেস্ট অ্যাট্রিবিউট চালু করে, যা আপনি বেশ কয়েকটি নির্দিষ্ট পরিষেবার সংজ্ঞায় অন্তর্ভুক্ত করেন। যদিও খুব কমই উপযুক্ত, একটি নির্দিষ্ট পরিষেবার জন্য একাধিক ফোরগ্রাউন্ড পরিষেবা প্রকার নির্ধারণ করা সম্ভব।
নিম্নলিখিত টেবিলে বিভিন্ন ফোরগ্রাউন্ড পরিষেবার ধরণ এবং নির্দিষ্ট ধরণের পরিষেবা ঘোষণা করার উপযুক্ত স্থানগুলি দেখানো হয়েছে:
| ফোরগ্রাউন্ড পরিষেবার ধরণ | এই ধরণের পরিষেবা ঘোষণা করা উচিত এমন একটি পরিষেবার ব্যবহারের উদাহরণ |
|---|---|
connectedDevice | একটি পরিধেয় ফিটনেস ট্র্যাকার পর্যবেক্ষণ করুন |
dataSync | নেটওয়ার্ক থেকে ফাইল ডাউনলোড করুন |
location | ব্যবহারকারীর উদ্যোগে করা পদক্ষেপ চালিয়ে যান |
mediaPlayback | একটি অডিও বই, পডকাস্ট, অথবা সঙ্গীত চালান |
mediaProjection | অল্প সময়ের মধ্যে ডিভাইসের ডিসপ্লের একটি ভিডিও রেকর্ড করুন |
phoneCall | চলমান ফোন কল পরিচালনা করুন |
কোটলিন
অ্যান্ড্রয়েড ১০-এ কোটলিন ডেভেলপমেন্টের জন্য নিম্নলিখিত আপডেটগুলি অন্তর্ভুক্ত রয়েছে।
libcore API-এর জন্য বাতিলযোগ্যতা টীকা
অ্যান্ড্রয়েড ১০, লিবকোর এপিআই-এর জন্য এসডিকে-তে নালিবিলিটি অ্যানোটেশনের কভারেজ উন্নত করে। এই অ্যানোটেশনগুলি অ্যাপ ডেভেলপারদের যারা অ্যান্ড্রয়েড স্টুডিওতে কোটলিন বা জাভা নালিবিলিটি বিশ্লেষণ ব্যবহার করছেন, এই এপিআইগুলির সাথে ইন্টারঅ্যাক্ট করার সময় নালিবিলিটি তথ্য পেতে সক্ষম করে।
সাধারণত, কোটলিনে nullability চুক্তি লঙ্ঘনের ফলে সংকলন ত্রুটি দেখা দেয়। আপনার বিদ্যমান কোডের সাথে সামঞ্জস্য নিশ্চিত করার জন্য, শুধুমাত্র @RecentlyNullable এবং @RecentlyNonNull অ্যানোটেশন যোগ করা হয়। এর অর্থ হল nullability লঙ্ঘনের ফলে ত্রুটির পরিবর্তে সতর্কতা দেখা দেয়।
এছাড়াও, Android 9-এ যোগ করা যেকোনো @RecentlyNullable বা @RecentlyNonNull অ্যানোটেশন যথাক্রমে @Nullable এবং @NonNull তে পরিবর্তিত হচ্ছে। এর অর্থ হল, Android 10 এবং উচ্চতর সংস্করণগুলিতে, nullability লঙ্ঘনের ফলে সতর্কতার পরিবর্তে ত্রুটি দেখা দেয়।
অ্যানোটেশন পরিবর্তন সম্পর্কে আরও তথ্যের জন্য, অ্যান্ড্রয়েড ডেভেলপারস ব্লগে অ্যান্ড্রয়েড পাই SDK এখন আরও কোটলিন-বান্ধব দেখুন।
এনডিকে
অ্যান্ড্রয়েড ১০-এ নিম্নলিখিত NDK পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে।
ফাইল বর্ণনাকারীর মালিকানার উন্নত ডিবাগিং।
অ্যান্ড্রয়েড ১০-এ fdsan যোগ করা হয়েছে, যা আপনাকে ফাইল বর্ণনাকারীর মালিকানার সমস্যাগুলি আরও সহজে খুঁজে পেতে এবং সমাধান করতে সাহায্য করে।
ফাইল বর্ণনাকারীর মালিকানার ভুল ব্যবস্থাপনার সাথে সম্পর্কিত বাগ, যা use-after-close এবং double-close হিসাবে প্রকাশ পায়, মেমরি বরাদ্দ use-after-free এবং double-free বাগের অনুরূপ, তবে নির্ণয় এবং ঠিক করা অনেক বেশি কঠিন। fdsan ফাইল বর্ণনাকারীর মালিকানা প্রয়োগ করে ফাইল বর্ণনাকারীর অব্যবস্থাপনা সনাক্ত এবং/অথবা প্রতিরোধ করার চেষ্টা করে।
এই সমস্যাগুলির সাথে সম্পর্কিত ক্র্যাশ সম্পর্কে আরও তথ্যের জন্য, fdsan দ্বারা সনাক্ত করা ত্রুটি দেখুন। fdsan সম্পর্কে আরও তথ্যের জন্য, fdsan-এর Googlesource পৃষ্ঠাটি দেখুন।
ELF TLS সম্পর্কে
ন্যূনতম API লেভেল 29 সহ NDK ব্যবহার করে তৈরি অ্যাপ্লিকেশনগুলি emutls এর পরিবর্তে ELF TLS ব্যবহার করতে পারে। থ্রেড-স্থানীয় ভেরিয়েবল পরিচালনার এই পদ্ধতিটিকে সমর্থন করার জন্য ডায়নামিক এবং স্ট্যাটিক লিঙ্কার সমর্থন যোগ করা হয়েছে।
API লেভেল ২৮ এবং তার নিচের জন্য তৈরি অ্যাপগুলির জন্য, কিছু emutls সমস্যা সমাধানের জন্য libgcc/compiler-rt জন্য উন্নতি বাস্তবায়িত হয়েছে।
আরও তথ্যের জন্য, NDK ডেভেলপারদের জন্য অ্যান্ড্রয়েড পরিবর্তনগুলি দেখুন।
রানটাইম
অ্যান্ড্রয়েড ১০-এ নিম্নলিখিত রানটাইম পরিবর্তন অন্তর্ভুক্ত রয়েছে।
ম্যালিনফো-ভিত্তিক আবর্জনা সংগ্রহের ট্রিগার
যখন ছোট প্ল্যাটফর্ম জাভা অবজেক্টগুলি C++ হিপে বিশাল বস্তুগুলিকে উল্লেখ করে, তখন প্রায়শই C++ অবজেক্টগুলি কেবল তখনই পুনরুদ্ধার করা যেতে পারে যখন জাভা অবজেক্ট সংগ্রহ করা হয় এবং উদাহরণস্বরূপ, চূড়ান্ত করা হয়। পূর্ববর্তী রিলিজগুলিতে, প্ল্যাটফর্মটি জাভা অবজেক্টের সাথে সম্পর্কিত অনেক C++ অবজেক্টের আকার অনুমান করেছিল। এই অনুমান সর্বদা সঠিক ছিল না এবং মাঝে মাঝে মেমরির ব্যবহার উল্লেখযোগ্যভাবে বৃদ্ধি পেয়েছিল, কারণ প্ল্যাটফর্মটি আবর্জনা সংগ্রহ করতে ব্যর্থ হয়েছিল যখন এটি করা উচিত ছিল।
অ্যান্ড্রয়েড ১০-এ, আবর্জনা সংগ্রহকারী (GC) সিস্টেম malloc() দ্বারা বরাদ্দকৃত হিপের মোট আকার ট্র্যাক করে, নিশ্চিত করে যে বৃহৎ malloc() বরাদ্দ সর্বদা GC-ট্রিগারিং গণনায় অন্তর্ভুক্ত থাকে। জাভা এক্সিকিউশনের সাথে প্রচুর সংখ্যক C++ বরাদ্দকরণের সাথে যুক্ত অ্যাপগুলির ফলে আবর্জনা সংগ্রহের ফ্রিকোয়েন্সি বৃদ্ধি পেতে পারে। অন্যান্য অ্যাপগুলিতে সামান্য হ্রাস পেতে পারে।
পরীক্ষা এবং ডিবাগিং
অ্যান্ড্রয়েড ১০-এ টেস্টিং এবং ডিবাগিংয়ের জন্য নিম্নলিখিত উন্নতিগুলি অন্তর্ভুক্ত রয়েছে।
ডিভাইসে থাকা সিস্টেম ট্রেসিংয়ের উন্নতি
অ্যান্ড্রয়েড ১০ অনুসারে, আপনি যখন কোনও ডিভাইসে সিস্টেম ট্রেস সম্পাদন করেন তখন ট্রেসের আকার এবং সময়কালের সীমা নির্দিষ্ট করতে পারেন। যখন আপনি যে কোনও মান নির্দিষ্ট করেন, তখন সিস্টেমটি একটি দীর্ঘ ট্রেস সম্পাদন করে, ট্রেস রেকর্ড করার সময় পর্যায়ক্রমে ট্রেস বাফারটিকে গন্তব্য ফাইলে অনুলিপি করে। আপনার নির্দিষ্ট আকার বা সময়কালের সীমা পৌঁছে গেলে ট্রেসটি সম্পূর্ণ হয়।
এই অতিরিক্ত প্যারামিটারগুলি ব্যবহার করে আপনি স্ট্যান্ডার্ড ট্রেসের চেয়ে ভিন্ন ব্যবহারের ক্ষেত্রে পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, আপনি হয়তো এমন একটি পারফরম্যান্স বাগ নির্ণয় করছেন যা আপনার অ্যাপটি দীর্ঘ সময় ধরে চলার পরেই ঘটে। এই ক্ষেত্রে, আপনি পুরো দিন ধরে একটি দীর্ঘ ট্রেস রেকর্ড করতে পারেন এবং তারপরে বাগের কারণ নির্ধারণে সহায়তা করার জন্য রিপোর্টে থাকা CPU শিডিউলার, ডিস্ক অ্যাক্টিভিটি, অ্যাপ থ্রেড এবং অন্যান্য ডেটা বিশ্লেষণ করতে পারেন।
অ্যান্ড্রয়েড ১০ এবং উচ্চতর সংস্করণে, ট্রেস ফাইলগুলি এমন একটি ফর্ম্যাটে সংরক্ষণ করা হয় যা পারফর্মেন্স ইন্সট্রুমেন্টেশন এবং ট্রেসিংয়ের জন্য একটি ওপেন-সোর্স প্রকল্প, পারফেটো দিয়ে খোলা যেতে পারে। আপনি পারফেটো ট্রেস ফাইলগুলিকে সিস্ট্রেস ফর্ম্যাটে রূপান্তর করতে পারেন।
টেক্সটক্লাসিফায়ারের উন্নতি
অ্যান্ড্রয়েড ১০ TextClassifier ইন্টারফেসে অতিরিক্ত টেক্সট ক্লাসিফিকেশন কার্যকারিতা প্রদান করে।
ভাষা সনাক্তকরণ
detectLanguage() পদ্ধতিটি পূর্ববর্তী বিদ্যমান শ্রেণীবিভাগ পদ্ধতির মতোই কাজ করে। এটি একটি TextLanguage.Request অবজেক্ট গ্রহণ করে এবং একটি TextLanguage অবজেক্ট ফেরত দেয়।
TextLanguage অবজেক্টগুলিতে অর্ডার করা জোড়ার একটি তালিকা থাকে। প্রতিটি জোড়ায় একটি লোকেল এবং শ্রেণীবিভাগের জন্য একটি সংশ্লিষ্ট আত্মবিশ্বাস স্কোর থাকে।
প্রস্তাবিত কথোপকথনের ক্রিয়াগুলি
suggestConversationActions() পদ্ধতিটি বিদ্যমান শ্রেণীবিভাগ পদ্ধতির মতোই কাজ করে। এটি একটি ConversationActions.Request অবজেক্ট গ্রহণ করে এবং একটি ConversationActions অবজেক্ট ফেরত দেয়।
ConversationActions অবজেক্টে ConversationAction অবজেক্টের একটি তালিকা থাকে। প্রতিটি ConversationAction অবজেক্টে একটি সম্ভাব্য প্রস্তাবিত অ্যাকশন এবং এর আত্মবিশ্বাসের স্কোর থাকে।
বিজ্ঞপ্তিতে স্মার্ট উত্তর/অ্যাকশন
অ্যান্ড্রয়েড ৯ একটি বিজ্ঞপ্তির মধ্যে প্রস্তাবিত উত্তরগুলি প্রদর্শনের ক্ষমতা চালু করেছে। অ্যান্ড্রয়েড ১০ প্রস্তাবিত উদ্দেশ্য-ভিত্তিক ক্রিয়াগুলি অন্তর্ভুক্ত করার ক্ষমতা দিয়ে এটিকে প্রসারিত করে। তদুপরি, প্ল্যাটফর্মটি স্বয়ংক্রিয়ভাবে এই পরামর্শগুলি তৈরি করতে সক্ষম। অ্যাপগুলি এখনও তাদের নিজস্ব পরামর্শ প্রদান করতে পারে, অথবা সিস্টেম-উত্পাদিত পরামর্শগুলি অপ্ট আউট করতে পারে। এই উত্তরগুলি তৈরি করতে ব্যবহৃত API টি TextClassifier এর অংশ, এবং এটি সরাসরি Android 10 এর ডেভেলপারদের কাছেও উন্মুক্ত করা হয়েছে। আরও তথ্যের জন্য অনুগ্রহ করে TextClassifier উন্নতি বিভাগটি পড়ুন।
যদি আপনার অ্যাপটি নিজস্ব পরামর্শ প্রদান করে, তাহলে প্ল্যাটফর্মটি কোনও স্বয়ংক্রিয় পরামর্শ তৈরি করে না। যদি আপনি না চান যে আপনার অ্যাপের বিজ্ঞপ্তিগুলিতে কোনও প্রস্তাবিত উত্তর বা ক্রিয়া প্রদর্শিত হোক, তাহলে আপনি setAllowGeneratedReplies() এবং setAllowSystemGeneratedContextualActions() ব্যবহার করে সিস্টেম-জেনারেটেড উত্তর এবং ক্রিয়া থেকে অপ্ট আউট করতে পারেন।