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

অ্যান্ড্রয়েড ১০ ব্যবহারকারী এবং ডেভেলপারদের জন্য দারুণ সব ফিচার ও সুবিধা নিয়ে এসেছে। এই ডকুমেন্টটিতে ডেভেলপারদের জন্য কী কী সুবিধা রয়েছে, তা তুলে ধরা হয়েছে।

এপিআইগুলো সম্পর্কে জানতে, এপিআই ডিফারেন্স রিপোর্টটি পড়ুন অথবা অ্যান্ড্রয়েড এপিআই রেফারেন্স দেখুন — সেখানে "এপিআই লেভেল ২৯-এ যোগ করা" এপিআইগুলো খুঁজুন। এছাড়াও, অ্যান্ড্রয়েড ১০-এর আচরণগত পরিবর্তন ( এপিআই লেভেল ২৯ টার্গেট করা অ্যাপগুলোর জন্য এবং সকল অ্যাপের জন্য) এবং গোপনীয়তার পরিবর্তনগুলো অবশ্যই দেখে নিন, যাতে প্ল্যাটফর্মের পরিবর্তনগুলো আপনার অ্যাপগুলোকে কোন কোন ক্ষেত্রে প্রভাবিত করতে পারে, সে সম্পর্কে জানতে পারেন।

নিরাপত্তা উন্নয়ন

অ্যান্ড্রয়েড ১০-এ বেশ কিছু নিরাপত্তা বৈশিষ্ট্য যুক্ত করা হয়েছে, যা নিম্নলিখিত বিভাগগুলিতে সংক্ষেপে তুলে ধরা হলো।

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

অ্যান্ড্রয়েড ১০ বায়োমেট্রিক প্রমাণীকরণ সমর্থনে নিম্নলিখিত উন্নতিগুলো নিয়ে এসেছে:

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

সরাসরি 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 এর মেথডগুলো ব্যবহার করতে পারে।

সংযোগ বৈশিষ্ট্য

অ্যান্ড্রয়েড ১০-এ নেটওয়ার্কিং ও কানেক্টিভিটি সম্পর্কিত বেশ কিছু উন্নতি অন্তর্ভুক্ত করা হয়েছে।

ওয়াই-ফাই নেটওয়ার্ক সংযোগ এপিআই

অ্যান্ড্রয়েড ১০-এ পিয়ার-টু-পিয়ার সংযোগের সুবিধা যুক্ত করা হয়েছে। এই ফিচারটি আপনার অ্যাপকে, অনুরোধ করা নেটওয়ার্কের বৈশিষ্ট্যগুলো বর্ণনা করার জন্য WifiNetworkSpecifier ব্যবহার করে, ডিভাইসটি যে অ্যাক্সেস পয়েন্টের সাথে সংযুক্ত আছে তা পরিবর্তন করার জন্য ব্যবহারকারীকে অনুরোধ জানাতে সক্ষম করে। পিয়ার-টু-পিয়ার সংযোগটি নেটওয়ার্ক-প্রদানকারী কাজ ছাড়া অন্যান্য উদ্দেশ্যে ব্যবহৃত হয়, যেমন Chromecast এবং Google Home হার্ডওয়্যারের মতো সেকেন্ডারি ডিভাইসগুলোর জন্য কনফিগারেশন বুটস্ট্র্যাপ করা।

আরও তথ্যের জন্য, পিয়ার-টু-পিয়ার সংযোগের জন্য ওয়াই-ফাই নেটওয়ার্ক রিকোয়েস্ট এপিআই (Wi-Fi Network Request API) দেখুন।

ওয়াই-ফাই নেটওয়ার্ক সাজেশন এপিআই

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

এই বৈশিষ্ট্যটি সম্পর্কে আরও তথ্যের জন্য, Wi-Fi suggest দেখুন।

ওয়াই-ফাই হাই-পারফরম্যান্স এবং লো-ল্যাটেন্সি মোডের উন্নতি

অ্যান্ড্রয়েড ১০ আপনাকে ল্যাটেন্সি কমানোর জন্য অন্তর্নিহিত মোডেমকে একটি ইঙ্গিত দেওয়ার সুযোগ দেয়।

অ্যান্ড্রয়েড ১০ হাই-পারফরম্যান্স মোড এবং লো-ল্যাটেন্সি মোডকে কার্যকরভাবে সমর্থন করার জন্য ওয়াই-ফাই লক এপিআই-কে প্রসারিত করেছে। হাই-পারফরম্যান্স এবং লো-ল্যাটেন্সি মোডের জন্য ওয়াই-ফাই পাওয়ার সেভ নিষ্ক্রিয় থাকে এবং মডেমের সমর্থনের উপর নির্ভর করে লো-ল্যাটেন্সি মোডে আরও ল্যাটেন্সি অপ্টিমাইজেশন সক্রিয় করা হতে পারে।

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

ডিএনএস রিজলভারে বিশেষায়িত অনুসন্ধান

অ্যান্ড্রয়েড ১০ ক্লিয়ারটেক্সট লুকআপ এবং ডিএনএস-ওভার-টিএলএস মোড উভয়ই ব্যবহার করে বিশেষায়িত ডিএনএস লুকআপের জন্য নেটিভ সাপোর্ট যুক্ত করেছে। পূর্বে, প্ল্যাটফর্মের ডিএনএস রিজলভার শুধুমাত্র A এবং AAAA রেকর্ড সাপোর্ট করত, যা দিয়ে কেবল একটি নামের সাথে যুক্ত আইপি অ্যাড্রেস খোঁজা যেত, কিন্তু অন্য কোনো ধরনের রেকর্ড সাপোর্ট করত না। DnsResolver API জেনেরিক, অ্যাসিঙ্ক্রোনাস রেজোলিউশন প্রদান করে, যা আপনাকে SRV , NAPTR এবং অন্যান্য ধরনের রেকর্ড খুঁজতে সক্ষম করে। উল্লেখ্য যে, রেসপন্স পার্স করার কাজটি অ্যাপের উপরই ছেড়ে দেওয়া হয়েছে।

NDK-ভিত্তিক অ্যাপের জন্য, android_res_nsend দেখুন।

ওয়াই-ফাই ইজি কানেক্ট

অ্যান্ড্রয়েড ১০ আপনাকে একটি পিয়ার ডিভাইসে ওয়াই-ফাই ক্রেডেনশিয়াল সরবরাহ করার জন্য ইজি কানেক্ট ব্যবহার করার সুযোগ দেয়, যা বাতিল হয়ে যাওয়া WPS-এর একটি বিকল্প। অ্যাপগুলো ACTION_PROCESS_WIFI_EASY_CONNECT_URI ইন্টেন্টটি ব্যবহার করে তাদের সেটআপ এবং প্রভিশনিং ফ্লো-তে ইজি কানেক্টকে একীভূত করতে পারে।

এই বৈশিষ্ট্যটি সম্পর্কে আরও তথ্যের জন্য, Wi-Fi Easy Connect দেখুন।

ওয়াই-ফাই ডাইরেক্ট সংযোগ এপিআই

অ্যান্ড্রয়েড ১০-এ WifiP2pConfig এবং WifiP2pManager API ক্লাসগুলোতে আপডেট আনা হয়েছে, যা পূর্বনির্ধারিত তথ্য ব্যবহার করে ওয়াই-ফাই ডিরেক্ট-এর সাথে দ্রুত সংযোগ স্থাপনের সক্ষমতা প্রদান করে। এই তথ্য ব্লুটুথ বা এনএফসি-র মতো একটি সাইড চ্যানেলের মাধ্যমে শেয়ার করা হয়।

নিম্নলিখিত কোড নমুনাটি পূর্বনির্ধারিত তথ্য ব্যবহার করে কীভাবে একটি গ্রুপ তৈরি করতে হয় তা দেখায়:

কোটলিন

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);

ব্লুটুথ এলই সংযোগ ভিত্তিক চ্যানেল (CoC)

অ্যান্ড্রয়েড ১০ আপনার অ্যাপকে দুটি BLE ডিভাইসের মধ্যে বৃহত্তর ডেটা স্ট্রিম স্থানান্তর করতে BLE CoC সংযোগ ব্যবহার করার সুযোগ দেয়। এই ইন্টারফেসটি বাস্তবায়ন সহজ করার জন্য ব্লুটুথ এবং সংযোগের কার্যপ্রণালীকে আড়াল করে।

টেলিফোনি বৈশিষ্ট্য

অ্যান্ড্রয়েড ১০-এ টেলিফোনি সংক্রান্ত বেশ কিছু উন্নতি অন্তর্ভুক্ত করা হয়েছে।

কলের মানের উন্নতি

অ্যান্ড্রয়েড ১০-এ এমন ডিভাইসগুলিতে চলমান আইপি মাল্টিমিডিয়া সাবসিস্টেম (আইএমএস) কলের মান সম্পর্কে তথ্য সংগ্রহের ক্ষমতা যোগ করা হয়েছে, যেগুলি এই ফিচারটি সমর্থন করে। এর মধ্যে নেটওয়ার্কে এবং নেটওয়ার্ক থেকে আসা কলের মানও অন্তর্ভুক্ত।

কল স্ক্রিনিং এবং কলার আইডি

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

কল পুনঃনির্দেশনা পরিষেবা এপিআই

অ্যান্ড্রয়েড ১০ কল ইন্টেন্ট হ্যান্ডেল করার পদ্ধতিতে পরিবর্তন এনেছে। NEW_OUTGOING_CALL ব্রডকাস্টটি এখন আর ব্যবহৃত হয় না এবং এর পরিবর্তে CallRedirectionService API আনা হয়েছে। CallRedirectionService API আপনাকে অ্যান্ড্রয়েড প্ল্যাটফর্ম থেকে করা আউটগোয়িং কলগুলো পরিবর্তন করার জন্য ইন্টারফেস প্রদান করে। উদাহরণস্বরূপ, থার্ড-পার্টি অ্যাপগুলো কল বাতিল করে সেগুলোকে VoIP-এর মাধ্যমে রি-রুট করতে পারে।

এক্সটার্নাল স্টোরেজে ফাইল তৈরির উন্নতি

স্কোপড স্টোরেজ চালু করার পাশাপাশি, অ্যান্ড্রয়েড ১০ এক্সটার্নাল স্টোরেজ সম্পর্কিত নিম্নলিখিত বৈশিষ্ট্যগুলো যোগ করেছে:

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

মিডিয়া এবং গ্রাফিক্স

অ্যান্ড্রয়েড ১০-এ নিম্নলিখিত নতুন মিডিয়া ও গ্রাফিক্স ফিচার এবং এপিআইগুলো যুক্ত করা হয়েছে:

অডিও ইনপুট শেয়ার করা

অ্যান্ড্রয়েড ১০-এ এখন দুটি অ্যাপ একই সাথে অডিও ইনপুট শেয়ার করতে পারবে। বিস্তারিত তথ্যের জন্য, ‘অডিও ইনপুট শেয়ারিং’ দেখুন।

অডিও প্লেব্যাক ক্যাপচার

অ্যান্ড্রয়েড ১০ একটি অ্যাপকে অন্য অ্যাপ থেকে অডিও প্লেব্যাক ক্যাপচার করার ক্ষমতা দেয়। সম্পূর্ণ তথ্যের জন্য, প্লেব্যাক ক্যাপচার দেখুন।

MediaStyle নোটিফিকেশনে সিকবার

অ্যান্ড্রয়েড ১০ থেকে, MediaStyle নোটিফিকেশনে একটি সিকবার প্রদর্শিত হয়। সিকবারটি PlaybackState.getPosition() থেকে প্লেব্যাকের অগ্রগতি দেখায়, এবং কিছু ক্ষেত্রে প্লেয়িং প্রোগ্রামের কোনো একটি নির্দিষ্ট স্থানে যাওয়ার জন্য সিকবারটি ব্যবহার করা যেতে পারে। সিকবারের চেহারা এবং আচরণ নিম্নলিখিত নিয়মগুলো দ্বারা নিয়ন্ত্রিত হয়:

  • যদি একটি সক্রিয় MediaSession থাকে এবং এর সময়কাল (যা MediaMetadata.METADATA_KEY_DURATION দ্বারা নির্দিষ্ট করা হয়) শূন্যের চেয়ে বেশি হয়, তবে সিকবারটি প্রদর্শিত হয়। এর মানে হলো, লাইভস্ট্রিম এবং রেডিও সম্প্রচারের মতো অনির্দিষ্ট স্ট্রিমগুলির জন্য এই বারটি প্রদর্শিত হয় না।
  • যদি সেশনটি ACTION_SEEK_TO প্রয়োগ করে, তাহলে ব্যবহারকারী প্লেব্যাকের অবস্থান নিয়ন্ত্রণ করতে সিকবারটি ড্র্যাগ করতে পারেন।

নেটিভ MIDI API

অ্যান্ড্রয়েড নেটিভ MIDI API (AMidi) অ্যাপ্লিকেশন ডেভেলপারদের C/C++ কোডের মাধ্যমে MIDI ডেটা প্রেরণ ও গ্রহণ করার ক্ষমতা দেয়, যা তাদের C/C++ অডিও/কন্ট্রোল লজিকের সাথে আরও নিবিড়ভাবে সমন্বিত হয় এবং JNI-এর প্রয়োজনীয়তা হ্রাস করে।

আরও তথ্যের জন্য, অ্যান্ড্রয়েড নেটিভ মিডি এপিআই (Android Native MIDI API) দেখুন।

মিডিয়াকোডেকইনফো-এর উন্নতি

অ্যান্ড্রয়েড ১০ MediaCodecInfo তে এমন কিছু মেথড যোগ করেছে যা একটি কোডেক সম্পর্কে আরও তথ্য প্রকাশ করে।

আরও তথ্যের জন্য, মিডিয়া কোডেক দেখুন।

তাপীয় এপিআই

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

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

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

থার্মাল এপিআই-এর জন্য একটি নতুন ডিভাইস এইচএএল লেয়ার প্রয়োজন—এটি বর্তমানে অ্যান্ড্রয়েড ১০ চালিত পিক্সেল ডিভাইসগুলোতে সমর্থিত এবং আমরা আমাদের ডিভাইস-নির্মাতা অংশীদারদের সাথে যত দ্রুত সম্ভব ইকোসিস্টেমে এর ব্যাপক সমর্থন আনার জন্য কাজ করছি।

ক্যামেরা এবং ছবি

অ্যান্ড্রয়েড ১০-এ ক্যামেরা ও ছবি-সম্পর্কিত নিম্নলিখিত নতুন ফিচারগুলো যুক্ত করা হয়েছে:

মনোক্রোম ক্যামেরা সমর্থন

অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮)-এ সর্বপ্রথম মনোক্রোম ক্যামেরা সুবিধা চালু করা হয়েছিল। অ্যান্ড্রয়েড ১০ মনোক্রোম ক্যামেরা সাপোর্টে বেশ কিছু উন্নতি যোগ করেছে:

  • মেমরি দক্ষতা উন্নত করার জন্য Y8 স্ট্রিম ফরম্যাট সমর্থন।
  • মনোক্রোম র DNG ক্যাপচারের জন্য সমর্থন।
  • সাধারণ মনোক্রোম ক্যামেরা এবং নিয়ার ইনফ্রারেড ক্যামেরার মধ্যে পার্থক্য নিরূপণের জন্য MONO এবং NIR CFA গণনার প্রবর্তন।

আপনি একটি নেটিভ মনোক্রোম ছবি তোলার জন্য এই বৈশিষ্ট্যটি ব্যবহার করতে পারেন। একটি লজিক্যাল মাল্টি-ক্যামেরা ডিভাইস কম আলোতে আরও ভালো ছবির মান অর্জনের জন্য একটি মনোক্রোম ক্যামেরাকে ফিজিক্যাল সাব-ক্যামেরা হিসেবে ব্যবহার করতে পারে।

ডাইনামিক ডেপথ ফরম্যাট

অ্যান্ড্রয়েড ১০ থেকে, ক্যামেরাগুলো ডাইনামিক ডেপথ ফরম্যাট (DDF) নামক একটি নতুন স্কিমা ব্যবহার করে ছবির ডেপথ ডেটা একটি আলাদা ফাইলে সংরক্ষণ করতে পারে। অ্যাপগুলো মূল ছবির ডেটা পরিবর্তন না করেই JPG ছবি এবং এর ডেপথ মেটাডেটা উভয়ই অনুরোধ করতে পারে এবং সেই তথ্য ব্যবহার করে পোস্ট-প্রসেসিংয়ের সময় তাদের ইচ্ছামতো ব্লার প্রয়োগ করতে পারে।

এই ফরম্যাটের স্পেসিফিকেশন পড়তে, ডাইনামিক ডেপথ ফরম্যাট দেখুন।

উচ্চ দক্ষতা সম্পন্ন ইমেজ ফাইল ফরম্যাট

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

ফাইল ফরম্যাট সম্পর্কে আরও তথ্যের জন্য HEIC দেখুন।

মাল্টি-ক্যামেরার উন্নতি

অ্যান্ড্রয়েড ১০ একাধিক ক্যামেরাকে একটি একক লজিক্যাল ক্যামেরায় একীভূত করার প্রক্রিয়াকে উন্নত করেছে, যা অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮)-এ প্রথম চালু হয়েছিল। Camera2 API- তে নিম্নলিখিত বিষয়গুলো যোগ করা হয়েছে:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig) —এর মাধ্যমে আপনি জানতে পারবেন যে, প্রদত্ত সেশন কনফিগারেশনটি একটি ক্যামেরা ক্যাপচার সেশন তৈরি করতে ব্যবহার করা যাবে কি না।

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

অ্যাক্সেসিবিলিটি পরিষেবা এপিআই

অ্যান্ড্রয়েড ১০-এ নিম্নলিখিত নতুন অ্যাক্সেসিবিলিটি সার্ভিস ফিচার এবং এপিআইগুলো চালু করা হয়েছে:

অ্যাক্সেসিবিলিটিনোডইনফো এন্ট্রি কী ফ্ল্যাগ

অ্যান্ড্রয়েড ১০ থেকে, কোনো প্রদত্ত AccessibilityNodeInfo কিবোর্ড নাকি কিপ্যাডের টেক্সট এন্ট্রি কী, তা নির্ধারণ করতে আপনি isTextEntryKey() কল করতে পারেন।

অ্যাক্সেসিবিলিটি ডায়ালগের মৌখিক প্রতিক্রিয়া

যেসব ক্ষেত্রে ব্যবহারকারীদের কোনো অ্যাক্সেসিবিলিটি সার্ভিস চালু করার জন্য অ্যাক্সেসিবিলিটি শর্টকাট ব্যবহার করার প্রয়োজন হয়, সেখানে সার্ভিসটি অনুরোধ করলে অ্যান্ড্রয়েড ১০ ডায়ালগ বক্সটির সাথে একটি টেক্সট-টু-স্পিচ প্রম্পট দেখানোর সুযোগ দেয়।

জেসচার নেভিগেশন সক্রিয় থাকলে অ্যাক্সেসিবিলিটি শর্টকাট

অ্যান্ড্রয়েড ১০-এ জেসচার নেভিগেশন ফিচারটি চালু থাকলে, অ্যাক্সেসিবিলিটি বাটনটি দেখা বা নির্বাচন করা যায় না। অ্যাক্সেসিবিলিটি সার্ভিসেস মেনুতে প্রবেশ করার জন্য, ব্যবহারকারীদের নিম্নলিখিত জেসচারগুলোর মধ্যে একটি সম্পাদন করতে হবে:

  • দুই আঙুল দিয়ে উপরের দিকে সোয়াইপ করুন।
  • দুই আঙুল দিয়ে উপরের দিকে সোয়াইপ করে ধরে রাখুন।

ফিজিক্যাল কীবোর্ডের জন্য অ্যাক্সেসিবিলিটি শর্টকাট

অ্যান্ড্রয়েড ১০-এ, ব্যবহারকারীরা ফিজিক্যাল কীবোর্ডে Control+Alt+Z চেপে অ্যাক্সেসিবিলিটি শর্টকাটটি চালু করতে পারেন।

সফট কিবোর্ড কন্ট্রোলারের উন্নতি

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

ব্যবহারকারী-সংজ্ঞায়িত অ্যাক্সেসযোগ্যতার সময়সীমা

অ্যান্ড্রয়েড ১০-এ getRecommendedTimeoutMillis() API চালু করা হয়েছে। এই মেথডটি ইন্টারেক্টিভ এবং নন-ইন্টারেক্টিভ UI এলিমেন্টগুলোর জন্য ব্যবহারকারী-নির্ধারিত টাইমআউট সমর্থন করে। এর রিটার্ন ভ্যালু ব্যবহারকারীর পছন্দ এবং অ্যাক্সেসিবিলিটি সার্ভিস API উভয় দ্বারাই প্রভাবিত হয়।

অটোফিলের উন্নতি

অ্যান্ড্রয়েড ১০-এর অটোফিল পরিষেবাতে নিম্নলিখিত উন্নতিগুলো আনা হয়েছে।

সামঞ্জস্য-সম্পর্কিত স্বয়ংক্রিয় পূরণের অনুরোধ

কোনো অটোফিল অনুরোধ কম্প্যাটিবিলিটি মোডের মাধ্যমে তৈরি করা হয়েছে কিনা, তা নির্ধারণ করতে আপনি FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST ফ্ল্যাগটি ব্যবহার করতে পারেন।

ব্যবহারকারীর নাম এবং পাসওয়ার্ড একই সাথে সংরক্ষণ করুন

আপনি SaveInfo.FLAG_DELAY_SAVE ফ্ল্যাগটি ব্যবহার করে এমন ক্ষেত্রগুলিকে সমর্থন করতে পারেন যেখানে একটি অ্যাপ্লিকেশন ইউজারনেম, পাসওয়ার্ড এবং অন্যান্য ফিল্ডগুলি প্রদর্শন করার জন্য একাধিক অ্যাক্টিভিটি ব্যবহার করে।

সেভ UI-এর সাথে ব্যবহারকারীর মিথস্ক্রিয়া

সেভ ডায়ালগে একটি অ্যাকশন লিসেনার সেট করে এবং সংশ্লিষ্ট পাসওয়ার্ড রিমোট ভিউ-এর ভিজিবিলিটি পরিবর্তন করার মাধ্যমে আপনি পাসওয়ার্ড ফিল্ডটি দেখাতে বা লুকাতে পারেন।

ডেটাসেট আপডেট করার জন্য সমর্থন

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

ক্ষেত্র শ্রেণিবিন্যাসের উন্নতি

অ্যান্ড্রয়েড ১০-এ ফিল্ড ক্লাসিফিকেশন এপিআই-তে নিম্নলিখিত উন্নতিগুলো আনা হয়েছে।

UserData.Builder কনস্ট্রাক্টর

Builder প্যাটার্নের সাথে আরও ভালোভাবে সামঞ্জস্যপূর্ণ করার জন্য UserData.Builder কনস্ট্রাক্টরটি পরিবর্তন করা হয়েছে।

একটি মানকে একাধিক ধরনের ক্যাটাগরি আইডির সাথে ম্যাপ করার অনুমতি দিন

অ্যান্ড্রয়েড ১০-এ UserData.Builder ব্যবহার করার সময়, এখন একটি ভ্যালুকে একাধিক ধরনের ক্যাটাগরি আইডির সাথে ম্যাপ করা যায়। পূর্ববর্তী রিলিজগুলোতে, কোনো ভ্যালু একাধিকবার যোগ করা হলে একটি এক্সেপশন থ্রো করা হতো।

ক্রেডিট কার্ড নম্বরের জন্য উন্নত সমর্থন

ফিল্ড ক্লাসিফিকেশন এখন ক্রেডিট কার্ড নম্বরের শেষ চারটি অঙ্ক হিসেবে চার-অঙ্কের সংখ্যাও শনাক্ত করতে পারে।

অ্যাপ-নির্দিষ্ট ফিল্ড শ্রেণিবিন্যাসের জন্য সমর্থন

অ্যান্ড্রয়েড ১০-এ FillResponse.setUserData() যুক্ত করা হয়েছে, যা আপনাকে সেশনের সময়কালের জন্য অ্যাপ-নির্দিষ্ট ব্যবহারকারীর ডেটা সেট করার সুযোগ দেয়। এটি অটোফিল সার্ভিসকে অ্যাপ-নির্দিষ্ট কন্টেন্টযুক্ত ফিল্ডগুলোর টাইপ শনাক্ত করতে সাহায্য করে।

UI এবং সিস্টেম নিয়ন্ত্রণ

অ্যান্ড্রয়েড ১০ ব্যবহারকারী-ইন্টারফেসে নিম্নলিখিত উন্নতিগুলো এনেছে:

JVMTI PopFrame ক্যাপ সমর্থন করে

অ্যান্ড্রয়েড ১০, অ্যান্ড্রয়েড JVMTI ইমপ্লিমেন্টেশনে can_pop_frames ক্যাপাবিলিটির জন্য সমর্থন যোগ করেছে। ডিবাগিং করার সময়, এই ফিচারটি আপনাকে একটি ব্রেকপয়েন্টে পজ করার পর ফাংশনটি পুনরায় রান করতে এবং ফাংশনের লোকাল, গ্লোবাল বা ইমপ্লিমেন্টেশন পরিবর্তন করার সুযোগ দেয়। আরও তথ্যের জন্য, ওরাকলের পপ ফ্রেম রেফারেন্স পেজ দেখুন।

পৃষ্ঠ নিয়ন্ত্রণ এপিআই

অ্যান্ড্রয়েড ১০ সিস্টেম-কম্পোজিটরে ( SurfaceFlinger ) নিম্ন-স্তরের অ্যাক্সেসের জন্য একটি SurfaceControl এপিআই প্রদান করে। বেশিরভাগ ব্যবহারকারীর জন্য, কম্পোজিটরকে কাজে লাগানোর সঠিক উপায় হলো সারফেসভিউ। SurfaceControl এপিআই কিছু নির্দিষ্ট ক্ষেত্রে কার্যকর হতে পারে, উদাহরণস্বরূপ:

  • একাধিক পৃষ্ঠের সিঙ্ক্রোনাইজেশন
  • ক্রস-প্রসেস সারফেস এমবেডিং
  • নিম্ন-স্তরের আজীবন ব্যবস্থাপনা

SurfaceControl API-টি SDK এবং NDK উভয় বাইন্ডিং-এই উপলব্ধ। NDK ইমপ্লিমেন্টেশনটিতে কম্পোজিটরের সাথে ম্যানুয়ালি বাফার বিনিময়ের জন্য একটি API অন্তর্ভুক্ত রয়েছে। এটি সেইসব ব্যবহারকারীদের জন্য একটি বিকল্প প্রদান করে, যারা BufferQueue এর সীমাবদ্ধতার সম্মুখীন হয়েছেন।

ওয়েবভিউ হ্যাং রেন্ডারার সনাক্তকরণ

অ্যান্ড্রয়েড ১০-এ WebViewRenderProcessClient অ্যাবস্ট্রাক্ট ক্লাসটি চালু করা হয়েছে, যা ব্যবহার করে অ্যাপগুলো কোনো WebView সাড়া দেওয়া বন্ধ করে দিয়েছে কিনা তা শনাক্ত করতে পারে। এই ক্লাসটি ব্যবহার করতে:

  1. আপনার নিজস্ব সাবক্লাস সংজ্ঞায়িত করুন এবং এর onRenderProcessResponsive()onRenderProcessUnresponsive() মেথডগুলো ইমপ্লিমেন্ট করুন।
  2. আপনার WebViewRenderProcessClient এর একটি ইনস্ট্যান্সকে এক বা একাধিক WebView অবজেক্টের সাথে সংযুক্ত করুন।
  3. যদি WebView টি সাড়া দেওয়া বন্ধ করে দেয়, তাহলে সিস্টেম ক্লায়েন্টের onRenderProcessUnresponsive() মেথডকে কল করে এবং WebViewWebViewRenderProcess প্যারামিটার দুটি পাস করে। (যদি WebView টি সিঙ্গেল-প্রসেস হয়, তাহলে WebViewRenderProcess প্যারামিটারটি null থাকে।) আপনার অ্যাপ উপযুক্ত ব্যবস্থা নিতে পারে, যেমন ব্যবহারকারীকে একটি ডায়ালগ বক্স দেখিয়ে জিজ্ঞাসা করা যে তারা রেন্ডারিং প্রক্রিয়াটি থামাতে চান কিনা।

যদি WebView টি অনুত্তেজিত থাকে, তবে সিস্টেম পর্যায়ক্রমে (প্রতি পাঁচ সেকেন্ডে একবারের বেশি নয়) onRenderProcessUnresponsive() কল করে, কিন্তু অন্য কোনো পদক্ষেপ নেয় না। যদি WebView টি পুনরায় সক্রিয় হয়, তবে সিস্টেম কেবল একবার onRenderProcessResponsive() কল করে।

সেটিংস প্যানেল

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

চিত্র ১। ডিভাইসটি নেটওয়ার্কের সাথে সংযুক্ত না থাকা অবস্থায় ব্যবহারকারী একটি ওয়েব পেজ খোলার চেষ্টা করছেন। ক্রোম ইন্টারনেট সংযোগ সেটিংস প্যানেলটি পপ-আপ করে দেখায়...

চিত্র ২। ব্যবহারকারী ক্রোম অ্যাপ থেকে বের না হয়েই ওয়াই-ফাই চালু করতে এবং নেটওয়ার্ক নির্বাচন করতে পারেন।

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

একটি সেটিংস প্যানেল প্রদর্শন করতে, নিম্নলিখিত 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
সমস্ত অডিও স্ট্রিমের ভলিউম সেটিংস দেখায়।

উন্নয়ন ভাগ করে নেওয়া

অ্যান্ড্রয়েড ১০ শেয়ারিং ব্যবস্থায় বেশ কিছু উন্নতি এনেছে:

শর্টকাট এপিআই শেয়ার করা

শেয়ারিং শর্টকাটস এপিআই, ডিরেক্ট শেয়ার এপিআই-গুলোকে প্রতিস্থাপন করে।

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

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

ShortcutInfo.Builder শেয়ার টার্গেট সম্পর্কে অতিরিক্ত তথ্য প্রদানের জন্য মেথড যোগ করে এবং সেগুলোকে উন্নত করে।

সরাসরি শেয়ার লক্ষ্যমাত্রা

আপনি একটি ডাইনামিক শর্টকাটকে ডাইরেক্ট শেয়ার টার্গেট হিসেবে প্রকাশ করতে পারেন। ডাইরেক্ট শেয়ার টার্গেট প্রকাশ দেখুন।

ShortcutManagerCompat হলো একটি নতুন AndroidX API যা পুরোনো DirectShare API-এর সাথে পশ্চাৎ সামঞ্জস্য (backwards compatibility) প্রদান করে। শেয়ার টার্গেট প্রকাশ করার জন্য এটিই সবচেয়ে পছন্দের উপায়।

পাঠ্যের পূর্বরূপ দেখা

যখন কোনো অ্যাপ টেক্সট কন্টেন্ট শেয়ার করে, তখন এটি শেয়ারশিট UI-তে কন্টেন্টটির একটি ঐচ্ছিক প্রিভিউ দেখাতে পারে।

রিচ টেক্সট প্রিভিউ যোগ করা দেখুন

আরও জানুন

অ্যাপগুলো কীভাবে ডেটা শেয়ার করতে পারে সে সম্পর্কে আরও তথ্যের জন্য, ‘অন্যান্য অ্যাপে সাধারণ ডেটা পাঠানো’ এবং ‘অন্যান্য অ্যাপ থেকে সাধারণ ডেটা গ্রহণ করা’ দেখুন।

ডার্ক থিম

অ্যান্ড্রয়েড ১০-এ একটি ডার্ক থিম রয়েছে যা অ্যান্ড্রয়েড সিস্টেম ইউআই এবং ডিভাইসে চলমান অ্যাপস উভয়ের ক্ষেত্রেই প্রযোজ্য। বিস্তারিত তথ্যের জন্য, ডার্ক থিম দেখুন।

ফোরগ্রাউন্ড পরিষেবা প্রকার

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

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

ফোরগ্রাউন্ড পরিষেবা প্রকার এমন একটি সার্ভিসের ব্যবহারের উদাহরণ যা এই টাইপটি ঘোষণা করবে
connectedDevice একটি পরিধানযোগ্য ফিটনেস ট্র্যাকার নিরীক্ষণ করুন
dataSync একটি নেটওয়ার্ক থেকে ফাইল ডাউনলোড করুন
location ব্যবহারকারীর শুরু করা একটি কাজ চালিয়ে যান
mediaPlayback একটি অডিও বই, পডকাস্ট বা সঙ্গীত চালান।
mediaProjection অল্প সময়ের জন্য ডিভাইসটির ডিসপ্লের একটি ভিডিও রেকর্ড করুন।
phoneCall চলমান ফোন কল সামলান

কোটলিন

অ্যান্ড্রয়েড ১০-এ কোটলিন ডেভেলপমেন্টের জন্য নিম্নলিখিত আপডেটগুলো অন্তর্ভুক্ত রয়েছে।

libcore API-এর জন্য নালযোগ্যতা টীকা

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

সাধারণত, কোটলিনে নালিবিলিটি কন্ট্রাক্ট লঙ্ঘনের ফলে কম্পাইলেশন এরর দেখা দেয়। আপনার বিদ্যমান কোডের সাথে সামঞ্জস্যতা নিশ্চিত করতে, শুধুমাত্র @RecentlyNullable এবং @RecentlyNonNull অ্যানোটেশনগুলো যোগ করা হয়। এর মানে হলো, নালিবিলিটি লঙ্ঘনের ফলে এররের পরিবর্তে ওয়ার্নিং দেখা দেয়।

এছাড়াও, অ্যান্ড্রয়েড ৯-এ যোগ করা যেকোনো @RecentlyNullable বা @RecentlyNonNull অ্যানোটেশন যথাক্রমে @Nullable এবং @NonNull এ পরিবর্তিত হচ্ছে। এর মানে হলো, অ্যান্ড্রয়েড ১০ এবং এর পরবর্তী সংস্করণগুলোতে, নালিবিলিটি ভায়োলেশনের ফলে ওয়ার্নিং-এর পরিবর্তে এরর দেখা দেবে।

অ্যানোটেশন পরিবর্তন সম্পর্কে আরও তথ্যের জন্য, অ্যান্ড্রয়েড ডেভেলপারস ব্লগে "Android Pie SDK is now more Kotlin-friendly" দেখুন।

এনডিকে

অ্যান্ড্রয়েড ১০-এ নিম্নলিখিত এনডিকে পরিবর্তনগুলো অন্তর্ভুক্ত রয়েছে।

ফাইল ডেসক্রিপ্টরের মালিকানা ডিবাগিং উন্নত করা হয়েছে।

অ্যান্ড্রয়েড ১০-এ fdsan যুক্ত করা হয়েছে, যা আপনাকে ফাইল ডেসক্রিপ্টরের মালিকানা সংক্রান্ত সমস্যা আরও সহজে খুঁজে বের করতে ও সমাধান করতে সাহায্য করে।

ফাইল ডেসক্রিপ্টরের মালিকানা ব্যবস্থাপনায় ত্রুটি, যা সাধারণত ইউজ-আফটার-ক্লোজ এবং ডাবল-ক্লোজ হিসেবে প্রকাশ পায়, তা মেমোরি অ্যালোকেশনের ইউজ-আফটার-ফ্রি এবং ডাবল-ফ্রি ত্রুটির অনুরূপ, কিন্তু এগুলো নির্ণয় ও সমাধান করা অনেক বেশি কঠিন হয়ে থাকে। fdsan ফাইল ডেসক্রিপ্টরের মালিকানা বলবৎ করার মাধ্যমে এর অব্যবস্থাপনা শনাক্ত এবং/অথবা প্রতিরোধ করার চেষ্টা করে।

এই সমস্যাগুলির সাথে সম্পর্কিত ক্র্যাশ সম্পর্কে আরও তথ্যের জন্য, "fdsan দ্বারা সনাক্ত করা ত্রুটি" দেখুন। fdsan সম্পর্কে আরও তথ্যের জন্য, fdsan-এর Google উৎস পৃষ্ঠাটি দেখুন।

ইএলএফ টিএলএস

ন্যূনতম এপিআই লেভেল ২৯ সহ এনডিকে (NDK) ব্যবহার করে নির্মিত অ্যাপ্লিকেশনগুলি emutls এর পরিবর্তে ELF TLS ব্যবহার করতে পারে। থ্রেড-লোকাল ভেরিয়েবল পরিচালনার এই পদ্ধতিকে সমর্থন করার জন্য ডাইনামিক এবং স্ট্যাটিক লিঙ্কার সাপোর্ট যোগ করা হয়েছে।

এপিআই লেভেল ২৮ এবং তার নিচের সংস্করণের জন্য নির্মিত অ্যাপগুলোর ক্ষেত্রে, কিছু emutls সমস্যা সমাধানের জন্য libgcc/compiler-rt উন্নতি সাধন করা হয়েছে।

আরও তথ্যের জন্য, NDK ডেভেলপারদের জন্য অ্যান্ড্রয়েড পরিবর্তনসমূহ দেখুন।

রানটাইম

অ্যান্ড্রয়েড ১০-এ নিম্নলিখিত রানটাইম পরিবর্তনটি অন্তর্ভুক্ত করা হয়েছে।

ম্যালইনফো-ভিত্তিক গার্বেজ কালেকশন ট্রিগারিং

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

অ্যান্ড্রয়েড ১০-এ, গার্বেজ কালেক্টর (GC) সিস্টেম malloc() দ্বারা বরাদ্দ করা হিপের মোট আকার ট্র্যাক করে, এবং এটি নিশ্চিত করে যে বড় আকারের malloc() অ্যালোকেশনগুলো যেন সবসময় GC-ট্রিগারিং গণনার অন্তর্ভুক্ত থাকে। এর ফলে, যেসব অ্যাপ জাভা এক্সিকিউশনের সাথে প্রচুর পরিমাণে C++ অ্যালোকেশন করে, তাদের গার্বেজ কালেকশনের হার বেড়ে যেতে পারে। অন্যান্য অ্যাপের ক্ষেত্রে এটি সামান্য কমে যেতে পারে।

পরীক্ষা এবং ডিবাগিং

অ্যান্ড্রয়েড ১০-এ টেস্টিং এবং ডিবাগিংয়ের জন্য নিম্নলিখিত উন্নতিগুলো অন্তর্ভুক্ত করা হয়েছে।

ডিভাইসে সিস্টেম ট্রেসিংয়ের উন্নতি

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

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

অ্যান্ড্রয়েড ১০ এবং এর পরবর্তী সংস্করণগুলিতে, ট্রেস ফাইলগুলি এমন একটি ফরম্যাটে সংরক্ষিত হয় যা পারফেটটো (Perfetto) দিয়ে খোলা যায়। পারফেটটো হলো পারফরম্যান্স ইন্সট্রুমেন্টেশন এবং ট্রেসিং-এর জন্য একটি ওপেন-সোর্স প্রজেক্ট। আপনি পারফেটটো ট্রেস ফাইলগুলিকে সিস্ট্রেস (Systrace) ফরম্যাটে রূপান্তর করতে পারেন।

টেক্সটক্লাসিফায়ারের উন্নতি

অ্যান্ড্রয়েড ১০-এর TextClassifier ইন্টারফেসে অতিরিক্ত টেক্সট ক্লাসিফিকেশন কার্যকারিতা প্রদান করা হয়েছে।

ভাষা সনাক্তকরণ

detectLanguage() মেথডটি পূর্বে বিদ্যমান ক্লাসিফিকেশন মেথডগুলোর মতোই কাজ করে। এটি একটি TextLanguage.Request অবজেক্ট গ্রহণ করে এবং একটি TextLanguage অবজেক্ট রিটার্ন করে।

TextLanguage অবজেক্টগুলো ক্রমজোড়ের একটি তালিকা নিয়ে গঠিত। প্রতিটি জোড়ের মধ্যে একটি লোকেল এবং শ্রেণীকরণের জন্য একটি সংশ্লিষ্ট কনফিডেন্স স্কোর থাকে।

প্রস্তাবিত কথোপকথনের পদক্ষেপ

suggestConversationActions() মেথডটি বিদ্যমান ক্লাসিফিকেশন মেথডগুলোর মতোই কাজ করে। এটি একটি ConversationActions.Request অবজেক্ট গ্রহণ করে এবং একটি ConversationActions অবজেক্ট রিটার্ন করে।

ConversationActions অবজেক্টগুলো ConversationAction অবজেক্টের একটি তালিকা নিয়ে গঠিত। প্রতিটি ConversationAction অবজেক্টে একটি সম্ভাব্য প্রস্তাবিত পদক্ষেপ এবং তার কনফিডেন্স স্কোর অন্তর্ভুক্ত থাকে।

নোটিফিকেশনে স্মার্ট উত্তর/অ্যাকশন

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

এই উত্তরগুলো তৈরি করতে ব্যবহৃত এপিআইটি TextClassifier এর একটি অংশ, এবং অ্যান্ড্রয়েড ১০-এ এটি ডেভেলপারদের জন্য সরাসরি উন্মুক্ত করা হয়েছে। আরও তথ্যের জন্য অনুগ্রহ করে TextClassifier-এর উন্নতি সম্পর্কিত অংশটি পড়ুন।

আপনার অ্যাপ যদি নিজস্ব সাজেশন দেয়, তাহলে প্ল্যাটফর্ম কোনো স্বয়ংক্রিয় সাজেশন তৈরি করে না। আপনি যদি না চান যে আপনার অ্যাপের নোটিফিকেশনে কোনো সাজেস্টেড রিপ্লাই বা অ্যাকশন দেখানো হোক, তাহলে আপনি setAllowGeneratedReplies() এবং setAllowSystemGeneratedContextualActions() ব্যবহার করে সিস্টেম-জেনারেটেড রিপ্লাই এবং অ্যাকশনগুলো থেকে অপ্ট-আউট করতে পারেন।