Android 5.0 APIs

API স্তর: 21

Android 5.0 ( LOLLIPOP ) ব্যবহারকারী এবং অ্যাপ বিকাশকারীদের জন্য নতুন বৈশিষ্ট্যগুলি অফার করে৷ এই নথিটি সবচেয়ে উল্লেখযোগ্য নতুন APIগুলির একটি ভূমিকা প্রদান করে৷

আপনার যদি একটি প্রকাশিত অ্যাপ থাকে, তাহলে নিশ্চিত করুন যে Android 5.0 আচরণের পরিবর্তনগুলি আপনার অ্যাপে অ্যাকাউন্ট করা উচিত। এই আচরণের পরিবর্তনগুলি Android 5.0 ডিভাইসে আপনার অ্যাপকে প্রভাবিত করতে পারে, এমনকি আপনি যদি নতুন API ব্যবহার না করেন বা নতুন কার্যকারিতা লক্ষ্য না করেন।

নতুন প্ল্যাটফর্ম বৈশিষ্ট্যগুলির একটি উচ্চ-স্তরের চেহারার জন্য, পরিবর্তে Android Lollipop হাইলাইটগুলি দেখুন৷

বিকাশ শুরু করুন

Android 5.0 এর জন্য অ্যাপ তৈরি করা শুরু করতে, আপনাকে প্রথমে Android SDK পেতে হবে। তারপর Android 5.0 SDK প্ল্যাটফর্ম এবং সিস্টেম চিত্রগুলি ডাউনলোড করতে SDK ম্যানেজার ব্যবহার করুন৷

আপনার লক্ষ্য API স্তর আপডেট করুন

Android 5.0 চালিত ডিভাইসগুলির জন্য আপনার অ্যাপটিকে আরও ভালভাবে অপ্টিমাইজ করতে, আপনার targetSdkVersion "21" এ সেট করুন, একটি Android 5.0 সিস্টেম ছবিতে আপনার অ্যাপ ইনস্টল করুন, এটি পরীক্ষা করুন, তারপর এই পরিবর্তনের সাথে আপডেট করা অ্যাপটি প্রকাশ করুন৷

আপনার minSdkVersion দ্বারা সমর্থিত নয় এমন APIগুলি চালানোর আগে সিস্টেম API স্তরের জন্য আপনার কোডে শর্ত যোগ করে আপনি পুরানো সংস্করণগুলিকে সমর্থন করার সাথে সাথে আপনি Android 5.0 API ব্যবহার করতে পারেন৷ পশ্চাৎপদ সামঞ্জস্য বজায় রাখার বিষয়ে আরও জানতে, বিভিন্ন প্ল্যাটফর্ম সংস্করণ সমর্থনকারী পড়ুন।

API স্তরগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, পড়ুন API স্তর কী?

গুরুত্বপূর্ণ আচরণ পরিবর্তন

আপনি যদি আগে Android এর জন্য একটি অ্যাপ প্রকাশ করে থাকেন, তাহলে জেনে রাখুন যে আপনার অ্যাপটি Android 5.0-এর পরিবর্তন দ্বারা প্রভাবিত হতে পারে।

সম্পূর্ণ তথ্যের জন্য দয়া করে Android 5.0 পরিবর্তনগুলি দেখুন৷

ইউজার ইন্টারফেস

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

Android 5.0 Android এর নতুন উপাদান ডিজাইন শৈলীর জন্য সমর্থন যোগ করে। আপনি ম্যাটেরিয়াল ডিজাইনের সাথে অ্যাপ তৈরি করতে পারেন যা দৃশ্যত গতিশীল এবং ব্যবহারকারীদের কাছে স্বাভাবিক মনে হয় এমন UI উপাদান ট্রানজিশন রয়েছে। এই সমর্থন অন্তর্ভুক্ত:

  • উপাদান থিম
  • ছায়া দেখুন
  • RecyclerView উইজেট
  • অঙ্কনযোগ্য অ্যানিমেশন এবং স্টাইলিং প্রভাব
  • উপাদান নকশা অ্যানিমেশন এবং কার্যকলাপ পরিবর্তন প্রভাব
  • দৃশ্যের অবস্থার উপর ভিত্তি করে দেখার বৈশিষ্ট্যগুলির জন্য অ্যানিমেটর
  • কাস্টমাইজযোগ্য UI উইজেট এবং অ্যাপ বারগুলি আপনার নিয়ন্ত্রণ করে এমন রঙের প্যালেট সহ
  • এক্সএমএল ভেক্টর গ্রাফিক্সের উপর ভিত্তি করে অ্যানিমেটেড এবং অ-অ্যানিমেটেড অঙ্কনযোগ্য

আপনার অ্যাপে উপাদান নকশা কার্যকারিতা যোগ করার বিষয়ে আরও জানতে, উপাদান নকশা দেখুন।

সাম্প্রতিক স্ক্রিনে সমসাময়িক নথি এবং ক্রিয়াকলাপ

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

একটি যৌক্তিক বিরতি সন্নিবেশ করান যাতে সিস্টেমটি আপনার কার্যকলাপকে একটি নতুন টাস্ক হিসাবে বিবেচনা করে, startActivity() দিয়ে কার্যকলাপ চালু করার সময় FLAG_ACTIVITY_NEW_DOCUMENT ব্যবহার করুন। আপনি আপনার ম্যানিফেস্টে "intoExisting" বা "always"<activity> উপাদানের documentLaunchMode বৈশিষ্ট্য সেট করেও এই আচরণটি পেতে পারেন।

সাম্প্রতিক স্ক্রীনে বিশৃঙ্খলতা এড়াতে, আপনি আপনার অ্যাপ থেকে সর্বাধিক সংখ্যক কাজ সেট করতে পারেন যা সেই স্ক্রিনে প্রদর্শিত হতে পারে। এটি করার জন্য, <application> অ্যাট্রিবিউট android:maxRecents সেট করুন। বর্তমান সর্বাধিক যেটি নির্দিষ্ট করা যেতে পারে তা হল প্রতি ব্যবহারকারী 50টি টাস্ক (নিম্ন RAM ডিভাইসের জন্য 25)।

সাম্প্রতিক স্ক্রীনে কাজগুলি রিবুট জুড়ে টিকে থাকার জন্য সেট করা যেতে পারে। অধ্যবসায় আচরণ নিয়ন্ত্রণ করতে, android:persistableMode বৈশিষ্ট্যটি ব্যবহার করুন। আপনি setTaskDescription() পদ্ধতিতে কল করে সাম্প্রতিক স্ক্রিনে একটি কার্যকলাপের ভিজ্যুয়াল বৈশিষ্ট্যগুলিও পরিবর্তন করতে পারেন, যেমন কার্যকলাপের রঙ, লেবেল এবং আইকন।

ওয়েবভিউ আপডেট

Android 5.0 Chromium M37-এ WebView বাস্তবায়ন আপডেট করে, নিরাপত্তা এবং স্থিতিশীলতা বর্ধিতকরণ, সেইসাথে বাগ সংশোধন করে। Android 5.0 এ চলমান একটি WebView এর জন্য ডিফল্ট ব্যবহারকারী-এজেন্ট স্ট্রিংটি সংস্করণ নম্বর হিসাবে 37.0.0.0 অন্তর্ভুক্ত করার জন্য আপডেট করা হয়েছে।

এই রিলিজটি PermissionRequest ক্লাসের সাথে পরিচয় করিয়ে দেয়, যা আপনার অ্যাপটিকে ওয়েব এপিআই যেমন getUserMedia() এর মাধ্যমে ক্যামেরা এবং মাইক্রোফোনের মতো WebView সংস্থান অ্যাক্সেস করার অনুমতি দেয়। WebView কে অনুমতি দেওয়ার জন্য আপনার অ্যাপের অবশ্যই এই সংস্থানগুলির জন্য উপযুক্ত Android অনুমতি থাকতে হবে।

নতুন onShowFileChooser() পদ্ধতির সাথে, আপনি এখন WebView এ একটি ইনপুট ফর্ম ক্ষেত্র ব্যবহার করতে পারেন এবং Android ডিভাইস থেকে ছবি এবং ফাইল নির্বাচন করতে একটি ফাইল চয়নকারী চালু করতে পারেন৷

উপরন্তু, এই রিলিজটি WebAudio , WebGL , এবং WebRTC ওপেন স্ট্যান্ডার্ডের জন্য সমর্থন নিয়ে আসে। এই রিলিজে অন্তর্ভুক্ত নতুন বৈশিষ্ট্যগুলি সম্পর্কে আরও জানতে, Android এর জন্য WebView দেখুন।

স্ক্রীন ক্যাপচার এবং শেয়ারিং

Android 5.0 আপনাকে নতুন android.media.projection API-এর সাথে আপনার অ্যাপে স্ক্রিন ক্যাপচারিং এবং স্ক্রিন শেয়ারিং ক্ষমতা যোগ করতে দেয়। এই কার্যকারিতা দরকারী, উদাহরণস্বরূপ, যদি আপনি একটি ভিডিও কনফারেন্সিং অ্যাপে স্ক্রিন শেয়ারিং সক্ষম করতে চান৷

নতুন createVirtualDisplay() পদ্ধতিটি আপনার অ্যাপটিকে একটি Surface অবজেক্টে মূল স্ক্রিনের (ডিফল্ট ডিসপ্লে) বিষয়বস্তু ক্যাপচার করতে দেয়, যা আপনার অ্যাপটি তখন পুরো নেটওয়ার্ক জুড়ে পাঠাতে পারে। API শুধুমাত্র অ-সুরক্ষিত স্ক্রীন সামগ্রী ক্যাপচার করার অনুমতি দেয়, সিস্টেম অডিও নয়। স্ক্রিন ক্যাপচারিং শুরু করতে, আপনার অ্যাপটিকে প্রথমে createScreenCaptureIntent() পদ্ধতির মাধ্যমে প্রাপ্ত একটি Intent ব্যবহার করে একটি স্ক্রিন ক্যাপচার ডায়ালগ চালু করে ব্যবহারকারীর অনুমতির অনুরোধ করতে হবে।

নতুন API গুলি কীভাবে ব্যবহার করবেন তার উদাহরণের জন্য, নমুনা প্রকল্পে MediaProjectionDemo ক্লাসটি দেখুন।

বিজ্ঞপ্তি

লক স্ক্রীন বিজ্ঞপ্তি

Android 5.0-এর লক স্ক্রিনগুলিতে বিজ্ঞপ্তিগুলি উপস্থাপন করার ক্ষমতা রয়েছে৷ ব্যবহারকারীরা সেটিংসের মাধ্যমে চয়ন করতে পারেন যে একটি সুরক্ষিত লক স্ক্রিনে সংবেদনশীল বিজ্ঞপ্তি সামগ্রী দেখানোর অনুমতি দেওয়া হবে কিনা৷

আপনার অ্যাপ্লিকেশানটি দৃশ্যমান বিশদ স্তর নিয়ন্ত্রণ করতে পারে যখন এর বিজ্ঞপ্তিগুলি সুরক্ষিত লক স্ক্রিনে প্রদর্শিত হয়৷ দৃশ্যমানতা স্তর নিয়ন্ত্রণ করতে, setVisibility() কল করুন এবং এই মানগুলির মধ্যে একটি নির্দিষ্ট করুন:

  • VISIBILITY_PRIVATE : প্রাথমিক তথ্য দেখায়, যেমন বিজ্ঞপ্তির আইকন, কিন্তু বিজ্ঞপ্তির সম্পূর্ণ বিষয়বস্তু লুকিয়ে রাখে।
  • VISIBILITY_PUBLIC : বিজ্ঞপ্তির সম্পূর্ণ বিষয়বস্তু দেখায়।
  • VISIBILITY_SECRET : বিজ্ঞপ্তির আইকন বাদ দিয়ে কিছুই দেখায় না৷

যখন দৃশ্যমানতার স্তর VISIBILITY_PRIVATE হয়, তখন আপনি বিজ্ঞপ্তি সামগ্রীর একটি সংশোধিত সংস্করণও প্রদান করতে পারেন যা ব্যক্তিগত বিবরণ লুকিয়ে রাখে৷ উদাহরণস্বরূপ, একটি এসএমএস অ্যাপ একটি বিজ্ঞপ্তি প্রদর্শন করতে পারে যা দেখায় যে "আপনার কাছে 3টি নতুন পাঠ্য বার্তা রয়েছে" কিন্তু বার্তা সামগ্রী এবং প্রেরকদের লুকিয়ে রাখে৷ এই বিকল্প বিজ্ঞপ্তি প্রদান করতে, প্রথমে Notification.Builder ব্যবহার করে প্রতিস্থাপন বিজ্ঞপ্তি তৈরি করুন। আপনি যখন ব্যক্তিগত বিজ্ঞপ্তি অবজেক্ট তৈরি করেন, setPublicVersion() পদ্ধতির মাধ্যমে প্রতিস্থাপনের বিজ্ঞপ্তিটি সংযুক্ত করুন।

বিজ্ঞপ্তি মেটাডেটা

Android 5.0 আপনার অ্যাপ বিজ্ঞপ্তিগুলির সাথে সম্পর্কিত মেটাডেটা ব্যবহার করে বিজ্ঞপ্তিগুলিকে আরও বুদ্ধিমত্তার সাথে সাজাতে৷ মেটাডেটা সেট করতে, Notification.Builder নিম্নলিখিত পদ্ধতিগুলিকে কল করুন৷ আপনি যখন বিজ্ঞপ্তি তৈরি করবেন তখন বিল্ডার:

  • setCategory() : ডিভাইসটি যখন অগ্রাধিকার মোডে থাকে তখন কীভাবে আপনার অ্যাপের বিজ্ঞপ্তিগুলি পরিচালনা করতে হয় তা সিস্টেমকে বলে (উদাহরণস্বরূপ, যদি কোনও বিজ্ঞপ্তি একটি ইনকামিং কল, তাত্ক্ষণিক বার্তা, বা অ্যালার্ম উপস্থাপন করে)।
  • setPriority() : নোটিফিকেশনকে সাধারণ বিজ্ঞপ্তির চেয়ে কম বা বেশি গুরুত্বপূর্ণ হিসেবে চিহ্নিত করে। PRIORITY_MAX বা PRIORITY_HIGH সেট করা অগ্রাধিকার ক্ষেত্র সহ বিজ্ঞপ্তিগুলি একটি ছোট ভাসমান উইন্ডোতে প্রদর্শিত হয় যদি বিজ্ঞপ্তিতে শব্দ বা কম্পনও থাকে৷
  • addPerson() : আপনাকে এক বা একাধিক ব্যক্তিকে যুক্ত করতে সক্ষম করে যারা একটি বিজ্ঞপ্তির সাথে প্রাসঙ্গিক। আপনার অ্যাপটি সিস্টেমকে সংকেত দিতে এটি ব্যবহার করতে পারে যে এটি নির্দিষ্ট ব্যক্তিদের কাছ থেকে বিজ্ঞপ্তিগুলিকে একত্রে গোষ্ঠীভুক্ত করা উচিত, বা এই ব্যক্তিদের থেকে বিজ্ঞপ্তিগুলিকে আরও গুরুত্বপূর্ণ হিসাবে র‌্যাঙ্ক করা উচিত৷

গ্রাফিক্স

OpenGL ES 3.1-এর জন্য সমর্থন

Android 5.0 OpenGL ES 3.1 এর জন্য জাভা ইন্টারফেস এবং নেটিভ সমর্থন যোগ করে। OpenGL ES 3.1-এ প্রদত্ত মূল নতুন কার্যকারিতা অন্তর্ভুক্ত:

  • শেডার গণনা করুন
  • আলাদা শেডার বস্তু
  • পরোক্ষ ড্র কমান্ড
  • মাল্টি নমুনা এবং স্টেনসিল টেক্সচার
  • শেডিং ভাষার উন্নতি
  • উন্নত ব্লেন্ড মোড এবং ডিবাগিংয়ের জন্য এক্সটেনশন
  • OpenGL ES 2.0 এবং 3.0 এর সাথে পশ্চাদগামী সামঞ্জস্য

Android-এ OpenGL ES 3.1-এর জন্য জাভা ইন্টারফেস GLES31 এর সাথে দেওয়া হয়েছে। OpenGL ES 3.1 ব্যবহার করার সময়, নিশ্চিত হোন যে আপনি আপনার ম্যানিফেস্ট ফাইলে <uses-feature> ট্যাগ এবং android:glEsVersion অ্যাট্রিবিউট দিয়ে ঘোষণা করেছেন। যেমন:

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

রানটাইমে ডিভাইসের সমর্থিত OpenGL ES সংস্করণটি কীভাবে পরীক্ষা করবেন তা সহ OpenGL ES ব্যবহার সম্পর্কে আরও তথ্যের জন্য, OpenGL ES API নির্দেশিকা দেখুন।

অ্যান্ড্রয়েড এক্সটেনশন প্যাক

OpenGL ES 3.1 ছাড়াও, এই রিলিজটি জাভা ইন্টারফেস সহ একটি এক্সটেনশন প্যাক এবং উন্নত গ্রাফিক্স কার্যকারিতার জন্য স্থানীয় সমর্থন প্রদান করে। এই এক্সটেনশনগুলিকে Android দ্বারা একক প্যাকেজ হিসাবে বিবেচনা করা হয়৷ (যদি ANDROID_extension_pack_es31a এক্সটেনশনটি উপস্থিত থাকে, তাহলে আপনার অ্যাপ অনুমান করতে পারে যে প্যাকেজের সমস্ত এক্সটেনশন উপস্থিত রয়েছে এবং একটি একক #extension বিবৃতি দিয়ে শেডিং ভাষা বৈশিষ্ট্যগুলি সক্ষম করতে পারে৷)

এক্সটেনশন প্যাক সমর্থন করে:

  • শেডার স্টোরেজ বাফার, ছবি এবং পরমাণুর জন্য গ্যারান্টিযুক্ত ফ্র্যাগমেন্ট শেডার সমর্থন (Fragment shader সমর্থন OpenGL ES 3.1 এ ঐচ্ছিক।)
  • টেসেলেশন এবং জ্যামিতি শেডার্স
  • ASTC (LDR) টেক্সচার কম্প্রেশন বিন্যাস
  • প্রতি-নমুনা ইন্টারপোলেশন এবং ছায়া
  • ফ্রেম বাফারে প্রতিটি রঙের সংযুক্তির জন্য বিভিন্ন মিশ্রণ মোড

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

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

মিডিয়া

উন্নত ক্যামেরা ক্ষমতার জন্য ক্যামেরা API

Android 5.0 সূক্ষ্ম-শস্যের ফটো ক্যাপচার এবং চিত্র প্রক্রিয়াকরণের সুবিধার্থে নতুন android.hardware.camera2 API প্রবর্তন করেছে। আপনি এখন getCameraIdList() দিয়ে সিস্টেমে উপলব্ধ ক্যামেরা ডিভাইসগুলি প্রোগ্রামেটিকভাবে অ্যাক্সেস করতে পারেন এবং openCamera() দিয়ে একটি নির্দিষ্ট ডিভাইসের সাথে সংযোগ করতে পারেন। ছবি ক্যাপচার করা শুরু করতে, একটি CameraCaptureSession তৈরি করুন এবং ক্যাপচার করা ছবি পাঠাতে Surface অবজেক্টগুলি নির্দিষ্ট করুন। CameraCaptureSession একটি বিস্ফোরণে একক শট বা একাধিক ছবি তোলার জন্য কনফিগার করা যেতে পারে।

যখন নতুন ছবি ক্যাপচার করা হয় তখন বিজ্ঞপ্তি পাওয়ার জন্য, CameraCaptureSession.CaptureCallback শ্রোতা প্রয়োগ করুন এবং আপনার ক্যাপচার অনুরোধে এটি সেট করুন। এখন যখন সিস্টেমটি ইমেজ ক্যাপচারের অনুরোধটি সম্পূর্ণ করে, তখন আপনার CameraCaptureSession.CaptureCallback শ্রোতা onCaptureCompleted() -এ একটি কল পাবেন, যা আপনাকে CaptureResult এ ইমেজ ক্যাপচার মেটাডেটা প্রদান করবে।

CameraCharacteristics ক্লাস আপনার অ্যাপকে সনাক্ত করতে দেয় যে কোন ডিভাইসে ক্যামেরা বৈশিষ্ট্যগুলি উপলব্ধ। বস্তুর INFO_SUPPORTED_HARDWARE_LEVEL বৈশিষ্ট্য ক্যামেরার কার্যকারিতার স্তরের প্রতিনিধিত্ব করে।

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

আপডেট করা ক্যামেরা API কীভাবে ব্যবহার করবেন তা দেখতে, এই রিলিজে Camera2Basic এবং Camera2Video বাস্তবায়নের নমুনাগুলি পড়ুন।

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

এই রিলিজে AudioTrack নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • আপনার অ্যাপ এখন ফ্লোটিং-পয়েন্ট ফরম্যাটে ( ENCODING_PCM_FLOAT ) অডিও ডেটা সরবরাহ করতে পারে। এটি বৃহত্তর গতিশীল পরিসীমা, আরও সামঞ্জস্যপূর্ণ নির্ভুলতা এবং বৃহত্তর হেডরুমের অনুমতি দেয়। ফ্লোটিং-পয়েন্ট পাটিগণিত মধ্যবর্তী গণনার সময় বিশেষভাবে কার্যকর। প্লেব্যাক এন্ডপয়েন্টগুলি অডিও ডেটার জন্য পূর্ণসংখ্যা বিন্যাস এবং নিম্ন বিট গভীরতা ব্যবহার করে। (Android 5.0-এ, অভ্যন্তরীণ পাইপলাইনের অংশগুলি এখনও ভাসমান পয়েন্ট নয়।)
  • আপনার অ্যাপটি এখন ByteBuffer হিসাবে অডিও ডেটা সরবরাহ করতে পারে, MediaCodec দ্বারা সরবরাহ করা একই বিন্যাসে।
  • WRITE_NON_BLOCKING বিকল্পটি কিছু অ্যাপের জন্য বাফারিং এবং মাল্টিথ্রেডিং সহজ করতে পারে।

মিডিয়া প্লেব্যাক নিয়ন্ত্রণ

সিস্টেম UI আপনার মিডিয়া প্লেব্যাক সম্পর্কে জানে এবং অ্যালবাম আর্ট এক্সট্র্যাক্ট এবং দেখাতে পারে তা নিশ্চিত করতে নতুন বিজ্ঞপ্তি এবং মিডিয়া API ব্যবহার করুন৷ একটি UI এবং একটি পরিষেবা জুড়ে মিডিয়া প্লেব্যাক নিয়ন্ত্রণ করা এখন নতুন MediaSession এবং MediaController ক্লাসের সাথে সহজ।

নতুন MediaSession ক্লাস অবচ্যুত RemoteControlClient ক্লাস প্রতিস্থাপন করে এবং পরিবহন নিয়ন্ত্রণ এবং মিডিয়া বোতাম পরিচালনার জন্য কলব্যাক পদ্ধতির একক সেট প্রদান করে। যদি আপনার অ্যাপ মিডিয়া প্লেব্যাক প্রদান করে এবং Android TV বা Wear প্ল্যাটফর্মে চলে, তাহলে একই কলব্যাক পদ্ধতি ব্যবহার করে আপনার পরিবহন নিয়ন্ত্রণগুলি পরিচালনা করতে MediaSession ক্লাস ব্যবহার করুন।

আপনি এখন নতুন MediaController ক্লাসের সাথে আপনার নিজস্ব মিডিয়া কন্ট্রোলার অ্যাপ তৈরি করতে পারেন। এই ক্লাসটি আপনার অ্যাপের UI প্রক্রিয়া থেকে মিডিয়া প্লেব্যাক নিরীক্ষণ এবং নিয়ন্ত্রণ করার একটি থ্রেড-নিরাপদ উপায় প্রদান করে। একটি কন্ট্রোলার তৈরি করার সময়, একটি MediaSession.Token অবজেক্ট নির্দিষ্ট করুন যাতে আপনার অ্যাপ প্রদত্ত MediaSession এর সাথে ইন্টারঅ্যাক্ট করতে পারে। MediaController.TransportControls পদ্ধতি ব্যবহার করে, আপনি সেই সেশনে মিডিয়া প্লেব্যাক নিয়ন্ত্রণ করতে play() , stop() , skipToNext() , এবং setRating() এর মতো কমান্ড পাঠাতে পারেন। কন্ট্রোলারের সাথে, আপনি একটি MediaController.Callback অবজেক্ট নিবন্ধন করতে পারেন মেটাডেটা শুনতে এবং অধিবেশনে রাজ্যের পরিবর্তনগুলি শুনতে।

এছাড়াও, আপনি সমৃদ্ধ বিজ্ঞপ্তিগুলি তৈরি করতে পারেন যা নতুন Notification.MediaStyle ক্লাসের সাথে একটি মিডিয়া সেশনের সাথে আবদ্ধ প্লেব্যাক নিয়ন্ত্রণের অনুমতি দেয়৷

মিডিয়া ব্রাউজিং

Android 5.0 নতুন android.media.browse API-এর মাধ্যমে অন্য অ্যাপের মিডিয়া বিষয়বস্তু লাইব্রেরি ব্রাউজ করার জন্য অ্যাপগুলির ক্ষমতার পরিচয় দেয়। আপনার অ্যাপে মিডিয়া বিষয়বস্তু প্রকাশ করতে, MediaBrowserService ক্লাস প্রসারিত করুন। আপনার MediaBrowserService এর বাস্তবায়ন একটি MediaSession.Token এ অ্যাক্সেস প্রদান করবে যাতে অ্যাপগুলি আপনার পরিষেবার মাধ্যমে প্রদত্ত মিডিয়া সামগ্রী চালাতে পারে।

একটি মিডিয়া ব্রাউজার পরিষেবার সাথে ইন্টারঅ্যাক্ট করতে, MediaBrowser ক্লাস ব্যবহার করুন৷ আপনি যখন একটি MediaBrowser দৃষ্টান্ত তৈরি করেন তখন একটি MediaSession এর জন্য উপাদানের নাম উল্লেখ করুন। সেই ব্রাউজার ইন্সট্যান্স ব্যবহার করে, আপনার অ্যাপটি তখন সংশ্লিষ্ট পরিষেবার সাথে সংযোগ করতে পারে এবং সেই পরিষেবার মাধ্যমে প্রকাশ করা সামগ্রী চালানোর জন্য একটি MediaSession.Token অবজেক্ট পেতে পারে।

স্টোরেজ

ডিরেক্টরি নির্বাচন

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

একটি ডিরেক্টরি সাবট্রি নির্বাচন করতে, একটি OPEN_DOCUMENT_TREE উদ্দেশ্য তৈরি করুন এবং পাঠান৷ সিস্টেমটি সমস্ত DocumentsProvider দৃষ্টান্ত প্রদর্শন করে যা সাবট্রি নির্বাচনকে সমর্থন করে, ব্যবহারকারীকে একটি ডিরেক্টরি ব্রাউজ করতে এবং নির্বাচন করতে দেয়। ফিরে আসা URI নির্বাচিত সাবট্রিতে অ্যাক্সেসের প্রতিনিধিত্ব করে। তারপর আপনি সাবট্রি অন্বেষণ করতে query() সহ buildChildDocumentsUriUsingTree() এবং buildDocumentUriUsingTree() ব্যবহার করতে পারেন।

নতুন createDocument() পদ্ধতি আপনাকে সাবট্রির নীচে যে কোনও জায়গায় নতুন নথি বা ডিরেক্টরি তৈরি করতে দেয়। বিদ্যমান নথিগুলি পরিচালনা করতে, renameDocument() এবং deleteDocument() ব্যবহার করুন। এই কলগুলি ইস্যু করার আগে প্রদানকারীর সমর্থন যাচাই করতে COLUMN_FLAGS চেক করুন৷

আপনি যদি একটি DocumentsProvider বাস্তবায়ন করেন এবং সাবট্রি নির্বাচনকে সমর্থন করতে চান, isChildDocument() প্রয়োগ করুন এবং আপনার COLUMN_FLAGSFLAG_SUPPORTS_IS_CHILD অন্তর্ভুক্ত করুন।

Android 5.0 শেয়ার্ড স্টোরেজে নতুন প্যাকেজ-নির্দিষ্ট ডিরেক্টরিও প্রবর্তন করে যেখানে আপনার অ্যাপ MediaStore অন্তর্ভুক্তির জন্য মিডিয়া ফাইল রাখতে পারে। নতুন getExternalMediaDirs() সমস্ত শেয়ার্ড স্টোরেজ ডিভাইসে এই ডিরেক্টরিগুলিতে পাথ ফেরত দেয়। একইভাবে getExternalFilesDir() এর জন্য, ফিরে আসা পাথগুলি অ্যাক্সেস করার জন্য আপনার অ্যাপের কোন অতিরিক্ত অনুমতির প্রয়োজন নেই। প্ল্যাটফর্মটি পর্যায়ক্রমে এই ডিরেক্টরিগুলিতে নতুন মিডিয়ার জন্য স্ক্যান করে, তবে আপনি নতুন সামগ্রীর জন্য স্পষ্টভাবে স্ক্যান করতে MediaScannerConnection ব্যবহার করতে পারেন।

ওয়্যারলেস এবং সংযোগ

একাধিক নেটওয়ার্ক সংযোগ

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

আপনার অ্যাপ্লিকেশন থেকে গতিশীলভাবে একটি নেটওয়ার্ক নির্বাচন করতে এবং সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি ConnectivityManager তৈরি করুন।
  2. একটি NetworkRequest অবজেক্ট তৈরি করতে NetworkRequest.Builder ক্লাস ব্যবহার করুন এবং নেটওয়ার্ক বৈশিষ্ট্য এবং পরিবহনের ধরন নির্দিষ্ট করুন যা আপনার অ্যাপ আগ্রহী।
  3. উপযুক্ত নেটওয়ার্কের জন্য স্ক্যান করতে, requestNetwork() অথবা registerNetworkCallback() এ কল করুন এবং NetworkRequest অবজেক্টে পাস করুন এবং ConnectivityManager.NetworkCallback এর বাস্তবায়ন করুন। আপনি যদি সক্রিয়ভাবে একটি উপযুক্ত নেটওয়ার্ক শনাক্ত করার পরে স্যুইচ করতে চান তবে requestNetwork() পদ্ধতিটি ব্যবহার করুন; সক্রিয়ভাবে স্যুইচ না করে শুধুমাত্র স্ক্যান করা নেটওয়ার্কের জন্য বিজ্ঞপ্তি পেতে, পরিবর্তে registerNetworkCallback() পদ্ধতি ব্যবহার করুন।

যখন সিস্টেম একটি উপযুক্ত নেটওয়ার্ক সনাক্ত করে, তখন এটি নেটওয়ার্কের সাথে সংযোগ স্থাপন করে এবং onAvailable() কলব্যাক আহ্বান করে। আপনি নেটওয়ার্ক সম্পর্কে অতিরিক্ত তথ্য পেতে কলব্যাক থেকে Network অবজেক্ট ব্যবহার করতে পারেন, অথবা নির্বাচিত নেটওয়ার্ক ব্যবহার করার জন্য সরাসরি ট্রাফিকের জন্য।

ব্লুটুথ কম শক্তি

Android 4.3 কেন্দ্রীয় ভূমিকায় Bluetooth Low Energy ( Bluetooth LE ) এর জন্য প্ল্যাটফর্ম সমর্থন চালু করেছে। Android 5.0 এ, একটি Android ডিভাইস এখন একটি Bluetooth LE পেরিফেরাল ডিভাইস হিসাবে কাজ করতে পারে। অ্যাপ্লিকেশানগুলি এই ক্ষমতা ব্যবহার করে কাছাকাছি ডিভাইসগুলিতে তাদের উপস্থিতি জানাতে পারে৷ উদাহরণস্বরূপ, আপনি এমন অ্যাপ্লিকেশন তৈরি করতে পারেন যা একটি ডিভাইসকে একটি পেডোমিটার বা স্বাস্থ্য মনিটর হিসাবে কাজ করতে দেয় এবং অন্য ব্লুটুথ LE ডিভাইসের সাথে এর ডেটা যোগাযোগ করতে পারে।

নতুন android.bluetooth.le APIগুলি আপনার অ্যাপগুলিকে বিজ্ঞাপন সম্প্রচার করতে, প্রতিক্রিয়াগুলির জন্য স্ক্যান করতে এবং কাছাকাছি ব্লুটুথ LE ডিভাইসগুলির সাথে সংযোগ তৈরি করতে সক্ষম করে৷ নতুন বিজ্ঞাপন এবং স্ক্যানিং বৈশিষ্ট্যগুলি ব্যবহার করতে, আপনার ম্যানিফেস্টে BLUETOOTH_ADMIN অনুমতি যোগ করুন৷ যখন ব্যবহারকারীরা প্লে স্টোর থেকে আপনার অ্যাপ আপডেট বা ডাউনলোড করেন, তখন তাদের আপনার অ্যাপে নিম্নলিখিত অনুমতি দিতে বলা হয়: "ব্লুটুথ সংযোগের তথ্য: অ্যাপটিকে ব্লুটুথ নিয়ন্ত্রণ করতে দেয়, যার মধ্যে আশেপাশের ব্লুটুথ ডিভাইসে সম্প্রচার করা বা সে সম্পর্কে তথ্য পাওয়া যায়।"

Bluetooth LE বিজ্ঞাপন শুরু করতে যাতে অন্যান্য ডিভাইসগুলি আপনার অ্যাপটি আবিষ্কার করতে পারে, startAdvertising() এ কল করুন এবং AdvertiseCallback ক্লাসের বাস্তবায়নে পাস করুন। কলব্যাক অবজেক্ট বিজ্ঞাপন অপারেশনের সাফল্য বা ব্যর্থতার একটি রিপোর্ট পায়।

অ্যান্ড্রয়েড 5.0 ScanFilter ক্লাস প্রবর্তন করে যাতে আপনার অ্যাপটি শুধুমাত্র নির্দিষ্ট ধরনের ডিভাইসের জন্য স্ক্যান করতে পারে যাতে এটি আগ্রহী। ব্লুটুথ LE ডিভাইসগুলির জন্য স্ক্যান করা শুরু করতে, startScan() কল করুন এবং ফিল্টারগুলির একটি তালিকা পাস করুন। মেথড কলে, ব্লুটুথ LE বিজ্ঞাপন পাওয়া গেলে রিপোর্ট করার জন্য আপনাকে অবশ্যই ScanCallback একটি বাস্তবায়ন প্রদান করতে হবে।

NFC বর্ধিতকরণ

Android 5.0 NFC এর বৃহত্তর এবং আরও নমনীয় ব্যবহার সক্ষম করতে এই বর্ধনগুলি যোগ করে:

  • Android Beam এখন শেয়ার মেনুতে উপলব্ধ।
  • invokeBeam() কল করে ডেটা শেয়ার করতে আপনার অ্যাপ ব্যবহারকারীর ডিভাইসে Android Beam চালু করতে পারে। এটি ডেটা স্থানান্তর সম্পূর্ণ করতে অন্য NFC-সক্ষম ডিভাইসের বিরুদ্ধে ডিভাইসটিকে ম্যানুয়ালি ট্যাপ করার ব্যবহারকারীর প্রয়োজনীয়তা এড়ায়।
  • আপনি UTF-8 পাঠ্য ডেটা ধারণকারী একটি NDEF রেকর্ড তৈরি করতে নতুন createTextRecord() পদ্ধতি ব্যবহার করতে পারেন।
  • আপনি যদি একটি অর্থপ্রদানের অ্যাপ তৈরি করেন, তাহলে আপনার কাছে এখন registerAidsForService() কল করে গতিশীলভাবে একটি NFC অ্যাপ্লিকেশন আইডি (AID) নিবন্ধন করার ক্ষমতা রয়েছে৷ আপনি পছন্দের কার্ড ইমুলেশন পরিষেবা সেট করতে setPreferredService() ব্যবহার করতে পারেন যা একটি নির্দিষ্ট কার্যকলাপ অগ্রভাগে থাকলে ব্যবহার করা উচিত।

প্রজেক্ট ভোল্টা

নতুন বৈশিষ্ট্যগুলি ছাড়াও, অ্যান্ড্রয়েড 5.0 ব্যাটারি লাইফের উন্নতির উপর জোর দেয়৷ আপনার অ্যাপের পাওয়ার খরচ বুঝতে এবং অপ্টিমাইজ করতে নতুন API এবং টুল ব্যবহার করুন।

কাজের সময় নির্ধারণ

Android 5.0 একটি নতুন JobScheduler API প্রদান করে যা আপনাকে পরবর্তী সময়ে বা নির্দিষ্ট পরিস্থিতিতে (যেমন যখন ডিভাইসটি চার্জ করা হয়) অসিঙ্ক্রোনাসভাবে চালানোর জন্য সিস্টেমের জন্য কাজগুলি সংজ্ঞায়িত করে ব্যাটারি লাইফ অপ্টিমাইজ করতে দেয়৷ কাজের সময়সূচী এই ধরনের পরিস্থিতিতে দরকারী:

  • অ্যাপটিতে অ-ব্যবহারকারী-মুখী কাজ রয়েছে যা আপনি পিছিয়ে দিতে পারেন।
  • অ্যাপটিতে এমন কাজ আছে যা আপনি করতে পছন্দ করেন যখন ইউনিটটি প্লাগ ইন করা থাকে।
  • অ্যাপটির একটি টাস্ক রয়েছে যার জন্য নেটওয়ার্ক অ্যাক্সেস বা একটি Wi-Fi সংযোগ প্রয়োজন৷
  • অ্যাপটিতে অনেকগুলি কাজ রয়েছে যা আপনি নিয়মিত সময়সূচীতে ব্যাচ হিসাবে চালাতে চান।

কাজের একটি ইউনিট একটি JobInfo অবজেক্ট দ্বারা আবদ্ধ করা হয়। এই বস্তুটি সময় নির্ধারণের মানদণ্ড নির্দিষ্ট করে।

নির্ধারিত কাজটি কীভাবে চালানো উচিত তা কনফিগার করতে JobInfo.Builder ক্লাস ব্যবহার করুন। আপনি নির্দিষ্ট অবস্থার অধীনে কাজটি চালানোর জন্য নির্ধারিত করতে পারেন, যেমন:

  • ডিভাইসটি চার্জ হওয়ার সময় শুরু করুন
  • ডিভাইসটি যখন মিটারবিহীন নেটওয়ার্কের সাথে সংযুক্ত থাকে তখন শুরু করুন৷
  • ডিভাইসটি নিষ্ক্রিয় থাকলে শুরু করুন
  • একটি নির্দিষ্ট সময়সীমার আগে বা ন্যূনতম বিলম্বের সাথে শেষ করুন

উদাহরণস্বরূপ, একটি আনমিটারড নেটওয়ার্কে আপনার টাস্ক চালানোর জন্য আপনি এইরকম কোড যোগ করতে পারেন:

কোটলিন

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

জাভা

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

যদি ডিভাইসটির স্থিতিশীল শক্তি থাকে (অর্থাৎ, এটি 2 মিনিটের বেশি সময় ধরে প্লাগ ইন করা থাকে এবং ব্যাটারি একটি স্বাস্থ্যকর স্তরে থাকে), সিস্টেমটি যে কোনও নির্ধারিত কাজ চালাবে যা চালানোর জন্য প্রস্তুত, এমনকি যদি কাজের সময়সীমা না থাকে মেয়াদ শেষ

কিভাবে JobScheduler API ব্যবহার করবেন তার একটি উদাহরণ দেখতে, এই রিলিজে JobSchedulerSample বাস্তবায়নের নমুনা পড়ুন।

ব্যাটারি ব্যবহারের জন্য ডেভেলপার টুল

নতুন dumpsys batterystats কমান্ড অনন্য ব্যবহারকারী আইডি (ইউআইডি) দ্বারা সংগঠিত একটি ডিভাইসে ব্যাটারি ব্যবহার সম্পর্কে আকর্ষণীয় পরিসংখ্যানগত ডেটা তৈরি করে। পরিসংখ্যান অন্তর্ভুক্ত:

  • ব্যাটারি সম্পর্কিত ইভেন্টের ইতিহাস
  • ডিভাইসের জন্য বিশ্বব্যাপী পরিসংখ্যান
  • UID এবং সিস্টেম উপাদান প্রতি আনুমানিক শক্তি ব্যবহার
  • প্রতি-অ্যাপ মোবাইল ms প্রতি প্যাকেট
  • সিস্টেম UID সমষ্টিগত পরিসংখ্যান
  • অ্যাপ ইউআইডি সমষ্টিগত পরিসংখ্যান

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

$ adb shell dumpsys batterystats --charged <package-name>

লগগুলি থেকে পাওয়ার-সম্পর্কিত ইভেন্টগুলির একটি HTML ভিজ্যুয়ালাইজেশন তৈরি করতে আপনি dumpsys কমান্ডের আউটপুটে ব্যাটারি হিস্টোরিয়ান টুল ব্যবহার করতে পারেন। এই তথ্যটি আপনার জন্য ব্যাটারি সংক্রান্ত যেকোনো সমস্যা বুঝতে এবং নির্ণয় করা সহজ করে তোলে।

কর্মক্ষেত্রে এবং শিক্ষায় Android

পরিচালিত ব্যবস্থা

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

পরিচালিত প্রভিশনিং প্রক্রিয়া শুরু করতে, একটি Intent ACTION_PROVISION_MANAGED_PROFILE পাঠান। কল সফল হলে, সিস্টেম onProfileProvisioningComplete() কলব্যাক ট্রিগার করে। তারপর আপনি এই পরিচালিত প্রোফাইল সক্ষম করতে setProfileEnabled() কল করতে পারেন।

ডিফল্টরূপে, পরিচালিত প্রোফাইলে অ্যাপগুলির একটি ছোট উপসেট সক্ষম করা হয়। আপনি enableSystemApp() এ কল করে পরিচালিত প্রোফাইলে অতিরিক্ত অ্যাপ ইনস্টল করতে পারেন।

আপনি যদি একটি লঞ্চার অ্যাপ তৈরি করে থাকেন, তাহলে আপনি বর্তমান ব্যবহারকারীর জন্য লঞ্চযোগ্য ক্রিয়াকলাপের একটি তালিকা পেতে নতুন LauncherApps ক্লাস ব্যবহার করতে পারেন এবং যে কোনো সংশ্লিষ্ট পরিচালিত প্রোফাইলের জন্য। আপনার লঞ্চার আইকনে অঙ্কনযোগ্য একটি কাজের ব্যাজ যুক্ত করে পরিচালিত অ্যাপগুলিকে দৃশ্যত বিশিষ্ট করে তুলতে পারে৷ ব্যাজ করা আইকনটি পুনরুদ্ধার করতে, getUserBadgedIcon() কল করুন।

নতুন কার্যকারিতা কীভাবে ব্যবহার করবেন তা দেখতে, এই রিলিজে BasicManagedProfile বাস্তবায়নের নমুনা পড়ুন।

ডিভাইস মালিক

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

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

স্ক্রিন পিনিং

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

স্ক্রিন পিনিং সক্রিয় করার দুটি উপায় রয়েছে:

  • ম্যানুয়ালি: ব্যবহারকারীরা সেটিংস > নিরাপত্তা > স্ক্রিন পিনিং- এ স্ক্রিন পিনিং সক্ষম করতে পারেন এবং সাম্প্রতিক স্ক্রিনে সবুজ পিন আইকনে স্পর্শ করে তারা যে কাজগুলি পিন করতে চান তা নির্বাচন করতে পারেন৷
  • প্রোগ্রামগতভাবে: প্রোগ্রামগতভাবে স্ক্রিন পিনিং সক্রিয় করতে, আপনার অ্যাপ থেকে startLockTask() কল করুন। অনুরোধকারী অ্যাপটি যদি ডিভাইসের মালিক না হয়, তাহলে ব্যবহারকারীকে নিশ্চিতকরণের জন্য অনুরোধ করা হয়। ব্যবহারকারীর নিশ্চিতকরণ পদক্ষেপ ছাড়াই অ্যাপগুলিকে পিনযোগ্য করতে সক্ষম করতে একটি ডিভাইসের মালিক অ্যাপ setLockTaskPackages() পদ্ধতিতে কল করতে পারে।

যখন টাস্ক লকিং সক্রিয় থাকে, নিম্নলিখিত আচরণটি ঘটে:

  • স্ট্যাটাস বার ফাঁকা, এবং ব্যবহারকারীর বিজ্ঞপ্তি এবং স্থিতি তথ্য লুকানো আছে।
  • হোম এবং সাম্প্রতিক অ্যাপ্লিকেশন বোতাম লুকানো আছে.
  • অন্যান্য অ্যাপ নতুন কার্যক্রম চালু করতে পারে না।
  • বর্তমান অ্যাপটি নতুন ক্রিয়াকলাপ শুরু করতে পারে, যতক্ষণ না এটি করা নতুন কাজ তৈরি করে না।
  • যখন কোনও ডিভাইসের মালিক দ্বারা স্ক্রিন পিনিং আহ্বান করা হয়, অ্যাপটি stopLockTask() কল না করা পর্যন্ত ব্যবহারকারী আপনার অ্যাপে লক থাকে।
  • যদি স্ক্রিন পিনিং অন্য অ্যাপ দ্বারা সক্রিয় করা হয় যা ডিভাইসের মালিক নয় বা সরাসরি ব্যবহারকারী দ্বারা, ব্যবহারকারী ব্যাক এবং রিসেন্ট বোতাম দুটি ধরে রেখে প্রস্থান করতে পারেন।

প্রিন্টিং ফ্রেমওয়ার্ক

পিডিএফকে বিটম্যাপ হিসেবে রেন্ডার করুন

আপনি এখন নতুন PdfRenderer ক্লাস ব্যবহার করে মুদ্রণের জন্য পিডিএফ ডকুমেন্ট পৃষ্ঠাগুলিকে বিটম্যাপ চিত্রগুলিতে রেন্ডার করতে পারেন। আপনাকে অবশ্যই একটি ParcelFileDescriptor নির্দিষ্ট করতে হবে যা অনুসন্ধানযোগ্য (অর্থাৎ, বিষয়বস্তু এলোমেলোভাবে অ্যাক্সেস করা যেতে পারে) যার উপর সিস্টেম মুদ্রণযোগ্য বিষয়বস্তু লেখে। আপনার অ্যাপ openPage() দিয়ে রেন্ডার করার জন্য একটি পৃষ্ঠা পেতে পারে, তারপর খোলা PdfRenderer.Page টিকে একটি বিটম্যাপে পরিণত করতে render() কল করুন৷ আপনি অতিরিক্ত প্যারামিটারও সেট করতে পারেন যদি আপনি শুধুমাত্র নথির একটি অংশকে একটি বিটম্যাপ ছবিতে রূপান্তর করতে চান (উদাহরণস্বরূপ, নথিতে জুম করার জন্য টাইল্ড রেন্ডারিং প্রয়োগ করতে)।

কিভাবে নতুন API ব্যবহার করবেন তার উদাহরণের জন্য, PdfRendererBasic নমুনা দেখুন।

সিস্টেম

অ্যাপ ব্যবহারের পরিসংখ্যান

আপনি এখন নতুন android.app.usage API দিয়ে একটি Android ডিভাইসে অ্যাপ ব্যবহারের ইতিহাস অ্যাক্সেস করতে পারবেন। এই এপিআই অপ্রচলিত getRecentTasks() পদ্ধতির চেয়ে আরও বিস্তারিত ব্যবহারের তথ্য প্রদান করে। এই API ব্যবহার করতে, আপনাকে প্রথমে আপনার ম্যানিফেস্টে "android.permission.PACKAGE_USAGE_STATS" অনুমতি ঘোষণা করতে হবে। ব্যবহারকারীকে অবশ্যই সেটিংস > নিরাপত্তা > ব্যবহারের অ্যাক্সেস সহ অ্যাপের মাধ্যমে এই অ্যাপের অ্যাক্সেস সক্ষম করতে হবে।

সিস্টেমটি প্রতিদিন, সাপ্তাহিক, মাসিক এবং বার্ষিক ব্যবধানে ডেটা একত্রিত করে প্রতি-অ্যাপ ভিত্তিতে ব্যবহারের ডেটা সংগ্রহ করে। সিস্টেম এই ডেটা রাখে সর্বোচ্চ সময়কাল নিম্নরূপ:

  • দৈনিক ডেটা: 7 দিন
  • সাপ্তাহিক তথ্য: 4 সপ্তাহ
  • মাসিক তথ্য: 6 মাস
  • বার্ষিক তথ্য: 2 বছর

প্রতিটি অ্যাপের জন্য, সিস্টেম নিম্নলিখিত ডেটা রেকর্ড করে:

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

পরীক্ষা এবং অ্যাক্সেসযোগ্যতা

পরীক্ষা এবং অ্যাক্সেসযোগ্যতার উন্নতি

Android 5.0 পরীক্ষা এবং অ্যাক্সেসযোগ্যতার জন্য নিম্নলিখিত সমর্থন যোগ করে:

  • নতুন getWindowAnimationFrameStats() এবং getWindowContentFrameStats() পদ্ধতি উইন্ডো অ্যানিমেশন এবং বিষয়বস্তুর জন্য ফ্রেম পরিসংখ্যান ক্যাপচার করে। এই পদ্ধতিগুলি আপনাকে একটি মসৃণ ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য একটি অ্যাপ যথেষ্ট রিফ্রেশ ফ্রিকোয়েন্সিতে ফ্রেম রেন্ডার করছে কিনা তা মূল্যায়ন করতে ইন্সট্রুমেন্টেশন পরীক্ষা লিখতে দেয়।
  • নতুন executeShellCommand() পদ্ধতি আপনাকে আপনার ইন্সট্রুমেন্টেশন পরীক্ষা থেকে শেল কমান্ড কার্যকর করতে দেয়। কমান্ড এক্সিকিউশনটি ডিভাইসের সাথে সংযুক্ত হোস্ট থেকে adb shell চালানোর অনুরূপ, যা আপনাকে শেল-ভিত্তিক সরঞ্জাম যেমন dumpsys , am , content এবং pm ব্যবহার করতে দেয়।
  • অ্যাক্সেসিবিলিটি পরিষেবা এবং পরীক্ষা সরঞ্জামগুলি যেগুলি অ্যাক্সেসিবিলিটি API ব্যবহার করে (যেমন UiAutomator ) এখন স্ক্রিনে উইন্ডোগুলির বৈশিষ্ট্যগুলি সম্পর্কে বিশদ তথ্য পুনরুদ্ধার করতে পারে যা দর্শনীয় ব্যবহারকারীরা ইন্টারঅ্যাক্ট করতে পারে৷ AccessibilityWindowInfo অবজেক্টের একটি তালিকা পুনরুদ্ধার করতে, নতুন getWindows() পদ্ধতিতে কল করুন।
  • নতুন AccessibilityNodeInfo.AccessibilityAction ক্লাস আপনাকে একটি AccessibilityNodeInfo এ সঞ্চালনের জন্য মানক বা কাস্টমাইজড অ্যাকশন সংজ্ঞায়িত করতে দেয়। নতুন AccessibilityNodeInfo.AccessibilityAction ক্লাসটি পূর্বে AccessibilityNodeInfo তে পাওয়া অ্যাকশন-সম্পর্কিত APIগুলিকে প্রতিস্থাপন করে।
  • Android 5.0 আপনার অ্যাপে টেক্সট-টু-স্পিচ সংশ্লেষণের উপর সূক্ষ্ম-শস্য নিয়ন্ত্রণ প্রদান করে। নতুন Voice ক্লাস আপনার অ্যাপটিকে নির্দিষ্ট লোকেল, গুণমান এবং লেটেন্সি রেটিং এবং টেক্সট-টু-স্পীচ ইঞ্জিন-নির্দিষ্ট প্যারামিটারের সাথে যুক্ত ভয়েস প্রোফাইল ব্যবহার করার অনুমতি দেয়।

আইএমই

ইনপুট ভাষার মধ্যে সহজে স্যুইচ করা

অ্যান্ড্রয়েড 5.0 থেকে শুরু করে, ব্যবহারকারীরা প্ল্যাটফর্ম দ্বারা সমর্থিত সমস্ত ইনপুট মেথড এডিটর (IME) এর মধ্যে আরও সহজে স্যুইচ করতে পারে৷ এই ধরনের সমস্ত IME-এর মাধ্যমে নির্ধারিত সুইচিং অ্যাকশন (সাধারণত নরম কীবোর্ডে একটি গ্লোব আইকন স্পর্শ করা) সম্পাদন করা। আচরণের এই পরিবর্তন shouldOfferSwitchingToNextInputMethod() পদ্ধতি দ্বারা প্রয়োগ করা হয়।

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

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

ম্যানিফেস্ট ঘোষণা

ঘোষণাযোগ্য প্রয়োজনীয় বৈশিষ্ট্য

নিম্নলিখিত মানগুলি এখন <uses-feature> উপাদানে সমর্থিত, যাতে আপনি নিশ্চিত করতে পারেন যে আপনার অ্যাপটি শুধুমাত্র সেই ডিভাইসগুলিতে ইনস্টল করা আছে যেগুলি আপনার অ্যাপের প্রয়োজনীয় বৈশিষ্ট্যগুলি প্রদান করে।

ব্যবহারকারীর অনুমতি

কিছু নির্দিষ্ট API অ্যাক্সেস করার জন্য আপনার অ্যাপের প্রয়োজনীয় অনুমতিগুলি ঘোষণা করতে নিম্নলিখিত অনুমতিটি এখন <uses-permission> উপাদানে সমর্থিত।

  • BIND_DREAM_SERVICE : API স্তর 21 এবং উচ্চতর টার্গেট করার সময়, এই অনুমতিটি একটি Daydream পরিষেবার দ্বারা প্রয়োজন হয়, এটি নিশ্চিত করতে যে শুধুমাত্র সিস্টেম এটিকে আবদ্ধ করতে পারে৷