Android 3.0 APIs

API স্তর: 11

বিকাশকারীদের জন্য, Android 3.0 প্ল্যাটফর্ম ( HONEYCOMB ) Android SDK-এর জন্য একটি ডাউনলোডযোগ্য উপাদান হিসাবে উপলব্ধ৷ ডাউনলোডযোগ্য প্ল্যাটফর্মটিতে একটি অ্যান্ড্রয়েড লাইব্রেরি এবং সিস্টেম ইমেজ, সেইসাথে এমুলেটর স্কিন এবং আরও অনেক কিছু রয়েছে। ডাউনলোডযোগ্য প্ল্যাটফর্মে কোনো বাহ্যিক লাইব্রেরি নেই।

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

API ওভারভিউ

নীচের বিভাগগুলি পূর্ববর্তী সংস্করণ থেকে নতুন বৈশিষ্ট্য এবং ফ্রেমওয়ার্ক API-এ পরিবর্তন সহ Android 3.0-এ বিকাশকারীদের জন্য নতুন কী রয়েছে তার একটি প্রযুক্তিগত ওভারভিউ প্রদান করে৷

টুকরা

একটি খণ্ড হল একটি নতুন কাঠামোর উপাদান যা আপনাকে একটি কার্যকলাপের স্বতন্ত্র উপাদানগুলিকে স্ব-অন্তর্ভুক্ত মডিউলগুলিতে আলাদা করতে দেয় যা তাদের নিজস্ব UI এবং জীবনচক্র সংজ্ঞায়িত করে। একটি ফ্র্যাগমেন্ট তৈরি করতে, আপনাকে অবশ্যই Fragment ক্লাস প্রসারিত করতে হবে এবং একটি Activity মতো বেশ কয়েকটি লাইফসাইকেল কলব্যাক পদ্ধতি প্রয়োগ করতে হবে। তারপরে আপনি একটি মাল্টি-পেন UI তৈরি করতে একটি একক কার্যকলাপে একাধিক খণ্ডকে একত্রিত করতে পারেন যেখানে প্রতিটি ফলক তার নিজস্ব জীবনচক্র এবং ব্যবহারকারীর ইনপুটগুলি পরিচালনা করে।

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

অতিরিক্তভাবে:

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

আপনার কার্যকলাপে খণ্ডগুলি পরিচালনা করতে, আপনাকে অবশ্যই FragmentManager ব্যবহার করতে হবে, যা খণ্ডগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য বেশ কয়েকটি API প্রদান করে, যেমন কার্যকলাপে টুকরোগুলি খুঁজে পাওয়া এবং টুকরোগুলিকে তাদের পূর্ববর্তী অবস্থা পুনরুদ্ধার করতে পিছনের স্ট্যাকের থেকে পপ করা৷

একটি লেনদেন সম্পাদন করতে, যেমন একটি খণ্ড যুক্ত বা সরাতে, আপনাকে অবশ্যই একটি FragmentTransaction তৈরি করতে হবে। তারপর আপনি add() remove() , বা replace() এর মত পদ্ধতিতে কল করতে পারেন। একবার আপনি লেনদেনের জন্য যে সমস্ত পরিবর্তনগুলি করতে চান তা প্রয়োগ করার পরে, আপনাকে অবশ্যই commit() কল করতে হবে এবং সিস্টেমটি কার্যকলাপে খণ্ড লেনদেন প্রয়োগ করবে৷

টুকরো ব্যবহার সম্পর্কে আরও তথ্যের জন্য, টুকরো ডকুমেন্টেশন পড়ুন। এপিআই ডেমো অ্যাপ্লিকেশনে বেশ কিছু নমুনাও পাওয়া যায়।

অ্যাকশন বার

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

  • অ্যাকশন বারে সরাসরি মেনু আইটেম যোগ করুন—"অ্যাকশন আইটেম" হিসেবে।

    মেনু আইটেমের জন্য আপনার XML ঘোষণায়, "ifRoom" এর মান সহ android:showAsAction বৈশিষ্ট্য অন্তর্ভুক্ত করুন। যখন পর্যাপ্ত জায়গা থাকে, তখন মেনু আইটেমটি সরাসরি অ্যাকশন বারে উপস্থিত হয়। অন্যথায়, আইটেমটি ওভারফ্লো মেনুতে স্থাপন করা হয়, যা অ্যাকশন বারের ডানদিকে মেনু আইকন দ্বারা প্রকাশিত হয়।

  • একটি অ্যাকশন আইটেমকে একটি উইজেট দিয়ে প্রতিস্থাপন করুন (যেমন একটি অনুসন্ধান বাক্স) - একটি "অ্যাকশন ভিউ" তৈরি করে।

    মেনু আইটেমের জন্য XML ঘোষণায়, একটি লেআউট সংস্থান সহ android:actionViewLayout বৈশিষ্ট্য বা একটি উইজেটের ক্লাস নামের সাথে android:actionViewClass বৈশিষ্ট্য যোগ করুন। (আপনাকে অবশ্যই android:showAsAction অ্যাট্রিবিউট ঘোষণা করতে হবে যাতে আইটেমটি অ্যাকশন বারে উপস্থিত হয়।) যদি অ্যাকশন বারে পর্যাপ্ত জায়গা না থাকে এবং আইটেমটি ওভারফ্লো মেনুতে উপস্থিত হয়, তবে এটি একটি নিয়মিত মেনু আইটেমের মতো আচরণ করে এবং দেখায় না উইজেট

  • অ্যাপ্লিকেশন লোগোতে একটি অ্যাকশন যোগ করুন এবং এটি একটি কাস্টম লোগো দিয়ে প্রতিস্থাপন করুন

    অ্যাপ্লিকেশন লোগো স্বয়ংক্রিয়ভাবে android.R.id.home আইডি বরাদ্দ করা হয়, যা স্পর্শ করা হলে সিস্টেম আপনার কার্যকলাপের onOptionsItemSelected() কলব্যাকে সরবরাহ করে। আপনার অ্যাপ্লিকেশনের "হোম" কার্যকলাপে যাওয়ার মতো একটি ক্রিয়া সম্পাদন করতে আপনার কলব্যাক পদ্ধতিতে কেবল এই আইডিতে প্রতিক্রিয়া জানান৷

    একটি লোগো দিয়ে আইকন প্রতিস্থাপন করতে, ম্যানিফেস্ট ফাইলে android:logo বৈশিষ্ট্য সহ আপনার অ্যাপ্লিকেশন লোগো নির্দিষ্ট করুন, তারপর আপনার কার্যকলাপে setDisplayUseLogoEnabled(true) কল করুন।

  • পিছন দিকে নেভিগেট করতে ব্রেডক্রাম্ব যোগ করুন টুকরোগুলির পিছনের স্ট্যাকের মাধ্যমে
  • টুকরো টুকরো করে নেভিগেট করতে ট্যাব বা একটি ড্রপ-ডাউন তালিকা যোগ করুন
  • থিম এবং ব্যাকগ্রাউন্ড সহ অ্যাকশন বার কাস্টমাইজ করুন

নতুন হলোগ্রাফিক থিম ব্যবহার করে এমন সমস্ত অ্যাপ্লিকেশনের জন্য অ্যাকশন বারটি মানক, যা আপনি যখন android:minSdkVersion বা android:targetSdkVersion কে "11" -এ সেট করেন তখনও এটি মানক৷

অ্যাকশন বার সম্পর্কে আরও তথ্যের জন্য, অ্যাকশন বার ডকুমেন্টেশন পড়ুন। এপিআই ডেমো অ্যাপ্লিকেশনে বেশ কিছু নমুনাও পাওয়া যায়।

সিস্টেম ক্লিপবোর্ড

অ্যাপ্লিকেশনগুলি এখন সিস্টেম-ব্যাপী ক্লিপবোর্ডে এবং থেকে ডেটা (শুধু পাঠ্যের বাইরে) কপি এবং পেস্ট করতে পারে। ক্লিপ করা ডেটা প্লেইন টেক্সট, একটি URI বা একটি উদ্দেশ্য হতে পারে।

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

ক্লিপবোর্ড ব্যবহার শুরু করতে, getSystemService(CLIPBOARD_SERVICE) কল করে গ্লোবাল ClipboardManager অবজেক্টটি পান।

ক্লিপবোর্ডে একটি আইটেম অনুলিপি করতে, আপনাকে একটি নতুন ClipData অবজেক্ট তৈরি করতে হবে, যা এক বা একাধিক ClipData.Item অবজেক্ট ধারণ করে, প্রতিটি একটি একক সত্তা বর্ণনা করে। শুধুমাত্র একটি ClipData.Item সমন্বিত একটি ClipData অবজেক্ট তৈরি করতে, আপনি সাহায্যকারী পদ্ধতিগুলির একটি ব্যবহার করতে পারেন, যেমন newPlainText() , newUri() , এবং newIntent() , যা প্রতিটি ClipData.Item এর সাথে প্রি-লোড করা একটি ClipData অবজেক্ট প্রদান করে। আপনি প্রদান.

ক্লিপবোর্ডে ClipData যোগ করতে, আপনার ClipboardManager এর উদাহরণের জন্য এটি setPrimaryClip() এ পাস করুন।

তারপর আপনি ClipboardManagergetPrimaryClip() কল করে ক্লিপবোর্ড থেকে একটি ফাইল পড়তে পারেন (এটি পেস্ট করার জন্য)। আপনার প্রাপ্ত ClipData পরিচালনা করা জটিল হতে পারে এবং এটি পেস্ট করার চেষ্টা করার আগে আপনি আসলে ক্লিপবোর্ডে ডেটা টাইপ পরিচালনা করতে পারেন তা নিশ্চিত হতে হবে।

ক্লিপবোর্ডে একবারে শুধুমাত্র এক টুকরো ক্লিপড ডেটা (একটি ClipData অবজেক্ট) থাকে, কিন্তু একটি ClipData একাধিক ClipData.Item ধারণ করতে পারে৷ আইটেমগুলি৷

আরও তথ্যের জন্য, কপি এবং পেস্ট ডকুমেন্টেশন পড়ুন। আপনি API ডেমো নমুনায় কপি এবং পেস্টের একটি সহজ বাস্তবায়ন এবং নোট প্যাড নমুনায় আরও সম্পূর্ণ বাস্তবায়ন দেখতে পারেন।

টেনে আনুন

নতুন APIগুলি আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেসে ড্র্যাগ এবং ড্রপ অপারেশনগুলিকে সহজ করে৷ একটি ড্র্যাগ অপারেশন হল এক স্থান থেকে অন্য স্থানে-একটি ClipData অবজেক্টে বহন করা কিছু ধরণের ডেটা স্থানান্তর। ড্র্যাগ অপারেশনের শুরু এবং শেষ বিন্দু হল একটি View , তাই এপিআই যেগুলি সরাসরি ড্র্যাগ এবং ড্রপ অপারেশন পরিচালনা করে তারা View ক্লাসে থাকে।

একটি ড্র্যাগ অ্যান্ড ড্রপ অপারেশনের একটি লাইফ সাইকেল থাকে যা বেশ কয়েকটি ড্র্যাগ অ্যাকশন দ্বারা সংজ্ঞায়িত করা হয়—প্রত্যেকটিকে একটি DragEvent অবজেক্ট দ্বারা সংজ্ঞায়িত করা হয়—যেমন ACTION_DRAG_STARTED , ACTION_DRAG_ENTERED , এবং ACTION_DROP ৷ ড্র্যাগ অপারেশনে অংশগ্রহণ করতে চায় এমন প্রতিটি ভিউ এই ক্রিয়াগুলির জন্য শুনতে পারে।

আপনার ক্রিয়াকলাপে বিষয়বস্তু টেনে আনা শুরু করতে, একটি View startDrag() কল করুন, একটি ClipData অবজেক্ট প্রদান করুন যা টেনে আনার জন্য ডেটা উপস্থাপন করে, একটি View.DragShadowBuilder যা "ছায়া" ব্যবহারকারীরা তাদের আঙুলের নিচে টেনে আনার সময় দেখতে পায়, এবং একটি Object যা ড্র্যাগ অবজেক্ট সম্পর্কে তথ্য শেয়ার করতে পারে এমন দৃশ্যের সাথে যা অবজেক্টটি পেতে পারে।

একটি View একটি ড্র্যাগ অবজেক্ট গ্রহণ করতে ("ড্রপ" গ্রহণ করুন), setOnDragListener() কল করে একটি OnDragListener এর সাথে ভিউটি নিবন্ধন করুন। যখন ভিউতে একটি ড্র্যাগ ইভেন্ট ঘটে, তখন সিস্টেমটি OnDragListener এর জন্য onDrag() কল করে, যা ড্র্যাগ অ্যাকশনের ধরণ বর্ণনা করে একটি DragEvent গ্রহণ করে (যেমন ACTION_DRAG_STARTED , ACTION_DRAG_ENTERED , এবং ACTION_DROP )। একটি টেনে নেওয়ার সময়, সিস্টেমটি বারবার onDrag() ড্র্যাগের নীচের দৃশ্যের জন্য, ড্র্যাগ ইভেন্টগুলির একটি স্ট্রীম সরবরাহ করার জন্য কল করে। গ্রহনকারী ভিউ DragEventgetAction() কল করে onDragEvent() এ বিতরণ করা ইভেন্টের ধরন সম্পর্কে জিজ্ঞাসা করতে পারে।

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

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

অ্যাপ উইজেট

অ্যান্ড্রয়েড 3.0 ব্যবহারকারীদের হোম স্ক্রিনে আরও ইন্টারেক্টিভ অ্যাপ উইজেটগুলির জন্য বেশ কয়েকটি নতুন উইজেট ক্লাস সমর্থন করে, যার মধ্যে রয়েছে: GridView , ListView , StackView , ViewFlipper এবং AdapterViewFlipper

আরও গুরুত্বপূর্ণভাবে, আপনি নতুন RemoteViewsService ব্যবহার করতে পারেন সংগ্রহের সাথে অ্যাপ উইজেট তৈরি করতে, GridView , ListView , এবং StackView এর মতো উইজেটগুলি ব্যবহার করে যা দূরবর্তী ডেটা দ্বারা ব্যাক করা হয়, যেমন একটি সামগ্রী প্রদানকারীর কাছ থেকে৷

AppWidgetProviderInfo ক্লাস (একটি <appwidget-provider> উপাদান সহ XML-এ সংজ্ঞায়িত) এছাড়াও দুটি নতুন ক্ষেত্র সমর্থন করে: autoAdvanceViewId এবং previewImageautoAdvanceViewId ক্ষেত্র আপনাকে অ্যাপ উইজেট সাবভিউয়ের ভিউ আইডি নির্দিষ্ট করতে দেয় যা অ্যাপ উইজেটের হোস্ট দ্বারা স্বয়ংক্রিয়ভাবে উন্নত হওয়া উচিত। previewImage ফিল্ড অ্যাপ উইজেটটি কেমন দেখাচ্ছে তার একটি প্রিভিউ নির্দিষ্ট করে এবং উইজেট পিকার থেকে ব্যবহারকারীকে দেখানো হয়। যদি এই ক্ষেত্রটি সরবরাহ করা না হয়, অ্যাপ উইজেটের আইকনটি পূর্বরূপের জন্য ব্যবহার করা হয়।

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

আপনি StackView অ্যাপ উইজেট এবং ওয়েদার লিস্ট উইজেট অ্যাপ্লিকেশনগুলিতে নতুন অ্যাপ উইজেট বৈশিষ্ট্যগুলির একটি বাস্তবায়ন দেখতে পারেন।

স্ট্যাটাস বার বিজ্ঞপ্তি

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

নতুন বৈশিষ্ট্য অন্তর্ভুক্ত:

  • setLargeIcon() ব্যবহার করে বিজ্ঞপ্তিতে একটি বড় আইকনের জন্য সমর্থন। এটি সাধারণত সোশ্যাল অ্যাপ্লিকেশানগুলির জন্য সেই ব্যক্তির যোগাযোগের ফটো দেখানোর জন্য যেটি বিজ্ঞপ্তির উত্স বা মিডিয়া অ্যাপগুলির জন্য একটি অ্যালবাম থাম্বনেল দেখানোর জন্য৷
  • setTicker() ব্যবহার করে স্ট্যাটাস বার টিকারে কাস্টম লেআউটের জন্য সমর্থন।
  • আরও ইন্টারেক্টিভ বিজ্ঞপ্তি উইজেটগুলির জন্য PendingIntent s সহ বোতামগুলি অন্তর্ভুক্ত করার জন্য কাস্টম বিজ্ঞপ্তি লেআউটগুলির জন্য সমর্থন। উদাহরণস্বরূপ, একটি বিজ্ঞপ্তি একটি কার্যকলাপ শুরু না করে সঙ্গীত প্লেব্যাক নিয়ন্ত্রণ করতে পারে।

বিষয়বস্তু লোডার

নতুন ফ্রেমওয়ার্ক API গুলি Loader ক্লাস ব্যবহার করে ডেটার অ্যাসিঙ্ক্রোনাস লোডিং সহজতর করে। কর্মী থ্রেড থেকে ডাটা ডাইনামিকভাবে লোড করার জন্য আপনি ভিউ এবং ফ্র্যাগমেন্টের মতো UI উপাদানগুলির সাথে এটি ব্যবহার করতে পারেন। CursorLoader সাবক্লাসটি বিশেষভাবে একটি ContentProvider দ্বারা সমর্থিত ডেটার জন্য আপনাকে এটি করতে সহায়তা করার জন্য ডিজাইন করা হয়েছে।

যখন একটি নতুন লোডার অনুরোধ করা হয় বা ডেটা পরিবর্তিত হয় তখন কলব্যাক পেতে আপনাকে যা করতে হবে তা হল LoaderCallbacks ইন্টারফেসটি প্রয়োগ করুন, তারপর আপনার কার্যকলাপ বা খণ্ডের জন্য লোডার শুরু করতে initLoader() কল করুন।

আরও তথ্যের জন্য, লোডার ডকুমেন্টেশন পড়ুন। আপনি LoaderCursor এবং LoaderThrottle নমুনায় লোডার ব্যবহার করে উদাহরণ কোড দেখতে পারেন।

ব্লুটুথ A2DP এবং হেডসেট APIs

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

ব্লুটুথ ক্লায়েন্ট সংযুক্ত বা সংযোগ বিচ্ছিন্ন হলে কলব্যাকগুলি গ্রহণ করার জন্য আপনি A2DP বা HEADSET প্রোফাইল ধ্রুবক এবং একটি BluetoothProfile.ServiceListener এর সাথে getProfileProxy() কল করে সংশ্লিষ্ট BluetoothProfile শুরু করতে পারেন৷

অ্যানিমেশন ফ্রেমওয়ার্ক

একটি সমস্ত নতুন নমনীয় অ্যানিমেশন ফ্রেমওয়ার্ক আপনাকে যেকোনো বস্তুর (দেখুন, অঙ্কনযোগ্য, খণ্ড, বস্তু, বা অন্য কিছু) এর স্বেচ্ছাচারী বৈশিষ্ট্যগুলিকে অ্যানিমেট করতে দেয়। এটি আপনাকে একটি অ্যানিমেশনের বিভিন্ন দিক সংজ্ঞায়িত করতে দেয়, যেমন:

  • সময়কাল
  • পুনরাবৃত্তি পরিমাণ এবং আচরণ
  • সময়ের ইন্টারপোলেশনের ধরন
  • অ্যানিমেটর একসাথে অ্যানিমেশন খেলতে সেট করে, ক্রমানুসারে, বা নির্দিষ্ট বিলম্বের পরে
  • ফ্রেম রিফ্রেশ বিলম্ব

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

দুটি অ্যানিমেটর রয়েছে যা আপনি একটি সম্পত্তির মান অ্যানিমেট করতে ব্যবহার করতে পারেন: ValueAnimator এবং ObjectAnimatorValueAnimator অ্যানিমেশন মান গণনা করে, কিন্তু নির্দিষ্ট বস্তু বা সম্পত্তি সম্পর্কে সচেতন নয় যা ফলস্বরূপ অ্যানিমেটেড হয়। এটি কেবল গণনাগুলি সম্পাদন করে এবং আপনাকে অবশ্যই আপডেটগুলি শুনতে হবে এবং আপনার নিজস্ব যুক্তি দিয়ে ডেটা প্রক্রিয়া করতে হবে। ObjectAnimator হল ValueAnimator এর একটি সাবক্লাস এবং এটি আপনাকে অবজেক্ট এবং প্রপার্টি অ্যানিমেট করার অনুমতি দেয় এবং এটি সমস্ত অ্যানিমেশন কাজ পরিচালনা করে। অর্থাৎ, আপনি ObjectAnimator অ্যানিমেট করার জন্য অবজেক্ট, সময়ের সাথে সাথে পরিবর্তন করার জন্য বস্তুর সম্পত্তি এবং সময়ের সাথে সম্পত্তিতে প্রয়োগ করার জন্য মানগুলির একটি সেট দিন, তারপর অ্যানিমেশন শুরু করুন।

অতিরিক্তভাবে, LayoutTransition ক্লাসটি আপনার কার্যকলাপ লেআউটে করা পরিবর্তনগুলির জন্য স্বয়ংক্রিয় রূপান্তর অ্যানিমেশন সক্ষম করে। লেআউটের অংশের জন্য ট্রানজিশন সক্ষম করতে, একটি LayoutTransition অবজেক্ট তৈরি করুন এবং setLayoutTransition() কল করে যেকোনো ViewGroup সেট করুন। যখনই গ্রুপে আইটেম যোগ করা বা সরানো হয় তখন এটি ডিফল্ট অ্যানিমেশনগুলিকে সঞ্চালিত করে। কাস্টম অ্যানিমেশন নির্দিষ্ট করতে, LayoutTransition setAnimator() কল করুন এবং একটি কাস্টম Animator প্রদান করুন, যেমন উপরে আলোচনা করা ValueAnimator বা ObjectAnimator

আরও তথ্যের জন্য, সম্পত্তি অ্যানিমেশন ডকুমেন্টেশন দেখুন। আপনি API ডেমো অ্যাপ্লিকেশনে অ্যানিমেশন API ব্যবহার করে বেশ কয়েকটি নমুনা দেখতে পারেন।

বর্ধিত UI ফ্রেমওয়ার্ক

  • ListView এবং GridView-এর জন্য একাধিক-পছন্দের নির্বাচন

    setChoiceMode() এর জন্য নতুন CHOICE_MODE_MULTIPLE_MODAL মোড ব্যবহারকারীদের একটি ListView বা GridView থেকে একাধিক আইটেম নির্বাচন করতে দেয়। অ্যাকশন বারের সাথে ব্যবহার করা হলে, ব্যবহারকারীরা একাধিক আইটেম নির্বাচন করতে পারেন এবং তারপর অ্যাকশন বারের বিকল্পগুলির তালিকা থেকে (যা বহু-পছন্দের অ্যাকশন মোডে রূপান্তরিত হয়েছে) থেকে সঞ্চালনের জন্য কাজটি নির্বাচন করতে পারেন।

    একাধিক-পছন্দের নির্বাচন সক্ষম করতে, setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL) কল করুন এবং setMultiChoiceModeListener() এর সাথে একটি MultiChoiceModeListener নিবন্ধন করুন৷

    যখন ব্যবহারকারী একটি আইটেম দীর্ঘ-প্রেস সঞ্চালন করে, অ্যাকশন বার বহু-পছন্দের অ্যাকশন মোডে স্যুইচ করে। onItemCheckedStateChanged() কল করে আইটেম নির্বাচন করা হলে সিস্টেমটি MultiChoiceModeListener অবহিত করে।

    একাধিক-পছন্দ নির্বাচনের উদাহরণের জন্য, তালিকা 15 দেখুন। API ডেমো নমুনা অ্যাপ্লিকেশনে java ক্লাস।

  • ভিউ রূপান্তর করতে নতুন API

    নতুন APIগুলি আপনাকে আপনার কার্যকলাপের বিন্যাসে ভিউগুলিতে 2D এবং 3D রূপান্তরগুলি সহজেই প্রয়োগ করতে দেয়৷ নতুন রূপান্তরগুলি বস্তুর বৈশিষ্ট্যগুলির একটি সেটের মাধ্যমে সম্ভব হয় যা দৃশ্যের বিন্যাস অবস্থান, অভিযোজন, স্বচ্ছতা এবং আরও অনেক কিছুকে সংজ্ঞায়িত করে।

    ভিউ বৈশিষ্ট্য সেট করার নতুন পদ্ধতিগুলির মধ্যে রয়েছে: setAlpha() , setBottom() , setLeft() , setRight() , setBottom() , setPivotX() , setPivotY() , setRotationX() , setRotationY() , setScaleX() , setScaleY() setScaleX() setScaleY() , setAlpha() এবং অন্যান্য।

    কিছু পদ্ধতিতে একটি সংশ্লিষ্ট XML বৈশিষ্ট্যও থাকে যা আপনি আপনার লেআউট ফাইলে নির্দিষ্ট করতে পারেন, একটি ডিফল্ট রূপান্তর প্রয়োগ করতে। উপলব্ধ বৈশিষ্ট্যগুলির মধ্যে রয়েছে: translationX , translationY , rotation , rotationX , rotationY , scaleX , scaleY , transformPivotX , transformPivotY , এবং alpha

    নতুন অ্যানিমেশন ফ্রেমওয়ার্ক (উপরে আলোচনা করা হয়েছে) এর সংমিশ্রণে এই নতুন ভিউ বৈশিষ্ট্যগুলির মধ্যে কয়েকটি ব্যবহার করে, আপনি সহজেই আপনার দৃশ্যগুলিতে কিছু অভিনব অ্যানিমেশন প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, y-অক্ষে একটি ভিউ ঘোরাতে, View , "rotationY" বৈশিষ্ট্য এবং শুরু এবং শেষ মানগুলির সাথে ObjectAnimator সরবরাহ করুন:

    কোটলিন

    ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply {
        duration = 2000
        start()
    }
    

    জাভা

    ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360);
    animator.setDuration(2000);
    animator.start();
    
  • নতুন হলোগ্রাফিক থিম

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

    যেকোন অ্যাপ্লিকেশন যা Android 3.0 প্ল্যাটফর্মকে লক্ষ্য করে — হয় android:minSdkVersion বা android:targetSdkVersion মানকে "11" -এ সেট করে — ডিফল্টরূপে হলোগ্রাফিক থিমকে উত্তরাধিকার সূত্রে ধারণ করে৷ যাইহোক, যদি আপনার অ্যাপ্লিকেশনটি তার নিজস্ব থিমও প্রয়োগ করে, তাহলে আপনার থিম হলোগ্রাফিক থিমকে ওভাররাইড করবে, যদি না আপনি হলোগ্রাফিক থিমের উত্তরাধিকারী হতে আপনার শৈলী আপডেট করেন।

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

  • নতুন উইজেট
    • AdapterViewAnimator

      একটি AdapterView এর জন্য বেস ক্লাস যা এর ভিউগুলির মধ্যে স্যুইচ করার সময় অ্যানিমেশনগুলি সম্পাদন করে৷

    • AdapterViewFlipper

      সাধারণ ViewAnimator যা এতে যোগ করা দুই বা ততোধিক ভিউয়ের মধ্যে অ্যানিমেট করে। একটি সময়ে শুধুমাত্র একটি শিশু দেখানো হয়. অনুরোধ করা হলে, এটি নিয়মিত বিরতিতে প্রতিটি শিশুর মধ্যে স্বয়ংক্রিয়ভাবে উল্টে যেতে পারে।

    • CalendarView

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

    • ListPopupWindow

      নিজে একটি হোস্ট ভিউতে অ্যাঙ্কর করে এবং পছন্দের একটি তালিকা প্রদর্শন করে, যেমন একটি EditText ভিউতে টাইপ করার সময় পরামর্শের তালিকার জন্য।

    • NumberPicker

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

    • PopupMenu

      একটি দৃশ্যে নোঙ্গর করা একটি মডেল পপআপ উইন্ডোতে একটি Menu প্রদর্শন করে। রুম থাকলে অ্যাঙ্কর ভিউয়ের নীচে পপআপ প্রদর্শিত হয়, বা না থাকলে উপরে। যদি আইএমই (সফ্ট কীবোর্ড) দৃশ্যমান হয়, ব্যবহারকারী মেনুতে স্পর্শ না করা পর্যন্ত পপআপটি আইএমইকে ওভারল্যাপ করে না।

    • SearchView

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

    • StackView

      একটি ভিউ যা এর বাচ্চাদের একটি 3D স্ট্যাকে প্রদর্শন করে এবং ব্যবহারকারীদের একটি rolodex এর মত ভিউ এর মাধ্যমে সোয়াইপ করতে দেয়।

গ্রাফিক্স

  • হার্ডওয়্যার ত্বরান্বিত 2D গ্রাফিক্স

    আপনি এখন আপনার ম্যানিফেস্ট এলিমেন্টের <application> এলিমেন্টে অথবা স্বতন্ত্র <activity> উপাদানের জন্য android:hardwareAccelerated="true" সেট করে আপনার অ্যাপ্লিকেশনের জন্য OpenGL রেন্ডারার সক্ষম করতে পারেন।

    এই পতাকা অ্যাপ্লিকেশনগুলিকে দ্রুত আঁকতে সাহায্য করে৷ এর ফলে মসৃণ অ্যানিমেশন, মসৃণ স্ক্রলিং এবং সামগ্রিকভাবে ভালো পারফরম্যান্স এবং ব্যবহারকারীর মিথস্ক্রিয়ায় প্রতিক্রিয়া দেখা যায়।

  • হার্ডওয়্যার এবং সফ্টওয়্যার স্তরগুলির জন্য সমর্থন দেখুন

    ডিফল্টরূপে, একটি View কোনো স্তর নির্দিষ্ট করা নেই। আপনি নির্দিষ্ট করতে পারেন যে ভিউটি হয় একটি হার্ডওয়্যার বা সফ্টওয়্যার স্তর দ্বারা ব্যাক করা হবে, যা LAYER_TYPE_HARDWARE এবং LAYER_TYPE_SOFTWARE মান দ্বারা নির্দিষ্ট করা হয়েছে, setLayerType() বা layerType বৈশিষ্ট্য ব্যবহার করে৷

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

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

    আরও তথ্যের জন্য, LAYER_TYPE_HARDWARE এবং LAYER_TYPE_SOFTWARE ডকুমেন্টেশন দেখুন৷

  • রেন্ডারস্ক্রিপ্ট 3D গ্রাফিক্স ইঞ্জিন

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

    আরও তথ্যের জন্য, রেন্ডারস্ক্রিপ্ট ডকুমেন্টেশন সহ 3D রেন্ডারিং এবং কম্পিউটেশন দেখুন।

মিডিয়া

  • টাইম ল্যাপস ভিডিও

    ক্যামকর্ডার এপিআই এখন টাইম ল্যাপস ভিডিও রেকর্ড করার ক্ষমতা সমর্থন করে। setCaptureRate() যে হারে ফ্রেম ক্যাপচার করা উচিত তা সেট করে।

  • ইমেজ স্ট্রীম জন্য টেক্সচার সমর্থন

    নতুন SurfaceTexture আপনাকে OpenGL ES টেক্সচার হিসাবে একটি ইমেজ স্ট্রিম ক্যাপচার করতে দেয়। আপনার Camera উদাহরণের জন্য setPreviewTexture() কল করে, আপনি SurfaceTexture নির্দিষ্ট করতে পারেন যার উপর ক্যামেরা থেকে ভিডিও প্লেব্যাক বা প্রিভিউ ফ্রেম আঁকতে হবে।

  • HTTP লাইভ স্ট্রিমিং

    একটি HTTP লাইভ স্ট্রিমিং সেশন শুরু করতে অ্যাপ্লিকেশনগুলি এখন মিডিয়া ফ্রেমওয়ার্কে একটি M3U প্লেলিস্ট URL পাস করতে পারে৷ মিডিয়া ফ্রেমওয়ার্ক অভিযোজিত বিট রেট সহ HTTP লাইভ স্ট্রিমিং স্পেসিফিকেশনের বেশিরভাগ সমর্থন করে। আরও তথ্যের জন্য সমর্থিত মিডিয়া ফরম্যাট নথি দেখুন।

  • EXIF ডেটা

    ExifInterface ফটো অ্যাপারচার, ISO, এবং এক্সপোজার সময়ের জন্য নতুন ক্ষেত্র অন্তর্ভুক্ত করে।

  • ক্যামকর্ডার প্রোফাইল

    নতুন hasProfile() পদ্ধতি এবং বেশ কয়েকটি ভিডিও মানের প্রোফাইল (যেমন QUALITY_1080P , QUALITY_720P , QUALITY_CIF , এবং অন্যান্য) আপনাকে ক্যামকর্ডারের গুণমানের বিকল্পগুলি নির্ধারণ করতে দেয়৷

  • ডিজিটাল মিডিয়া ফাইল স্থানান্তর

    প্ল্যাটফর্মটিতে USB-এর মাধ্যমে মিডিয়া/পিকচার ট্রান্সফার প্রোটোকল (MTP/PTP) এর জন্য অন্তর্নির্মিত সমর্থন রয়েছে, যা ব্যবহারকারীদের সহজেই ডিভাইস এবং হোস্ট কম্পিউটারে যেকোনো ধরনের মিডিয়া ফাইল স্থানান্তর করতে দেয়। বিকাশকারীরা এই সমর্থনে তৈরি করতে পারে, এমন অ্যাপ্লিকেশন তৈরি করতে পারে যা ব্যবহারকারীদের সমৃদ্ধ মিডিয়া ফাইলগুলি তৈরি বা পরিচালনা করতে দেয় যা তারা ডিভাইস জুড়ে স্থানান্তর বা ভাগ করতে চায়।

  • ডিজিটাল অধিকার ব্যবস্থাপনা (DRM)

    ডিজিটাল অধিকার যাচাই ও প্রয়োগের জন্য নতুন এক্সটেনসিবল ডিজিটাল রাইটস ম্যানেজমেন্ট (ডিআরএম) ফ্রেমওয়ার্ক। এটি দুটি স্থাপত্য স্তরে প্রয়োগ করা হয়েছে:

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

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

    ডিভাইস নির্মাতা, বিষয়বস্তুর মালিক এবং ইন্টারনেট ডিজিটাল মিডিয়া প্রদানকারীদের জন্য DRM ফ্রেমওয়ার্কের প্লাগইন API সামগ্রী সুরক্ষার নিরাপদ প্রয়োগের জন্য Android সিস্টেমে পছন্দের একটি DRM স্কিমের জন্য সমর্থন যোগ করার একটি উপায় প্রদান করে।

    প্রিভিউ রিলিজ ডিজিটাল অধিকার চেক এবং প্রয়োগ করার জন্য কোনো নেটিভ DRM প্লাগ-ইন প্রদান করে না। যাইহোক, ডিভাইস নির্মাতারা তাদের ডিভাইসের সাথে DRM প্লাগ-ইন পাঠাতে পারে।

    আপনি android.drm প্যাকেজে সমস্ত DRM API খুঁজে পেতে পারেন।

কীবোর্ড সমর্থন

  • কন্ট্রোল, মেটা, ক্যাপস লক, নুম লক এবং স্ক্রোল লক মডিফায়ারের জন্য সমর্থন। আরও তথ্যের জন্য, META_CTRL_ON এবং সম্পর্কিত ক্ষেত্রগুলি দেখুন৷
  • Escape, Home, End, Delete এবং অন্যদের মত কীগুলির সমর্থন সহ সম্পূর্ণ ডেস্কটপ-স্টাইলের কীবোর্ডগুলির জন্য সমর্থন। আপনি getKeyboardType() জিজ্ঞাসা করে এবং KeyCharacterMap.FULL চেক করে কী ইভেন্টগুলি সম্পূর্ণ কীবোর্ড থেকে আসছে কিনা তা নির্ধারণ করতে পারেন
  • TextView এখন Control+X, Control+C, Control+V, এবং Control+A কী-এর সমন্বয় ব্যবহার করে কীবোর্ড-ভিত্তিক কাট, কপি, পেস্ট এবং সিলেক্ট-অল সমর্থন করে। এটি PageUp/PageDown, Home/End এবং কীবোর্ড-ভিত্তিক পাঠ্য নির্বাচনকেও সমর্থন করে।
  • KeyEvent সঠিকভাবে এবং ধারাবাহিকভাবে কী মডিফায়ার স্থিতি পরীক্ষা করা সহজ করতে বেশ কয়েকটি নতুন পদ্ধতি যোগ করে। hasModifiers(int) , hasNoModifiers() , metaStateHasModifiers() , metaStateHasNoModifiers() দেখুন।
  • অ্যাপ্লিকেশানগুলি কাস্টম কীবোর্ড শর্টকাটগুলিকে Activity , Dialog সাবক্লাস করে বা onKeyShortcut() View এবং প্রয়োগ করতে পারে৷ ফ্রেমওয়ার্ক এই পদ্ধতিটিকে কল করে যখনই একটি কী কন্ট্রোল কী এর সাথে একত্রিত হয়। একটি বিকল্প মেনু তৈরি করার সময়, আপনি প্রতিটি <item> উপাদানের জন্য android:alphabeticShortcut বা android:numericShortcut বৈশিষ্ট্য (অথবা setShortcut() সহ) সেট করে কীবোর্ড শর্টকাট নিবন্ধন করতে পারেন।
  • Android 3.0-এ KeyCharacterMap.VIRTUAL_KEYBOARD আইডি সহ একটি নতুন "ভার্চুয়াল কীবোর্ড" ডিভাইস রয়েছে। ভার্চুয়াল কীবোর্ডে একটি ডেস্কটপ-শৈলী ইউএস কী মানচিত্র রয়েছে যা ইনপুট পরীক্ষার জন্য কী ইভেন্টগুলি সংশ্লেষণের জন্য দরকারী।

বিভক্ত স্পর্শ ঘটনা

পূর্বে, শুধুমাত্র একটি একক দৃশ্য একবারে স্পর্শ ইভেন্টগুলি গ্রহণ করতে পারে। Android 3.0 ভিউ এবং এমনকি উইন্ডোজ জুড়ে টাচ ইভেন্টগুলিকে বিভক্ত করার জন্য সমর্থন যোগ করে, তাই বিভিন্ন ভিউ একই সাথে স্পর্শ ইভেন্টগুলিকে গ্রহণ করতে পারে।

যখন কোনো অ্যাপ্লিকেশান Android 3.0 কে লক্ষ্য করে তখন স্প্লিট টাচ ইভেন্টগুলি ডিফল্টরূপে সক্রিয় থাকে৷ অর্থাৎ, যখন অ্যাপ্লিকেশনটি হয় android:minSdkVersion বা android:targetSdkVersion বৈশিষ্ট্যের মান "11" এ সেট করে।

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

  • ভিউ গ্রুপের জন্য android:splitMotionEvents অ্যাট্রিবিউট আপনাকে একটি লেআউটে শিশুদের ভিউয়ের মধ্যে ঘটে যাওয়া স্প্লিট টাচ ইভেন্টগুলিকে অক্ষম করতে দেয়। যেমন:
    <LinearLayout android:splitMotionEvents="false" ... >
        ...
    </LinearLayout>
    

    এইভাবে, রৈখিক বিন্যাসে চাইল্ড ভিউ স্পর্শ ইভেন্টগুলিকে বিভক্ত করতে পারে না - শুধুমাত্র একটি ভিউ একবারে স্পর্শ ইভেন্টগুলি গ্রহণ করতে পারে৷

  • android:windowEnableSplitTouch শৈলী বৈশিষ্ট্য আপনাকে কার্যকলাপ বা সম্পূর্ণ অ্যাপ্লিকেশনের জন্য একটি থিমে প্রয়োগ করে উইন্ডোজ জুড়ে বিভক্ত স্পর্শ ইভেন্টগুলি অক্ষম করতে দেয়৷ যেমন:
    <style name="NoSplitMotionEvents" parent="android:Theme.Holo">
        <item name="android:windowEnableSplitTouch">false</item>
        ...
    </style>
    

    যখন এই থিমটি একটি <activity> বা <application> এ প্রয়োগ করা হয়, শুধুমাত্র বর্তমান কার্যকলাপ উইন্ডোর মধ্যে স্পর্শ ইভেন্ট গ্রহণ করা হয়। উদাহরণস্বরূপ, উইন্ডোজ জুড়ে বিভক্ত স্পর্শ ইভেন্টগুলি নিষ্ক্রিয় করে, সিস্টেম বারটি কার্যকলাপের সাথে একই সময়ে স্পর্শ ইভেন্টগুলি গ্রহণ করতে পারে না। ক্রিয়াকলাপের ভিতরের দৃশ্যগুলি স্পর্শ ইভেন্টগুলিকে বিভক্ত করতে পারে কিনা তা প্রভাবিত করে না —ডিফল্টরূপে, কার্যকলাপটি এখনও দৃশ্যগুলিতে স্পর্শ ইভেন্টগুলিকে বিভক্ত করতে পারে৷

    একটি থিম তৈরি সম্পর্কে আরও তথ্যের জন্য, স্টাইল এবং থিম প্রয়োগ করা পড়ুন।

ওয়েবকিট

  • WebView দিয়ে গঠিত একটি খণ্ড তৈরি করতে নতুন WebViewFragment ক্লাস।
  • নতুন WebSettings পদ্ধতি:
    • setDisplayZoomControls() আপনাকে অন-স্ক্রীন জুম নিয়ন্ত্রণগুলি লুকানোর অনুমতি দেয় যখন এখনও ব্যবহারকারীকে আঙুলের অঙ্গভঙ্গি দিয়ে জুম করার অনুমতি দেয় ( setBuiltInZoomControls() অবশ্যই true সেট করতে হবে)।
    • নতুন WebSettings পদ্ধতি, setEnableSmoothTransition() , আপনাকে প্যানিং এবং জুম করার সময় মসৃণ রূপান্তর সক্ষম করতে দেয়। সক্রিয় করা হলে, WebView কর্মক্ষমতা বাড়ানোর জন্য একটি সমাধান বেছে নেবে (উদাহরণস্বরূপ, ওয়েবভিউ-এর বিষয়বস্তু পরিবর্তনের সময় আপডেট নাও হতে পারে)।
  • নতুন WebView পদ্ধতি:
    • onPause() কলব্যাক, WebView এর সাথে যুক্ত কোনো প্রক্রিয়াকরণ যখন লুকানো হয় তখন সেটিকে বিরাম দিতে। ওয়েবভিউ অগ্রভাগে না থাকলে এটি অপ্রয়োজনীয় CPU বা নেটওয়ার্ক ট্রাফিক কমাতে কার্যকর।
    • onResume() কলব্যাক, WebView এর সাথে যুক্ত প্রক্রিয়াকরণ পুনরায় শুরু করতে, যা onPause() সময় বিরাম দেওয়া হয়েছিল।
    • saveWebArchive() আপনাকে ডিভাইসে একটি ওয়েব সংরক্ষণাগার হিসাবে বর্তমান দৃশ্য সংরক্ষণ করতে দেয়।
    • showFindDialog() বর্তমান দৃশ্যে একটি পাঠ্য অনুসন্ধান শুরু করে।

ব্রাউজার

ব্রাউজার অ্যাপ্লিকেশন ওয়েব অ্যাপ্লিকেশন সমর্থন করতে নিম্নলিখিত বৈশিষ্ট্য যোগ করে:

  • মিডিয়া ক্যাপচার

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

    <input type="file" accept="image/*;capture=camera" />
    

    অথবা capture=camera প্যারামিটার বাদ দিয়ে, ব্যবহারকারী হয় ক্যামেরা দিয়ে একটি নতুন ছবি ক্যাপচার করতে বা ডিভাইস থেকে একটি নির্বাচন করতে পারেন (যেমন গ্যালারি অ্যাপ্লিকেশন থেকে)।

  • ডিভাইস ওরিয়েন্টেশন

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

    ডিভাইসের অভিযোজন x, y, এবং z অক্ষের সাথে ডিগ্রীতে প্রকাশ করা হয় এবং গতি ত্বরণ এবং ঘূর্ণন হার ডেটা দিয়ে প্রকাশ করা হয়। একটি ওয়েব পেজ ইভেন্ট টাইপ "deviceorientation" সহ window.addEventListener কে কল করে ওরিয়েন্টেশন ইভেন্টের জন্য নিবন্ধন করতে পারে এবং "devicemotion" ইভেন্ট টাইপ নিবন্ধন করে গতি ইভেন্টের জন্য নিবন্ধন করতে পারে।

  • CSS 3D রূপান্তর

    CSS 3D ট্রান্সফর্ম মডিউল স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত হিসাবে, ব্রাউজার CSS দ্বারা রেন্ডার করা উপাদানগুলিকে তিনটি মাত্রায় রূপান্তরিত করার অনুমতি দেয়।

JSON ইউটিলিটি

নতুন ক্লাস, JsonReader এবং JsonWriter , আপনাকে JSON স্ট্রীম পড়তে এবং লিখতে সাহায্য করে। নতুন এপিআইগুলি org.json ক্লাসের পরিপূরক, যা মেমরিতে একটি নথি ম্যানিপুলেট করে।

আপনি JsonReader এর কনস্ট্রাক্টর পদ্ধতিতে কল করে এবং JSON স্ট্রিং ফিড করে এমন InputStreamReader পাস করে একটি উদাহরণ তৈরি করতে পারেন। তারপর beginObject() কল করে একটি অবজেক্ট পড়া শুরু করুন, nextName() দিয়ে একটি কী নাম পড়ুন, nextString() এবং nextInt() এর মতো টাইপ সম্পর্কিত পদ্ধতি ব্যবহার করে মানটি পড়ুন এবং hasNext() সত্য হলে তা করা চালিয়ে যান। .

আপনি JsonWriter এর কনস্ট্রাক্টরকে কল করে এবং উপযুক্ত OutputStreamWriter পাস করে একটি উদাহরণ তৈরি করতে পারেন। তারপর JSON ডেটা লিখুন রিডারের মতো, একটি সম্পত্তির নাম যোগ করতে name() ব্যবহার করে এবং সংশ্লিষ্ট মান যোগ করার জন্য একটি উপযুক্ত value() পদ্ধতি ব্যবহার করুন।

এই ক্লাসগুলি ডিফল্টরূপে কঠোর। প্রতিটি শ্রেণীতে setLenient() পদ্ধতিটি তারা যা গ্রহণ করে তাতে তাদের আরও উদার হতে কনফিগার করে। org.json এর ডিফল্ট পার্সারের সাথেও এই নমনীয় পার্স মোডটি সামঞ্জস্যপূর্ণ।

নতুন বৈশিষ্ট্য ধ্রুবক

আপনার অ্যাপ্লিকেশন নির্ভর করে এমন হার্ডওয়্যার এবং সফ্টওয়্যার বৈশিষ্ট্যগুলির সেটের বহিরাগত সংস্থাগুলিকে (যেমন Google Play) জানাতে <uses-feature> manfest উপাদানটি ব্যবহার করা উচিত৷ এই রিলিজে, অ্যান্ড্রয়েড নিম্নলিখিত নতুন ধ্রুবক যোগ করে যা অ্যাপ্লিকেশনগুলি এই উপাদানটির সাথে ঘোষণা করতে পারে:

  • "android.hardware.faketouch"

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

    যদি আপনার অ্যাপ্লিকেশনের জন্য জটিল অঙ্গভঙ্গির প্রয়োজন না হয় এবং আপনি একটি অনুকরণ করা টাচস্ক্রিন সহ ডিভাইসগুলি থেকে আপনার অ্যাপ্লিকেশনটি ফিল্টার করতে না চান, তাহলে আপনাকে একটি <uses-feature> উপাদান সহ "android.hardware.faketouch" ঘোষণা করতে হবে। এইভাবে, আপনার অ্যাপ্লিকেশনটি সর্বাধিক সংখ্যক ডিভাইসের জন্য উপলব্ধ হবে, যেগুলি শুধুমাত্র একটি অনুকরণ করা টাচস্ক্রিন ইনপুট প্রদান করে।

    সমস্ত ডিভাইস যা একটি টাচস্ক্রিন অন্তর্ভুক্ত করে "android.hardware.faketouch" সমর্থন করে, কারণ টাচস্ক্রিন ক্ষমতাগুলি ফেকটচ দক্ষতার একটি সুপারসেট। সুতরাং, যদি না আপনার যদি আসলে কোনও টাচস্ক্রিনের প্রয়োজন হয় তবে আপনার ফেকটাচের জন্য একটি <uses-feature> উপাদান যুক্ত করা উচিত।

নতুন অনুমতি

  • "android.permission.BIND_REMOTEVIEWS"

    এটি অবশ্যই RemoteViewsService বাস্তবায়নের জন্য <service> ম্যানিফেস্ট উপাদানটিতে প্রয়োজনীয় অনুমতি হিসাবে ঘোষণা করতে হবে। উদাহরণস্বরূপ, কোনও অ্যাপ্লিকেশন উইজেট তৈরি করার সময় যা কোনও সংগ্রহের দৃশ্যকে পপুলেশন করতে RemoteViewsService ব্যবহার করে, ম্যানিফেস্ট এন্ট্রি এরকম দেখতে পারে:

    <service android:name=".widget.WidgetService"
        android:exported="false"
        android:permission="android.permission.BIND_REMOTEVIEWS" />
    

নতুন প্ল্যাটফর্ম প্রযুক্তি

  • স্টোরেজ
    • Ext4 ফাইল সিস্টেম সমর্থন অন বোর্ড ইএমএমসি স্টোরেজ সক্ষম করতে।
    • এমটিপি ডিভাইসগুলিকে সমর্থন করার জন্য ফাইল সিস্টেম ফিউজ করুন।
    • কীবোর্ড এবং ইউএসবি হাবগুলি সমর্থন করতে ইউএসবি হোস্ট মোড সমর্থন।
    • এমটিপি/পিটিপির জন্য সমর্থন
  • লিনাক্স কার্নেল
    • 2.6.36 এ আপগ্রেড করা হয়েছে
  • ডালভিক ভিএম
    • এসএমপির জন্য সমর্থন এবং অনুকূলিত করার জন্য নতুন কোড
    • জেআইটি অবকাঠামোতে বিভিন্ন উন্নতি
    • আবর্জনা সংগ্রাহকের উন্নতি:
      • এসএমপির জন্য সুরযুক্ত
      • বৃহত্তর হিপ আকারের জন্য সমর্থন
      • বিটম্যাপস এবং বাইট বাফারগুলির জন্য ইউনিফাইড হ্যান্ডলিং
  • ডালভিক কোর লাইব্রেরি
    • নতুন, এনআইওর অনেক দ্রুত বাস্তবায়ন (আধুনিক আই/ও লাইব্রেরি)
    • উন্নত ব্যতিক্রম বার্তা
    • সঠিকতা এবং পারফরম্যান্স ফিক্স জুড়ে

এপিআই পার্থক্য প্রতিবেদন

অ্যান্ড্রয়েড 3.0 (এপিআই স্তর 11) এর সমস্ত এপিআই পরিবর্তনের বিশদ দেখার জন্য, এপিআই পার্থক্য প্রতিবেদনটি দেখুন।

API স্তর

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

আপনার অ্যাপ্লিকেশনটিতে অ্যান্ড্রয়েড 3.0 এ প্রবর্তিত এপিআইগুলি ব্যবহার করতে আপনার অ্যান্ড্রয়েড 3.0 এসডিকে প্ল্যাটফর্মে সরবরাহ করা অ্যান্ড্রয়েড লাইব্রেরির বিরুদ্ধে অ্যাপ্লিকেশনটি সংকলন করা দরকার। আপনার প্রয়োজনের উপর নির্ভর করে, আপনাকে অ্যাপ্লিকেশনটির ম্যানিফেস্টে <uses-sdk> উপাদানটির জন্য একটি android:minSdkVersion="11" অ্যাট্রিবিউট যুক্ত করার প্রয়োজন হতে পারে। যদি আপনার অ্যাপ্লিকেশনটি কেবলমাত্র অ্যান্ড্রয়েড ২.৩ এবং উচ্চতর সময়ে চালানোর জন্য ডিজাইন করা হয়েছে, তবে বৈশিষ্ট্যটি ঘোষণা করে প্ল্যাটফর্মের পূর্ববর্তী সংস্করণগুলিতে অ্যাপ্লিকেশনটি ইনস্টল করা থেকে বিরত রাখে।

আরও তথ্যের জন্য, এপিআই স্তরটি কী পড়ুন?