Android 6.0 (M) ব্যবহারকারী ও অ্যাপ ডেভেলপারদের জন্য নতুন ফিচার অফার করে। এই ডকুমেন্টে সবচেয়ে গুরুত্বপূর্ণ API-এর প্রাথমিক তথ্য দেওয়া হয়েছে।
ডেভেলপ করা শুরু করুন
Android 6.0-এর জন্য অ্যাপ তৈরি শুরু করতে, আপনাকে প্রথমে Android SDK পেতে হবে। তারপরে Android 6.0 SDK প্ল্যাটফর্ম ও সিস্টেম ইমেজ ডাউনলোড করতে SDK Manager ব্যবহার করুন।
আপনার টার্গেট API লেভেল আপডেট করা
Android-এ চলে এমন ডিভাইসের জন্য আপনার অ্যাপ আরও ভালভাবে অপ্টিমাইজ করতে,
আপনার targetSdkVersion-কে
"23" হিসেবে সেট করুন, Android
সিস্টেম ইমেজে আপনার অ্যাপ ইনস্টল করুন, এটি পরীক্ষা করুন, তারপর
এই পরিবর্তন সহ আপডেট করা অ্যাপ প্রকাশ করুন।
আপনার minSdkVersion-এ কাজ করে না এমন API এক্সিকিউট করার আগে, আপনার কোডে এমন কন্ডিশন যোগ করে আপনি Android API ব্যবহার করতে পারেন যা সিস্টেম API লেভেল চেক করে এবং এর সাথে সাথে পুরনো
ভার্সনেও কাজ করে।
ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রাখা সম্পর্কে আরও জানতে, আলাদা
প্ল্যাটফর্ম ভার্সন সাপোর্ট করা নিবন্ধটি পড়ুন।
API লেভেল কীভাবে কাজ করে সেই সম্পর্কে আরও জানতে, API লেভেল কী? নিবন্ধটি পড়ুন।
ফিঙ্গারপ্রিন্ট যাচাইকরণ
এই রিলিজ আপনাকে নতুন API প্রদান করে যার মাধ্যমে আপনি সাপোর্ট করে এমন ডিভাইসে ব্যবহারকারীর ফিঙ্গারপ্রিন্ট স্ক্যান ব্যবহার করে তাকে যাচাই করতে পারবেন। Android Keystore সিস্টেম-এর সাথে একসাথে এইসব API ব্যবহার করুন।
ফিঙ্গারপ্রিন্ট স্ক্যানের মাধ্যমে ব্যবহারকারীকে যাচাই করতে, নতুন
FingerprintManager ক্লাসের একটি ইনস্ট্যান্স পান এবং
authenticate()
মেথড কল করুন। আপনার অ্যাপকে ফিঙ্গারপ্রিন্ট সেন্সর সহ মানানসই
ডিভাইসে চলতে হবে। আপনার অ্যাপে ফিঙ্গারপ্রিন্ট
যাচাইকরণ ফ্লোর জন্য আপনাকে অবশ্যই ইউজার ইন্টারফেস প্রয়োগ করতে হবে এবং আপনার UI-তে স্ট্যান্ডার্ড Android ফিঙ্গারপ্রিন্ট আইকন ব্যবহার করতে হবে।
Android ফিঙ্গারপ্রিন্ট আইকন (c_fp_40px.png)
বায়োমেট্রিক যাচাইকরণের স্যাম্পলে অন্তর্ভুক্ত করা আছে।
আপনি ফিঙ্গারপ্রিন্ট যাচাইকরণ ব্যবহার করে এমন একাধিক অ্যাপ ডেভেলপ করলে, মনে রাখবেন যে প্রতিটি অ্যাপকে অবশ্যই
ব্যবহারকারীর ফিঙ্গারপ্রিন্ট আলাদাভাবে যাচাই করতে হবে।
আপনার অ্যাপে এই ফিচার ব্যবহার করতে, প্রথমে আপনার মেনিফেস্টে
USE_FINGERPRINT অনুমতি যোগ করুন।
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
ফিঙ্গারপ্রিন্ট যাচাইকরণের অ্যাপ প্রয়োগ দেখতে, বায়োমেট্রিক যাচাইকরণের নমুনা দেখুন। অন্যান্য Android API-এর সাথে এইসব API কীভাবে ব্যবহার করতে পারেন তা ডেমোনস্ট্রেশনের মাধ্যমে জানতে, ফিঙ্গারপ্রিন্ট ও পেমেন্ট API ভিডিওটি দেখুন।
আপনি এই ফিচার পরীক্ষা করে দেখলে, এইসব ধাপ অনুসরণ করুন:
- আপনি এটি না করে থাকলে, Android SDK টুলস রিভিশন 24.3 ইনস্টল করুন।
- সেটিংস > নিরাপত্তা > ফিঙ্গারপ্রিন্ট বিকল্পে গিয়ে এমুলেটরে নতুন ফিঙ্গারপ্রিন্ট এনরোল করুন, তারপর এনরোলমেন্ট সংক্রান্ত নির্দেশাবলী অনুসরণ করুন।
- নিচের কমান্ড ব্যবহার করে ফিঙ্গারপ্রিন্ট টাচ ইভেন্ট এমুলেট করতে
এমুলেটর ব্যবহার করুন। লকস্ক্রিনে বা আপনার অ্যাপে ফিঙ্গারপ্রিন্ট টাচ ইভেন্ট এমুলেট করতে একই কমান্ড ব্যবহার করুন।
adb -e emu finger touch <finger_id>
Windows-এ, আপনাকে
telnet 127.0.0.1 <emulator-id>চালানোর পরেfinger touch <finger_id>চালাতে হতে পারে।
ক্রেডেনশিয়াল কনফার্ম করা
ব্যবহারকারী কতদিন আগে তার ডিভাইস আনলক করেছেন তার ভিত্তিতে আপনার অ্যাপ ব্যবহারকারীদের পরিচয় যাচাই করতে পারে। এই ফিচার ব্যবহারকারীদের অ্যাপ-নির্দিষ্ট অতিরিক্ত পাসওয়ার্ড মনে রাখার ঝামেলা থেকে মুক্তি দেয় এবং আপনাকে নিজের যাচাইকরণ ইউজার ইন্টারফেস প্রয়োগ করার প্রয়োজন হয় না। আপনার অ্যাপকে ব্যবহারকারীর পরিচয় যাচাইকরণের জন্য পাবলিক বা সিক্রেট কী প্রয়োগের সাথে এই ফিচার ব্যবহার করতে হবে।
কোনও ব্যবহারকারী সফলভাবে
প্রমাণিত হওয়ার পরে একই কী আবার ব্যবহার করার জন্য টাইম-আউট সময়সীমা সেট করতে, আপনি KeyGenerator বা
KeyPairGenerator সেট-আপ করার সময় নতুন
setUserAuthenticationValidityDurationSeconds()
মেথড কল করুন।
অতিরিক্ত বার আবার যাচাইকরণ ডায়ালগ দেখানো এড়িয়ে চলুন -- আপনার অ্যাপকে প্রথমে
ক্রিপ্টোগ্রাফিক অবজেক্ট ব্যবহার করার চেষ্টা করতে হবে এবং টাইম-আউট শেষ হয়ে গেলে, আপনার অ্যাপের মধ্যে ব্যবহারকারীকে আবার যাচাই করার জন্য
createConfirmDeviceCredentialIntent()
পদ্ধতি ব্যবহার করতে হবে।
অ্যাপ লিঙ্ক করা
এই রিলিজ আরও শক্তিশালী অ্যাপ লিঙ্কিং প্রদান করে Android-এর ইনটেন্ট সিস্টেমকে উন্নত করে। এই ফিচারের সাহায্যে আপনি নিজের মালিকানাধীন ওয়েব ডোমেনের সাথে কোনও অ্যাপকে যুক্ত করতে পারবেন। এই অ্যাসোসিয়েশনের উপর ভিত্তি করে, প্ল্যাটফর্ম কোনও নির্দিষ্ট ওয়েব লিঙ্ক ম্যানেজ করার জন্য ব্যবহার করার ডিফল্ট অ্যাপ নির্ধারণ করতে এবং ব্যবহারকারীদের অ্যাপ বেছে নেওয়ার জন্য প্রম্পট করা এড়িয়ে যেতে পারে। এই ফিচার কীভাবে প্রয়োগ করতে হয় তা জানতে, অ্যাপ লিঙ্ক ম্যানেজ করা দেখুন।
অ্যাপের জন্য অটোমেটিক ব্যাক-আপ
সিস্টেম এখন অ্যাপের জন্য অটোমেটিক সম্পূর্ণ ডেটা ব্যাক-আপ ও রিস্টোর করে। এই আচরণ চালু করতে আপনার অ্যাপকে অবশ্যই Android 6.0 (API লেভেল 23)-কে টার্গেট করতে হবে; আপনাকে কোনও অতিরিক্ত কোড যোগ করতে হবে না। ব্যবহারকারী তার Google অ্যাকাউন্ট মুছে দিলে, তার ব্যাক-আপ ডেটাও মুছে যায়। এই ফিচার কীভাবে কাজ করে এবং ফাইল সিস্টেমে কী ব্যাক-আপ নেওয়া হবে তা কীভাবে কনফিগার করতে হয় তা জানতে, অ্যাপের জন্য অটোমেটিক ব্যাক-আপ কনফিগার করা দেখুন।
ডাইরেক্ট শেয়ার
এই রিলিজ আপনাকে এমন API প্রদান করে যা ব্যবহারকারীদের জন্য শেয়ার করাকে সহজ ও দ্রুত করে তোলে। আপনি এখন সরাসরি শেয়ার করার টার্গেট নির্ধারণ করতে পারবেন যা আপনার অ্যাপে নির্দিষ্ট অ্যাক্টিভিটি লঞ্চ করে। এই সরাসরি শেয়ার করার টার্গেট শেয়ার মেনুর মাধ্যমে ব্যবহারকারীদের কাছে দেখানো হয়। এই ফিচারের সাহায্যে ব্যবহারকারীরা অন্যান্য অ্যাপের মধ্যে পরিচিতির মতো টার্গেটে কন্টেন্ট শেয়ার করতে পারেন। যেমন, ডাইরেক্ট শেয়ার টার্গেট অন্য সোশ্যাল নেটওয়ার্ক অ্যাপে অ্যাক্টিভিটি লঞ্চ করতে পারে, যা ব্যবহারকারীকে সেই অ্যাপে নির্দিষ্ট বন্ধু বা কমিউনিটির সাথে সরাসরি কন্টেন্ট শেয়ার করতে দেয়।
সরাসরি শেয়ার করার টার্গেট চালু করতে, আপনাকে অবশ্যই এমন একটি ক্লাস নির্ধারণ করতে হবে যা
ChooserTargetService ক্লাসকে এক্সটেন্ড করে। ম্যানিফেস্টে আপনার
পরিষেবা ঘোষণা করুন। ওই ঘোষণার মধ্যে, BIND_CHOOSER_TARGET_SERVICEঅনুমতি এবং
SERVICE_INTERFACE অ্যাকশন ব্যবহার করে একটি
ইনটেন্ট ফিল্টার নির্দিষ্ট করুন।
নিচের উদাহরণ থেকে আপনি জানতে পারবেন যে কীভাবে আপনার ম্যানিফেস্টে
ChooserTargetService ঘোষণা করতে হয়।
<service android:name=".ChooserTargetService" android:label="@string/service_name" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service>
আপনি
ChooserTargetService-এর কাছে প্রকাশ করতে চান এমন প্রতিটি অ্যাক্টিভিটির জন্য, আপনার অ্যাপ ম্যানিফেস্টে
"android.service.chooser.chooser_target_service" নামের একটি
<meta-data> এলিমেন্ট যোগ করুন।
<activity android:name=".MyShareActivity” android:label="@string/share_activity_label"> <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter> <meta-data android:name="android.service.chooser.chooser_target_service" android:value=".ChooserTargetService" /> </activity>
ভয়েস ইন্টার্যাকশন
এই রিলিজ একটি নতুন ভয়েস ইন্টার্যাকশন API প্রদান করে যা
ভয়েস অ্যাকশন-এর
সাথে একসাথে কাজ করে এবং আপনার অ্যাপে কথোপকথনমূলক ভয়েস অভিজ্ঞতা তৈরি করতে দেয়। ভয়েস অ্যাকশন আপনার অ্যাক্টিভিটি ট্রিগার করেছে কিনা তা নির্ধারণ করতে
isVoiceInteraction() মেথড কল করুন। যদি তাই হয়, তাহলে আপনার অ্যাপ ব্যবহারকারীর থেকে ভয়েস কনফার্মেশন পেতে, বিকল্পের তালিকা থেকে
বেছে নিতে এবং আরও অনেক কিছু করতে
VoiceInteractor ক্লাস ব্যবহার করতে পারে।
বেশিরভাগ ভয়েস ইন্ট্যার্যাকশন ব্যবহারকারীর ভয়েস অ্যাকশন থেকে শুরু হয়। এছাড়াও, ভয়েস ইন্ট্যার্যাকশন অ্যাক্টিভিটি
ব্যবহারকারীর ইনপুট ছাড়াই শুরু হতে পারে। যেমন, ভয়েস ইন্টার্যাকশনের মাধ্যমে লঞ্চ করা অন্য কোনও অ্যাপও ভয়েস ইন্টার্যাকশন লঞ্চ করার জন্য ইনটেন্ট পাঠাতে পারে। আপনার অ্যাক্টিভিটি
ব্যবহারকারীর ভয়েস কোয়েরি থেকে বা অন্য ভয়েস ইন্ট্যার্যাকশন অ্যাপ থেকে লঞ্চ করা হয়েছে কিনা তা নির্ধারণ করতে, isVoiceInteractionRoot() মেথড কল করুন। অন্য কোনও অ্যাপ আপনার
অ্যাক্টিভিটি লঞ্চ করলে, মেথড false রিটার্ন করে। আপনার অ্যাপ ব্যবহারকারীকে এই অ্যাকশনটি যে
তিনিই করতে চেয়েছেন তা কনফার্ম করতে প্রম্পট করতে পারে।
ভয়েস অ্যাকশন প্রয়োগ করা সম্পর্কে আরও জানতে, ভয়েস অ্যাকশন ডেভেলপার সাইট দেখুন।
Assist API
এই রিলিজের মাধ্যমে ব্যবহারকারীরা অ্যাসিস্ট্যান্টের সাহায্যে আপনার অ্যাপের সাথে ইন্টার্যাক্ট করার একটি নতুন উপায় পাবেন। এই ফিচার ব্যবহার করতে, ব্যবহারকারীকে অবশ্যই বর্তমান প্রসঙ্গ ব্যবহার করার জন্য অ্যাসিস্ট্যান্টকে অনুমতি দিতে হবে। চালু করা হয়ে গেলে, ব্যবহারকারী হোম বোতামটি কিছুক্ষণ প্রেস করে ধরে রেখে যেকোনও অ্যাপের মধ্যে অ্যাসিস্ট্যান্টকে ডেকে আনতে পারবেন।
আপনার অ্যাপ,
FLAG_SECURE ফ্ল্যাগ সেট করে অ্যাসিস্ট্যান্টের সাথে বর্তমান প্রসঙ্গ শেয়ার না করার বিকল্প বেছে নিতে পারে। প্ল্যাটফর্ম অ্যাসিস্ট্যান্টকে যে
তথ্য পাঠায় তার স্ট্যান্ডার্ড সেটের পাশাপাশি, আপনার অ্যাপ নতুন AssistContent ক্লাস ব্যবহার করে
অতিরিক্ত তথ্য শেয়ার করতে পারে।
আপনার অ্যাপ থেকে অতিরিক্ত প্রসঙ্গ সহায়ককে প্রদান করতে, এইসব ধাপ অনুসরণ করুন:
Application.OnProvideAssistDataListenerইন্টারফেস প্রয়োগ করুন।-
registerOnProvideAssistDataListener()ব্যবহার করে এই লিসনারকে রেজিস্টার করুন। - অ্যাক্টিভিটি-নির্দিষ্ট প্রাসঙ্গিক তথ্য প্রদান করতে, ওভাররাইড করুন
onProvideAssistData()কলব্যাক এবং ঐচ্ছিকভাবে, নতুনonProvideAssistContent()কলব্যাক।
অ্যাডপ্টেবেল স্টোরেজ ডিভাইস
এই রিলিজের মাধ্যমে, ব্যবহারকারীরা এসডি কার্ডের মতো এক্সটার্নাল স্টোরেজ ডিভাইস অ্যাডপ্ট করতে পারবেন। এক্সটার্নাল স্টোরেজ ডিভাইস
অ্যাডপ্ট করলে, ডিভাইসটি এনক্রিপ্ট ও ফর্ম্যাট করা হয় যাতে এটি ইন্টার্নাল স্টোরেজের মতো আচরণ করতে পারে। এই
ফিচার ব্যবহারকারীদের স্টোরেজ ডিভাইসের মধ্যে অ্যাপ ও সেইসব অ্যাপের ব্যক্তিগত ডেটা সরাতে দেয়। অ্যাপ সরানোর সময়, সিস্টেম ম্যানিফেস্টে উল্লেখ করা
android:installLocation
পছন্দকে সম্মান করে।
আপনার অ্যাপ যদি নিম্নলিখিত API বা ফিল্ড অ্যাক্সেস করে, তাহলে মনে রাখবেন যে সেগুলি যে ফাইল পাথ রিটার্ন করে তা ইন্টার্নাল ও এক্সটার্নাল স্টোরেজ ডিভাইসের মধ্যে অ্যাপটি সরানো হলে ডায়নামিক পরিবর্তন হবে। ফাইল পাথ তৈরি করার সময়, সবসময় ডায়নামিক পদ্ধতিতে এই API কল করার জন্য বিশেষভাবে সাজেস্ট করা হয়। হার্ডকোড করা ফাইল পাথ ব্যবহার করবেন না অথবা আগে তৈরি করা সম্পূর্ণ কোয়ালিফাই করা ফাইল পাথ সেভ করে রাখবেন না।
Contextপদ্ধতি:ApplicationInfoফিল্ড:
এই ফিচার ডিবাগ করতে, আপনি USB অন-দ্য-গো (OTG) কেবেলের মাধ্যমে Android ডিভাইসের সাথে কানেক্ট করা USB ড্রাইভের অ্যাডপশন চালু করতে পারেন, এর জন্য এই কমান্ডটি চালান:
$ adb shell sm set-force-adoptable true
বিজ্ঞপ্তি
এই রিলিজ বিজ্ঞপ্তির জন্য নিম্নলিখিত API পরিবর্তন যোগ করে:
- নতুন
INTERRUPTION_FILTER_ALARMSফিল্টার লেভেল যা নতুন শুধুমাত্র অ্যালার্ম বিরক্ত করবেন না মোডের সাথে সম্পর্কিত। - নতুন
CATEGORY_REMINDERক্যাটেগরি ভ্যালু যা ব্যবহারকারীর শিডিউল করা রিমাইন্ডারকে অন্যান্য ইভেন্ট (CATEGORY_EVENT) ও অ্যালার্ম (CATEGORY_ALARM) থেকে আলাদা করতে ব্যবহার করা হয়। - নতুন
Iconক্লাস যা আপনি নিজের বিজ্ঞপ্তিতে অ্যাটাচ করতে পারবেন এর মাধ্যমেsetSmallIcon()এবংsetLargeIcon()পদ্ধতি। একইভাবে,addAction()পদ্ধতিতে এখন drawable রিসোর্স আইডির পরিবর্তেIconঅবজেক্ট গ্রহণ করা হয়। - নতুন
getActiveNotifications()পদ্ধতি যা আপনার অ্যাপকে জানতে দেয় যে কোন বিজ্ঞপ্তি বর্তমানে চালু আছে।
ব্লুটুথ স্টাইলাস সাপোর্ট
এই রিলিজে ব্লুটুথ স্টাইলাস ব্যবহার করে ব্যবহারকারীর ইনপুটের জন্য উন্নত সহায়তা প্রদান করা হয়েছে। ব্যবহারকারীরা তাদের ফোন বা ট্যাবলেটের সাথে মানানসই ব্লুটুথ স্টাইলাস পেয়ার
ও কানেক্ট করতে পারবেন। কানেক্ট করা অবস্থায়, টাচ স্ক্রিন থেকে পাওয়া পজিশন
সংক্রান্ত তথ্য স্টাইলাস থেকে পাওয়া প্রেসার ও বোতাম সংক্রান্ত তথ্যের সাথে মিশিয়ে
প্রকাশের আরও বেশি রেঞ্জ প্রদান করা হয়, যা শুধুমাত্র টাচ স্ক্রিনের ক্ষেত্রে সম্ভব নয়। আপনার অ্যাপ স্টাইলাস বোতামে প্রেস করার
জন্য শুনতে এবং আপনার অ্যাক্টিভিটিতে
View.OnContextClickListener এবং
GestureDetector.OnContextClickListener অবজেক্ট রেজিস্টার করার মাধ্যমে সেকেন্ডারি অ্যাকশন পারফর্ম করতে পারে।
স্টাইলাস বোতামের
ইন্টার্যাকশন শনাক্ত করতে MotionEvent পদ্ধতি ও ধ্রুবক ব্যবহার করুন:
- ব্যবহারকারী যদি আপনার অ্যাপের স্ক্রিনে বোতাম সহ স্টাইলাস স্পর্শ করেন, তাহলে
getTooltype()পদ্ধতিTOOL_TYPE_STYLUSরিটার্ন করে। - Android 6.0 (API লেভেল 23) টার্গেট করা অ্যাপের জন্য, ব্যবহারকারী
প্রাইমারি স্টাইলাস বোতাম প্রেস করলে
getButtonState()পদ্ধতিBUTTON_STYLUS_PRIMARYরিটার্ন করে। স্টাইলাসে দ্বিতীয় বোতাম থাকলে, ব্যবহারকারী সেটি প্রেস করলে একই পদ্ধতিBUTTON_STYLUS_SECONDARYরিটার্ন করে। ব্যবহারকারী যদি দুটি বোতামই একসাথে প্রেস করেন, তাহলে মেথডটি দুটি ভ্যালু OR'ড একসাথে (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY) রিটার্ন করে। -
কম প্ল্যাটফর্ম ভার্সনকে টার্গেট করা অ্যাপের জন্য,
getButtonState()মেথডBUTTON_SECONDARY(প্রাইমারি স্টাইলাস বোতাম প্রেস করার জন্য),BUTTON_TERTIARY(সেকেন্ডারি স্টাইলাস বোতাম প্রেস করার জন্য) বা দু'টিই রিটার্ন করে।
উন্নত ব্লুটুথ লো এনার্জি স্ক্যানিং
আপনার অ্যাপ যদি ব্লুটুথ লো এনার্জি স্ক্যান পারফর্ম করে, তাহলে আপনি যে সিস্টেমকে কলব্যাক সম্পর্কে বিজ্ঞপ্তি দিতে চান তা নির্দিষ্ট করতে নতুন
setCallbackType()
মেথড ব্যবহার করুন। এটি প্রথমবার খুঁজে পেলে বা অনেক
দিন পরে সেট করা ScanFilter-এর সাথে ম্যাচ করা কোনও বিজ্ঞাপন প্যাকেট দেখলে বিজ্ঞপ্তি দেবে। স্ক্যান করার এই
পদ্ধতি আগের প্ল্যাটফর্ম ভার্সনে দেওয়া পদ্ধতির চেয়ে বেশি পাওয়ার-এফিশিয়েন্ট।
Hotspot 2.0 রিলিজ ১ সাপোর্ট
এই রিলিজ Nexus 6 ও Nexus 9 ডিভাইসে Hotspot 2.0 রিলিজ ১ স্পেসিফিকেশনের জন্য সহায়তা যোগ করে। আপনার অ্যাপে Hotspot 2.0 ক্রেডেনশিয়াল
প্রভিশন করতে, WifiEnterpriseConfig ক্লাসের নতুন পদ্ধতি ব্যবহার করুন, যেমন
setPlmn() এবং
setRealm()।
WifiConfiguration অবজেক্টে, আপনি
FQDN এবং
providerFriendlyName ফিল্ড সেট করতে পারবেন।
নতুন isPasspointNetwork() পদ্ধতি থেকে বোঝা যায় যে শনাক্ত করা
নেটওয়ার্কটি Hotspot 2.0 অ্যাক্সেস পয়েন্ট কিনা।
4K ডিসপ্লে মোড
এখন প্ল্যাটফর্ম, মানানসই হার্ডওয়্যারে ডিসপ্লে রেজোলিউশনকে 4K রেন্ডারিংয়ে
আপগ্রেড করার জন্য অ্যাপকে অনুরোধ করার অনুমতি দেয়। বর্তমান ফিজিক্যাল রেজোলিউশন কোয়েরি করতে, নতুন
Display.Mode API ব্যবহার করুন। UI যদি কম লজিক্যাল রেজোলিউশনে ড্র করা হয় এবং সেটি
আরও বড় ফিজিক্যাল রেজোলিউশনে আপস্কেল করা হয়, তাহলে মনে রাখবেন যে getPhysicalWidth() মেথড যে ফিজিক্যাল রেজোলিউশন
রিটার্ন করে সেটি getSize()-এর রিপোর্ট করা লজিক্যাল
রেজোলিউশন থেকে আলাদা হতে পারে।
আপনার অ্যাপ চলার সময়, অ্যাপের
উইন্ডোর preferredDisplayModeId প্রপার্টি সেট করে
সিস্টেমকে অ্যাপের ফিজিক্যাল রেজোলিউশন পরিবর্তন করার অনুরোধ করতে পারেন। 4K ডিসপ্লে রেজোলিউশনে পরিবর্তন করতে চাইলে এই ফিচারটি সহায়ক। 4K ডিসপ্লে
মোডে থাকাকালীন, UI আসল রেজোলিউশনে (যেমন, 1080p) রেন্ডার করা চালিয়ে যায় এবং 4K-তে
আপস্কেল করা হয়, কিন্তু SurfaceView অবজেক্ট নেটিভ রেজোলিউশনে কন্টেন্ট দেখাতে পারে।
থিম প্রয়োগযোগ্য ColorStateLists
Android 6.0 (API লেভেল 23) ভার্সনে চলে এমন ডিভাইসের জন্য
ColorStateList থিম অ্যাট্রিবিউট এখন কাজ করে। The
Resources.getColorStateList() এবং
Resources.getColor() পদ্ধতি
অবচিত করা হয়েছে। আপনি এইসব API কল করলে, পরিবর্তে নতুন
Context.getColorStateList() বা
Context.getColor() পদ্ধতি কল করুন। এইসব পদ্ধতি ContextCompat-এর মাধ্যমে v4 অ্যাপকম্প্যাট লাইব্রেরিতেও
উপলভ্য।
অডিও ফিচার
এই রিলিজে Android-এ অডিও প্রসেসিং সংক্রান্ত উন্নতি যোগ করা হয়েছে, যার মধ্যে এগুলি অন্তর্ভুক্ত:
- নতুন
android.media.midiAPI-এর সাথে MIDI প্রোটোকলের জন্য সহায়তা। MIDI ইভেন্ট পাঠানো ও পাওয়ার জন্য এইসব API ব্যবহার করুন। - ডিজিটাল অডিও ক্যাপচার ও প্লেব্যাক অবজেক্ট তৈরি করতে যথাক্রমে নতুন
AudioRecord.BuilderওAudioTrack.Builderক্লাস এবং সিস্টেম ডিফল্ট ওভাররাইড করতে অডিও সোর্স ও সিঙ্ক প্রপার্টি কনফিগার করুন। - অডিও ও ইনপুট ডিভাইস অ্যাসোসিয়েট করার জন্য API হুক। আপনার অ্যাপ যদি Android
TV-তে কানেক্ট করা গেম কন্ট্রোলার বা রিমোট কন্ট্রোল থেকে ভয়েস সার্চ শুরু করার
অনুমতি দেয়, তাহলে এটি বিশেষভাবে সহায়ক। ব্যবহারকারী সার্চ শুরু করলে সিস্টেম নতুন
onSearchRequested()কলব্যাক ইনভোক করে। ব্যবহারকারীর ইনপুট ডিভাইসে বিল্ট-ইন মাইক্রোফোন আছে কিনা তা নির্ধারণ করতে, সেই কলব্যাক থেকেInputDeviceঅবজেক্টটি রিট্রিভ করুন, তারপরে নতুনhasMicrophone()মেথড কল করুন। - নতুন
getDevices()পদ্ধতি যা আপনাকে সিস্টেমের সাথে বর্তমানে কানেক্ট করা সব অডিও ডিভাইসের একটি তালিকা রিট্রিভ করতে দেয়। এছাড়াও, কোনও অডিও ডিভাইস কানেক্ট বা ডিসকানেক্ট হলে, সিস্টেম আপনার অ্যাপকে বিজ্ঞপ্তি পাঠাক, এমনটি চাইলে আপনি একটিAudioDeviceCallbackঅবজেক্ট রেজিস্টার করতে পারেন।
ভিডিও ফিচার
এই রিলিজে ভিডিও প্রসেসিং API-তে নতুন সুবিধা যোগ করা হয়েছে, যার মধ্যে রয়েছে:
- নতুন
MediaSyncক্লাস যা অ্যাপ্লিকেশনকে সিঙ্ক্রোনাসভাবে অডিও ও ভিডিও স্ট্রিম রেন্ডার করতে সাহায্য করে। অডিও বাফারগুলি নন-ব্লকিং ফ্যাশনে জমা দেওয়া হয় এবং একটি কলব্যাকের মাধ্যমে ফেরত দেওয়া হয়। এছাড়াও, এটি ডায়নামিক প্লেব্যাক রেট কাজ করে। - নতুন
EVENT_SESSION_RECLAIMEDইভেন্ট, যা থেকে বোঝা যায় যে অ্যাপের খোলা সেশনটি রিসোর্স ম্যানেজার রিক্লেইম করেছে। আপনার অ্যাপ DRM সেশন ব্যবহার করলে, আপনাকে এই ইভেন্ট ম্যানেজ করতে হবে এবং রিক্লেইম করা সেশন ব্যবহার করা হচ্ছে না তা নিশ্চিত করতে হবে। - নতুন
ERROR_RECLAIMEDসমস্যার কোড, যা থেকে বোঝা যায় যে কোডেক ব্যবহার করা মিডিয়া রিসোর্স, রিসোর্স ম্যানেজার রিক্লেইম করেছে। এই ব্যতিক্রমের সাথে, কোডেককে অবশ্যই রিলিজ করতে হবে, কারণ এটি টার্মিনাল স্টেটে চলে গেছে। - সাপোর্ট করা কনকারেন্ট কোডেক ইনস্ট্যান্সের সর্বাধিক সংখ্যার
জন্য ইঙ্গিত পেতে নতুন
getMaxSupportedInstances()ইন্টারফেস। - দ্রুত বা ধীর গতির প্লেব্যাকের জন্য মিডিয়া প্লেব্যাক রেট সেট করার নতুন
setPlaybackParams()পদ্ধতি। এছাড়াও, এটি ভিডিওর সাথে একসাথে অডিও প্লেব্যাক অটোমেটিক স্ট্রেচ বা স্পিড আপ করে।
ক্যামেরার ফিচার
এই রিলিজে ক্যামেরার ফ্ল্যাশলাইট অ্যাক্সেস করা এবং ছবির ক্যামেরা রিপ্রসেসিংয়ের জন্য নিম্নলিখিত নতুন API অন্তর্ভুক্ত:
Flashlight API
ক্যামেরা ডিভাইসে ফ্ল্যাশ ইউনিট থাকলে, আপনি
setTorchMode()
মেথড কল করে ক্যামেরা ডিভাইস না খুলেই ফ্ল্যাশ ইউনিটের টর্চ মোড চালু বা বন্ধ করতে পারবেন। অ্যাপের
ফ্ল্যাশ ইউনিট বা ক্যামেরা ডিভাইসের উপর এক্সক্লুসিভ মালিকানা নেই। ক্যামেরা ডিভাইস উপলভ্য না হলে বা টর্চ চালু রাখা অন্যান্য ক্যামেরা
রিসোর্স উপলভ্য না হলে টর্চ মোড বন্ধ হয়ে যায় এবং উপলভ্য থাকে না। এছাড়াও, টর্চ মোড বন্ধ করতে অন্যান্য অ্যাপ
setTorchMode()
কল করতে পারে। টর্চ মোড চালু করা শেষ অ্যাপটি বন্ধ করা হলে, টর্চ
মোড বন্ধ হয়ে যায়।
আপনি
registerTorchCallback()
মেথড কল করে টর্চ মোডের স্ট্যাটাস সম্পর্কে বিজ্ঞপ্তি পেতে কলব্যাক রেজিস্টার করতে পারেন। কলব্যাক প্রথমবার রেজিস্টার করা হলে, ফ্ল্যাশ ইউনিট সহ বর্তমানে পরিচিত সব ক্যামেরা ডিভাইসের টর্চ মোড
স্ট্যাটাস সহ এটি অবিলম্বে কল করা হয়। টর্চ মোড চালু বা
বন্ধ করা হয়ে গেলে, onTorchModeChanged()
মেথডটি ইনভোক করা হয়।
Reprocessing API
YUV এবং ব্যক্তিগত
অস্বচ্ছ ফর্ম্যাট ইমেজ রিপ্রসেসিং সাপোর্ট করার জন্য Camera2 API-এর মেয়াদ বাড়ানো হয়েছে। এইসব রিপ্রসেসিং ক্ষমতা উপলভ্য আছে কিনা তা নির্ধারণ করতে,
getCameraCharacteristics() কল করুন এবং
REPROCESS_MAX_CAPTURE_STALL কী চেক করুন। কোনও
ডিভাইস রিপ্রসেসিং সাপোর্ট করলে, আপনি
createReprocessableCaptureSession() কল করে রিপ্রসেস করা যায় এমন ক্যামেরা ক্যাপচার সেশন তৈরি করতে পারেন
এবং ইনপুট বাফার রিপ্রসেসিংয়ের জন্য অনুরোধ তৈরি করতে পারেন।
ক্যামেরা
রিপ্রসেসিং ইনপুটের সাথে ইনপুট বাফার ফ্লো কানেক্ট করতে ImageWriter ক্লাস ব্যবহার করুন। খালি বাফার পেতে, এই প্রোগ্রামিং মডেল অনুসরণ করুন:
dequeueInputImage()মেথড কল করুন।- ইনপুট বাফারে ডেটা পূরণ করুন।
-
queueInputImage()মেথড কল করে ক্যামেরা বাফারে পাঠান।
আপনি যদি PRIVATE ছবির সাথে ImageWriter অবজেক্ট ব্যবহার করেন, তাহলে আপনার অ্যাপ সরাসরি ছবির
ডেটা অ্যাক্সেস করতে পারবে না। পরিবর্তে, কোনও বাফার কপি না করেই
queueInputImage() মেথড
কল করে PRIVATE ছবি সরাসরি
ImageWriter-এ পাস করুন।
ImageReader ক্লাস এখন
PRIVATE ফর্ম্যাট ইমেজ স্ট্রিম সাপোর্ট করে। এই সহায়তা আপনার অ্যাপকে ImageReader আউটপুট ইমেজের একটি বৃত্তাকার ইমেজ কিউ
মেইনটেন করতে, একটি বা একাধিক ইমেজ বেছে নিতে এবং ক্যামেরা রিপ্রসেসিংয়ের জন্য ImageWriter-এ পাঠাতে দেয়।
Android for Work ফিচার
এই রিলিজে Android for Work-এর জন্য নিম্নলিখিত নতুন API অন্তর্ভুক্ত রয়েছে:
- কোম্পানির মালিকানাধীন, একবার ব্যবহারযোগ্য ডিভাইসের জন্য উন্নত কন্ট্রোল: ডিভাইস মালিক
এখন কোম্পানির মালিকানাধীন, একবার ব্যবহারযোগ্য (COSU) ডিভাইস
আরও ভালভাবে ম্যানেজ করার জন্য নিম্নলিখিত সেটিংস কন্ট্রোল করতে পারবেন:
-
setKeyguardDisabled()পদ্ধতির মাধ্যমে কীগার্ড বন্ধ বা আবার চালু করুন। - স্ট্যাটাস বার (দ্রুত সেটিংস, বিজ্ঞপ্তি ও
নেভিগেশন সোয়াইপ-আপ জেসচার সহ যা Google Now লঞ্চ করে) বন্ধ বা আবার চালু করতে
setStatusBarDisabled()পদ্ধতি ব্যবহার করুন। UserManagerconstantDISALLOW_SAFE_BOOTব্যবহার করে নিরাপদ বুট বন্ধ বা আবার চালু করুন।- প্লাগ-ইন করা অবস্থায়
STAY_ON_WHILE_PLUGGED_INকনস্ট্যান্টের মাধ্যমে স্ক্রিন বন্ধ হওয়া আটকান।
-
- ডিভাইসের মালিকের দ্বারা অ্যাপের সাইলেন্ট ইনস্টল ও আনইনস্টল: ডিভাইসের মালিক এখন
Google Play for Work-এর থেকে আলাদাভাবে
PackageInstallerAPI ব্যবহার করে সাইলেন্ট ইনস্টল ও আনইনস্টল করতে পারবেন। আপনি এখন ডিভাইস মালিকের মাধ্যমে ডিভাইস প্রভিশন করতে পারবেন যা ব্যবহারকারীর ইন্টার্যাকশন ছাড়াই অ্যাপ ফেচ ও ইনস্টল করে। Google অ্যাকাউন্ট অ্যাক্টিভেট না করেই কিওস্ক বা এই ধরনের অন্যান্য ডিভাইসের ওয়ান-টাচ প্রভিশনিং চালু করার জন্য এই ফিচারটি কাজে লাগে। - সাইলেন্ট এন্টারপ্রাইজ সার্টিফিকেট অ্যাক্সেস: কোনও অ্যাপ
choosePrivateKeyAlias()কল করলে, ব্যবহারকারীকে সার্টিফিকেট বেছে নিতে প্রম্পট করার আগে, প্রোফাইল বা ডিভাইস মালিক এখনonChoosePrivateKeyAlias()মেথড কল করে অনুরোধকারী অ্যাপ্লিকেশনে সাইলেন্ট উপায়ে অ্যালিয়াস প্রদান করতে পারবেন। এই ফিচারের মাধ্যমে, ব্যবহারকারীর ইন্টার্যাকশন ছাড়াই আপনি ম্যানেজ করা অ্যাপকে সার্টিফিকেটে অ্যাক্সেস দিতে পারবেন। - সিস্টেম আপডেট অটোমেটিক গ্রহণ করা।
setSystemUpdatePolicy()-এর মাধ্যমে সিস্টেম আপডেট নীতি সেট করে, ডিভাইসের মালিক এখন অটোমেটিক সিস্টেম আপডেট গ্রহণ করতে পারবেন, যেমন কিয়স্ক ডিভাইসের ক্ষেত্রে অথবা আপডেট পিছিয়ে দিতে পারবেন এবং ব্যবহারকারীকে ৩০ দিন পর্যন্ত এটি ইনস্টল করা থেকে আটকাতে পারবেন। এছাড়াও, অ্যাডমিনিস্ট্রেটর এমন একটি দৈনিক সময়সীমা সেট করতে পারেন যার মধ্যে একটি আপডেট অবশ্যই নিতে হবে, যেমন, কিওস্ক ডিভাইস ব্যবহার না করার সময়। সিস্টেম আপডেট উপলভ্য হলে, ডিভাইস নীতি কন্ট্রোলার অ্যাপ কোনও সিস্টেম আপডেট নীতি সেট করেছে কিনা তা সিস্টেম চেক করে এবং সেই অনুযায়ী আচরণ করে। -
প্রতিনিধিত্ব করা সার্টিফিকেট ইনস্টলেশন: কোনও প্রোফাইল বা ডিভাইসের মালিক এখন কোনও
থার্ড-পার্টি অ্যাপকে এইসব
DevicePolicyManagerসার্টিফিকেট ম্যানেজমেন্ট API কল করার ক্ষমতা দিতে পারেন: - ডেটা ব্যবহার ট্র্যাক করা। প্রোফাইল বা ডিভাইসের মালিক এখন নতুন
NetworkStatsManagerপদ্ধতি ব্যবহার করে সেটিংস > ডেটা ব্যবহারের মধ্যে দৃশ্যমান ডেটা ব্যবহারের পরিসংখ্যানের জন্য কোয়েরি করতে পারবেন। ম্যানেজ করা প্রোফাইলের ডেটা কোয়েরি করার অনুমতি প্রোফাইলের মালিককে অটোমেটিক দেওয়া হয়, অন্যদিকে ম্যানেজ করা প্রাথমিক ব্যবহারকারীর ব্যবহার সংক্রান্ত ডেটাতে ডিভাইস মালিক অ্যাক্সেস পান। - রানটাইম অনুমতি ম্যানেজমেন্ট:
প্রোফাইল বা ডিভাইসের মালিক, অনুমতি সংক্রান্ত নীতি সেট করতে পারেন
setPermissionPolicy()ব্যবহার করে সব অ্যাপ্লিকেশনের সব রানটাইম অনুরোধের জন্য, যাতে ব্যবহারকারীকে অনুমতি দেওয়ার জন্য প্রম্পট করা যায় অথবা অটোমেটিক অনুমতি দেওয়া বা নীরবে অনুমতি বাতিল করা যায়। পরের নীতি সেট করা থাকলে, ব্যবহারকারী সেটিংস-এর মধ্যে অ্যাপের অনুমতি স্ক্রিনে প্রোফাইল বা ডিভাইস মালিকের করা বেছে নেওয়া বিকল্প পরিবর্তন করতে পারবেন না। - সেটিংসে VPN: VPN অ্যাপগুলি এখন সেটিংস > আরও > VPN বিকল্পে দেখা যাবে। এছাড়াও, VPN ব্যবহারের সাথে সম্পর্কিত বিজ্ঞপ্তিগুলি এখন সেই VPN কীভাবে কনফিগার করা হয়েছে তার উপর ভিত্তি করে নির্দিষ্ট করা হয়েছে। প্রোফাইলের মালিকের ক্ষেত্রে, ম্যানেজ করা প্রোফাইল, ব্যক্তিগত প্রোফাইল বা দুটির জন্যই VPN কনফিগার করা হয়েছে কিনা সেই অনুযায়ী বিজ্ঞপ্তি পাঠানো হয়। ডিভাইসের মালিকের জন্য, VPN পুরো ডিভাইসের জন্য কনফিগার করা আছে কিনা তার উপর নির্ভর করে বিজ্ঞপ্তি নির্দিষ্ট হয়।
- অফিসের স্ট্যাটাস সংক্রান্ত বিজ্ঞপ্তি: ম্যানেজ করা প্রোফাইল থেকে কোনও অ্যাপ ফোরগ্রাউন্ডে অ্যাক্টিভ থাকলে, এখন একটি স্ট্যাটাস বার ব্রিফকেস আইকন দেখা যায়। এছাড়াও, ম্যানেজ করা প্রোফাইলে কোনও অ্যাপের অ্যাক্টিভিটিতে সরাসরি ডিভাইস আনলক করা হলে, ব্যবহারকারীকে বিজ্ঞপ্তি দিয়ে একটি টোস্ট দেখানো হয় যে তিনি অফিস প্রোফাইলে আছেন।