Android 3.1 APIs

API স্তর: 12

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

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

API ওভারভিউ

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

USB API

প্ল্যাটফর্মে চলমান অ্যাপ্লিকেশনগুলির সাথে সংযুক্ত পেরিফেরালগুলিকে একীভূত করার জন্য Android 3.1 শক্তিশালী নতুন APIগুলি প্রবর্তন করে৷ এপিআইগুলি একটি USB (ইউনিভার্সাল সিরিয়াল বাস) স্ট্যাক এবং পরিষেবাগুলির উপর ভিত্তি করে যা প্ল্যাটফর্মের মধ্যে তৈরি করা হয়েছে, যার মধ্যে USB হোস্ট এবং ডিভাইস ইন্টারঅ্যাকশন উভয়ের জন্য সমর্থন রয়েছে। APIs ব্যবহার করে, বিকাশকারীরা এমন অ্যাপ্লিকেশন তৈরি করতে পারে যা USB-এর মাধ্যমে সংযুক্ত বিভিন্ন ধরনের ডিভাইস আবিষ্কার করতে, যোগাযোগ করতে এবং পরিচালনা করতে সক্ষম।

অ্যান্ড্রয়েড-চালিত ডিভাইস হোস্ট হিসাবে কাজ করছে নাকি বহিরাগত হার্ডওয়্যার হোস্ট হিসাবে কাজ করছে তার উপর ভিত্তি করে স্ট্যাক এবং API দুটি মৌলিক ধরণের USB হার্ডওয়্যারকে আলাদা করে:

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

উভয় প্রকারের জন্য — USB ডিভাইস এবং USB আনুষাঙ্গিক — প্ল্যাটফর্মের USB APIগুলি সংযুক্ত বা বিচ্ছিন্ন করার সময় অভিপ্রায় সম্প্রচারের মাধ্যমে আবিষ্কারকে সমর্থন করে, সেইসাথে স্ট্যান্ডার্ড ইন্টারফেস, এন্ডপয়েন্ট, এবং স্থানান্তর মোড (নিয়ন্ত্রণ, বাল্ক এবং ইন্টারাপ্ট)।

USB API গুলি android.hardware.usb প্যাকেজে উপলব্ধ। কেন্দ্রীয় শ্রেণী হল UsbManager , যা USB ডিভাইস এবং USB আনুষাঙ্গিক উভয়ের সাথে সনাক্তকরণ এবং যোগাযোগের জন্য সহায়ক পদ্ধতি প্রদান করে। অ্যাপ্লিকেশনগুলি UsbManager একটি উদাহরণ অর্জন করতে পারে এবং তারপরে সংযুক্ত ডিভাইস বা আনুষাঙ্গিকগুলির তালিকার জন্য অনুসন্ধান করতে পারে এবং তারপরে তাদের সাথে যোগাযোগ বা পরিচালনা করতে পারে। UsbManager একটি ইউএসবি ডিভাইস বা আনুষঙ্গিক সংযুক্ত বা বিচ্ছিন্ন হলে ঘোষণা করার জন্য সিস্টেম সম্প্রচার করে এমন অভিপ্রায় ক্রিয়াগুলিও ঘোষণা করে।

অন্যান্য ক্লাস অন্তর্ভুক্ত:

  • UsbDevice , একটি শ্রেণী যা একটি USB ডিভাইস হিসাবে সংযুক্ত বহিরাগত হার্ডওয়্যারের প্রতিনিধিত্ব করে (অ্যান্ড্রয়েড-চালিত ডিভাইস হোস্ট হিসাবে কাজ করে)।
  • UsbAccessory , USB হোস্ট হিসাবে সংযুক্ত বাহ্যিক হার্ডওয়্যারের প্রতিনিধিত্ব করে (এন্ড্রয়েড-চালিত ডিভাইসটি একটি USB ডিভাইস হিসাবে কাজ করে)।
  • UsbInterface এবং UsbEndpoint , যা একটি ডিভাইসের জন্য স্ট্যান্ডার্ড USB ইন্টারফেস এবং শেষ পয়েন্টগুলিতে অ্যাক্সেস প্রদান করে।
  • UsbDeviceConnection এবং UsbRequest , একটি USB ডিভাইসে বা থেকে, সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাসভাবে ডেটা এবং কন্ট্রোল বার্তা পাঠানো এবং গ্রহণ করার জন্য।
  • UsbConstants , যা শেষ পয়েন্টের ধরন, ডিভাইসের ক্লাস, ইত্যাদি ঘোষণা করার জন্য ধ্রুবক প্রদান করে।

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

উপরন্তু, বিকাশকারীরা Google Play-তে ফিল্টার করার অনুরোধ করতে পারে, যেমন তাদের অ্যাপ্লিকেশনগুলি ব্যবহারকারীদের কাছে উপলব্ধ নয় যাদের ডিভাইসগুলি উপযুক্ত USB সমর্থন প্রদান করে না। ফিল্টারিংয়ের অনুরোধ করতে, উপযুক্ত হিসাবে অ্যাপ্লিকেশন ম্যানিফেস্টে নীচের একটি বা উভয় উপাদান যোগ করুন:

  • যদি অ্যাপ্লিকেশনটি কেবলমাত্র USB হোস্ট মোড সমর্থন করে এমন ডিভাইসগুলিতে দৃশ্যমান হওয়া উচিত (USB ডিভাইসগুলির সংযোগ), এই উপাদানটি ঘোষণা করুন:

    <uses-feature android:name="android.hardware.usb.host" android:required="true">

  • যদি অ্যাপ্লিকেশনটি কেবলমাত্র USB আনুষাঙ্গিকগুলি সমর্থন করে এমন ডিভাইসগুলিতে দৃশ্যমান হওয়া উচিত (USB হোস্টগুলির সংযোগ), এই উপাদানটি ঘোষণা করুন:

    <uses-feature android:name="android.hardware.usb.accessory" android:required="true">

USB আনুষাঙ্গিকগুলির সাথে ইন্টারঅ্যাক্ট করে এমন অ্যাপ্লিকেশনগুলি কীভাবে বিকাশ করবেন সে সম্পর্কে সম্পূর্ণ তথ্যের জন্য, অনুগ্রহ করে বিকাশকারী ডকুমেন্টেশন দেখুন৷

ইউএসবি হোস্ট এপিআই ব্যবহার করে এমন নমুনা অ্যাপ্লিকেশনগুলি দেখতে, এডিবি টেস্ট এবং মিসাইল লঞ্চার দেখুন

MTP/PTP API

Android 3.1 একটি নতুন MTP API প্রকাশ করে যা অ্যাপ্লিকেশনগুলিকে সরাসরি সংযুক্ত ক্যামেরা এবং অন্যান্য PTP ডিভাইসগুলির সাথে যোগাযোগ করতে দেয়৷ নতুন API একটি অ্যাপ্লিকেশনের জন্য যখন ডিভাইসগুলি সংযুক্ত এবং সরানো হয় তখন বিজ্ঞপ্তিগুলি গ্রহণ করা, সেই ডিভাইসগুলিতে ফাইল এবং সঞ্চয়স্থান পরিচালনা করা এবং ফাইল এবং মেটাডেটা স্থানান্তর করা সহজ করে তোলে। MTP API MTP (মিডিয়া ট্রান্সফার প্রোটোকল) স্পেসিফিকেশনের PTP (পিকচার ট্রান্সফার প্রোটোকল) উপসেট প্রয়োগ করে।

MTP API android.mtp প্যাকেজে উপলব্ধ এবং এই ক্লাসগুলি প্রদান করে:

  • MtpDevice একটি MTP ডিভাইসকে এনক্যাপসুলেট করে যা USB হোস্ট বাসের সাথে সংযুক্ত থাকে। একটি অ্যাপ্লিকেশন এই ধরনের একটি বস্তুকে ইনস্ট্যান্টিয়েট করতে পারে এবং তারপরে এটির পদ্ধতিগুলি ব্যবহার করে ডিভাইস এবং এতে সঞ্চিত বস্তু সম্পর্কে তথ্য পেতে, সেইসাথে সংযোগ খোলার এবং ডেটা স্থানান্তর করতে পারে। কিছু পদ্ধতির মধ্যে রয়েছে:
    • getObjectHandles() ডিভাইসের সমস্ত বস্তুর জন্য হ্যান্ডেলগুলির একটি তালিকা প্রদান করে যা একটি নির্দিষ্ট বিন্যাস এবং পিতামাতার সাথে মেলে। একটি বস্তু সম্পর্কে তথ্য পেতে, একটি অ্যাপ্লিকেশন getObjectInfo() এ একটি হ্যান্ডেল পাস করতে পারে।
    • importFile() একটি অ্যাপ্লিকেশনকে বহিরাগত স্টোরেজে একটি ফাইলে একটি বস্তুর জন্য ডেটা অনুলিপি করতে দেয়। এই কলটি ডিভাইসের ডেটার আকার এবং গতির উপর নির্ভর করে নির্বিচারে সময়ের জন্য ব্লক করতে পারে, তাই একটি স্পিয়ারেট থ্রেড থেকে করা উচিত।
    • open() একটি অ্যাপ্লিকেশনকে একটি সংযুক্ত MTP/PTP ডিভাইস খুলতে দেয়।
    • getThumbnail() একটি বাইট অ্যারে হিসাবে অবজেক্টের থাম্বনেইল প্রদান করে।
  • MtpStorageInfo একটি MTP ডিভাইসে স্টোরেজ ইউনিট সম্পর্কে তথ্য ধারণ করে, MTP স্পেসিফিকেশনের 5.2.2 অনুচ্ছেদে বর্ণিত স্টোরেজ ইনফো ডেটাসেটের সাথে সম্পর্কিত। ক্লাসের পদ্ধতিগুলি একটি অ্যাপ্লিকেশনকে স্টোরেজ ইউনিটের বর্ণনার স্ট্রিং, খালি স্থান, সর্বাধিক স্টোরেজ ক্ষমতা, স্টোরেজ আইডি এবং ভলিউম শনাক্তকারী পেতে দেয়।
  • MtpDeviceInfo একটি MTP ডিভাইস সম্পর্কে তথ্য ধারণ করে যা MTP স্পেসিফিকেশনের 5.1.1 ধারায় বর্ণিত DeviceInfo ডেটাসেটের সাথে সম্পর্কিত। ক্লাসের পদ্ধতিগুলি অ্যাপ্লিকেশনগুলিকে একটি ডিভাইসের প্রস্তুতকারক, মডেল, সিরিয়াল নম্বর এবং সংস্করণ পেতে দেয়।
  • MtpObjectInfo একটি MTP ডিভাইসে সংরক্ষিত বস্তুর তথ্য ধারণ করে, MTP স্পেসিফিকেশনের 5.3.1 ধারায় বর্ণিত ObjectInfo ডেটাসেটের সাথে সম্পর্কিত। ক্লাসের পদ্ধতিগুলি অ্যাপ্লিকেশনগুলিকে একটি বস্তুর আকার, ডেটা বিন্যাস, সংস্থার ধরন, তৈরির তারিখ এবং থাম্বনেইল তথ্য পেতে দেয়।
  • MtpConstants MTP ফাইল ফরম্যাট কোড, অ্যাসোসিয়েশন টাইপ এবং সুরক্ষা স্থিতি ঘোষণা করার জন্য ধ্রুবক প্রদান করে।

নতুন ইনপুট ডিভাইস এবং গতি ঘটনা জন্য সমর্থন

Android 3.1 নতুন ইনপুট ডিভাইস এবং নতুন ধরনের মোশন ইভেন্টগুলিকে সমর্থন করার জন্য ইনপুট সাবসিস্টেমকে প্রসারিত করে, সমস্ত দৃশ্য এবং উইন্ডো জুড়ে৷ কীবোর্ড এবং টাচস্ক্রিন ছাড়াও ব্যবহারকারীরা ইঁদুর, ট্র্যাকবল, জয়স্টিক, গেমপ্যাড এবং অন্যান্য ডিভাইস ব্যবহার করে তাদের অ্যাপ্লিকেশনগুলির সাথে ইন্টারঅ্যাক্ট করতে দেওয়ার জন্য বিকাশকারীরা এই ক্ষমতাগুলি তৈরি করতে পারে।

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

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

জয়স্টিক এবং গেমপ্যাড সমর্থন করার জন্য, InputDevice ক্লাসে এই নতুন ইনপুট ডিভাইস উত্সগুলি অন্তর্ভুক্ত রয়েছে:

  • SOURCE_CLASS_JOYSTICK — উৎস ডিভাইসটিতে জয়স্টিক অক্ষ রয়েছে।
  • SOURCE_CLASS_BUTTON — উৎস ডিভাইসে বোতাম বা কী আছে।
  • SOURCE_GAMEPAD — উৎস ডিভাইসটিতে গেমপ্যাড বোতাম রয়েছে যেমন KEYCODE_BUTTON_A বা KEYCODE_BUTTON_BSOURCE_CLASS_BUTTON বোঝায়৷
  • SOURCE_JOYSTICK — উৎস ডিভাইসটিতে জয়স্টিক অক্ষ রয়েছে। SOURCE_CLASS_JOYSTICK বোঝায়।

এই নতুন উত্সগুলি, সেইসাথে ইঁদুর এবং ট্র্যাকবল থেকে মোশন ইভেন্টগুলি বর্ণনা করার জন্য, প্ল্যাটফর্মটি এখন MotionEvent এ অক্ষ কোডগুলিকে সংজ্ঞায়িত করে, যেমন এটি KeyEvent এ কী কোডগুলিকে সংজ্ঞায়িত করে। জয়স্টিক এবং গেম কন্ট্রোলারের জন্য নতুন অক্ষ কোডগুলির মধ্যে রয়েছে AXIS_HAT_X , AXIS_HAT_Y , AXIS_RTRIGGER , AXIS_ORIENTATION , AXIS_THROTTLE , এবং আরও অনেকগুলি৷ বিদ্যমান MotionEvent অক্ষগুলি AXIS_X , AXIS_Y , AXIS_PRESSURE , AXIS_SIZE , AXIS_TOUCH_MAJOR , AXIS_TOUCH_MINOR , AXIS_TOOL_MAJOR , AXIS_TOOL_MINOR , এবং AXIS_ORIENTATION দ্বারা প্রতিনিধিত্ব করা হয়।

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

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

কিছু অক্ষ বিশেষ অ্যাক্সেসর পদ্ধতি ব্যবহার করে পুনরুদ্ধার করা যেতে পারে। উদাহরণস্বরূপ, getAxisValue() কল করার পরিবর্তে, অ্যাপ্লিকেশনগুলি getX() কল করতে পারে। যে অক্ষগুলিতে অন্তর্নির্মিত অ্যাক্সেসর রয়েছে সেগুলির মধ্যে রয়েছে AXIS_X , AXIS_Y , AXIS_PRESSURE , AXIS_SIZE , AXIS_TOUCH_MAJOR , AXIS_TOUCH_MINOR , AXIS_TOOL_MAJOR , AXIS_TOOL_MAJOR , এবং AXIS_TOOL_MINOR , এবং AXIS_ORIENTATION

প্রতিটি ইনপুট ডিভাইসের একটি অনন্য, সিস্টেম-নির্ধারিত আইডি থাকে এবং এটি একাধিক উৎসও প্রদান করতে পারে। যখন একটি ডিভাইস একাধিক উৎস প্রদান করে, তখন একাধিক উৎস একই অক্ষ ব্যবহার করে অক্ষের ডেটা প্রদান করতে পারে। উদাহরণস্বরূপ, টাচ সোর্স থেকে আসা একটি টাচ ইভেন্ট স্ক্রীন পজিশন ডেটার জন্য X অক্ষ ব্যবহার করে, যখন জয়স্টিক সোর্স থেকে আসা একটি জয়স্টিক ইভেন্ট স্টিকের অবস্থানের জন্য X অক্ষ ব্যবহার করবে। এই কারণে, অ্যাপ্লিকেশানগুলির জন্য অক্ষের মানগুলি যে উত্স থেকে উদ্ভূত হয়েছে সেই অনুসারে ব্যাখ্যা করা গুরুত্বপূর্ণ৷ একটি মোশন ইভেন্ট পরিচালনা করার সময়, অ্যাপ্লিকেশনগুলিকে একটি ডিভাইস বা উত্স দ্বারা সমর্থিত অক্ষগুলি নির্ধারণ করতে InputDevice ক্লাসে পদ্ধতিগুলি ব্যবহার করা উচিত৷ বিশেষত, অ্যাপ্লিকেশনগুলি একটি ডিভাইসের সমস্ত অক্ষ বা ডিভাইসের প্রদত্ত উত্সের সমস্ত অক্ষের জন্য অনুসন্ধান করতে getMotionRanges() ব্যবহার করতে পারে। উভয় ক্ষেত্রেই, InputDevice.MotionRange অবজেক্টে প্রত্যাবর্তিত অক্ষগুলির জন্য পরিসরের তথ্য প্রতিটি অক্ষ মানের জন্য উত্স নির্দিষ্ট করে৷

অবশেষে, যেহেতু জয়স্টিক, গেমপ্যাড, মাউস এবং ট্র্যাকবলের মোশন ইভেন্টগুলি স্পর্শ ইভেন্ট নয়, তাই প্ল্যাটফর্মটি "জেনেরিক" মোশন ইভেন্ট হিসাবে একটি View পাস করার জন্য একটি নতুন কলব্যাক পদ্ধতি যুক্ত করে। বিশেষত, এটি অন-টাচ মোশন ইভেন্টগুলিকে onGenericMotionEvent() এর পরিবর্তে onTouchEvent() এ একটি কলের মাধ্যমে View এ রিপোর্ট করে।

প্ল্যাটফর্মটি ইভেন্ট সোর্স ক্লাসের উপর নির্ভর করে জেনেরিক মোশন ইভেন্টগুলিকে ভিন্নভাবে প্রেরণ করে। SOURCE_CLASS_POINTER ইভেন্টগুলি পয়েন্টারের নীচে View যায়, যেভাবে টাচ ইভেন্টগুলি কাজ করে। অন্য সবগুলি বর্তমানে ফোকাস করা View যায়। উদাহরণস্বরূপ, এর মানে হল জয়স্টিক ইভেন্টগুলি গ্রহণ করার জন্য একটি View অবশ্যই ফোকাস নিতে হবে। প্রয়োজনে, অ্যাপ্লিকেশনগুলি সেখানে পরিবর্তে onGenericMotionEvent() প্রয়োগ করে কার্যকলাপ বা ডায়ালগের স্তরে এই ইভেন্টগুলি পরিচালনা করতে পারে।

জয়স্টিক মোশন ইভেন্ট ব্যবহার করে এমন একটি নমুনা অ্যাপ্লিকেশন দেখতে, দেখুন GameControllerInput এবং GameView

RTP API

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

RTP API android.net.rtp প্যাকেজে উপলব্ধ। ক্লাস অন্তর্ভুক্ত:

  • RtpStream , স্ট্রীমগুলির বেস ক্লাস যা RTP এর মাধ্যমে মিডিয়া পেলোড সহ নেটওয়ার্ক প্যাকেট পাঠায় এবং গ্রহণ করে।
  • AudioStream , RtpStream একটি সাবক্লাস যা আরটিপির উপর অডিও পেলোড বহন করে।
  • AudioGroup , ডিভাইস স্পিকার, মাইক্রোফোন এবং AudioStream পরিচালনা এবং মিশ্রিত করার জন্য একটি স্থানীয় অডিও হাব।
  • AudioCodec , যা কোডেকগুলির একটি সংগ্রহ ধারণ করে যা আপনি একটি AudioStream জন্য সংজ্ঞায়িত করেন।

অডিও কনফারেন্সিং এবং অনুরূপ ব্যবহারগুলিকে সমর্থন করার জন্য, একটি অ্যাপ্লিকেশন স্ট্রিমের জন্য শেষ পয়েন্ট হিসাবে দুটি ক্লাসকে ইনস্ট্যান্টিয়েট করে:

  • AudioStream একটি দূরবর্তী শেষ বিন্দু নির্দিষ্ট করে এবং এতে নেটওয়ার্ক ম্যাপিং এবং একটি কনফিগার করা AudioCodec থাকে।
  • AudioGroup এক বা একাধিক AudioStream জন্য স্থানীয় শেষ বিন্দু প্রতিনিধিত্ব করে। AudioGroup সমস্ত AudioStream মিশ্রিত করে এবং ঐচ্ছিকভাবে একই সময়ে ডিভাইস স্পিকার এবং মাইক্রোফোনের সাথে ইন্টারঅ্যাক্ট করে।

সহজতম ব্যবহারে একটি একক দূরবর্তী শেষ বিন্দু এবং স্থানীয় শেষ বিন্দু জড়িত। আরও জটিল ব্যবহারের জন্য, অনুগ্রহ করে AudioGroup জন্য বর্ণিত সীমাবদ্ধতাগুলি পড়ুন৷

RTP API ব্যবহার করতে, অ্যাপ্লিকেশনগুলিকে তাদের ম্যানিফেস্ট ফাইলগুলিতে <uses-permission android:name="android.permission.INTERNET"> ঘোষণা করে ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করতে হবে৷ ডিভাইস মাইক্রোফোন অর্জন করতে, <uses-permission android:name="android.permission.RECORD_AUDIO"> অনুমতিরও প্রয়োজন।

রিসাইজযোগ্য অ্যাপ উইজেট

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

ডেভেলপাররা উইজেটের AppWidgetProviderInfo মেটাডেটাতে একটি resizeMode অ্যাট্রিবিউট সংজ্ঞায়িত করে যেকোনো হোম স্ক্রীন উইজেটকে রিসাইজযোগ্য করে তুলতে পারে। resizeMode অ্যাট্রিবিউটের মানগুলির মধ্যে "অনুভূমিক", "উল্লম্ব" এবং "কোনটিই নয়" অন্তর্ভুক্ত। একটি উইজেটকে অনুভূমিকভাবে এবং উল্লম্বভাবে আকার পরিবর্তনযোগ্য হিসাবে ঘোষণা করতে, "অনুভূমিক|উল্লম্ব" মান সরবরাহ করুন।

এখানে একটি উদাহরণ:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="86400000"
    android:previewImage="@drawable/preview"
    android:initialLayout="@layout/example_appwidget"
    android:configure="com.example.android.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical" >
</appwidget-provider>

হোম স্ক্রীন উইজেট সম্পর্কে আরও তথ্যের জন্য, অ্যাপ উইজেট ডকুমেন্টেশন দেখুন।

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

  • নতুন ViewPropertyAnimator ক্লাস
    • একটি নতুন ViewPropertyAnimator ক্লাস ডেভেলপারদের View অবজেক্টে নির্বাচিত বৈশিষ্ট্যগুলিকে অ্যানিমেট করার জন্য একটি সুবিধাজনক উপায় প্রদান করে৷ ক্লাস স্বয়ংক্রিয় করে এবং বৈশিষ্ট্যগুলির অ্যানিমেশনকে অপ্টিমাইজ করে এবং একটি View অবজেক্টে একাধিক একযোগে অ্যানিমেশন পরিচালনা করা সহজ করে তোলে।

      ViewPropertyAnimator ব্যবহার করা সোজা। একটি View এর জন্য বৈশিষ্ট্যগুলি অ্যানিমেট করতে, সেই View জন্য একটি ViewPropertyAnimator অবজেক্ট তৈরি করতে animate() কল করুন। ViewPropertyAnimator এর পদ্ধতিগুলি ব্যবহার করে নির্দিষ্ট করার জন্য কী প্রপার্টি অ্যানিমেট করতে হবে এবং কীভাবে এটি অ্যানিমেট করতে হবে। উদাহরণস্বরূপ, View স্বচ্ছ করতে বিবর্ণ করতে, alpha(0); . ViewPropertyAnimator অবজেক্ট অন্তর্নিহিত Animator ক্লাস কনফিগার করার এবং এটি শুরু করার, তারপর অ্যানিমেশন রেন্ডার করার বিবরণ পরিচালনা করে।

  • অ্যানিমেশন পটভূমির রঙ
    • নতুন getBackgroundColor() এবং setBackgroundColor(int) পদ্ধতি আপনাকে শুধুমাত্র উইন্ডো অ্যানিমেশনের জন্য অ্যানিমেশনের পিছনে পটভূমির রঙ পেতে/সেট করতে দেয়। বর্তমানে ব্যাকগ্রাউন্ড কালো হতে হবে, যেকোনো পছন্দসই আলফা লেভেল সহ।
  • ViewAnimator থেকে অ্যানিমেটেড ভগ্নাংশ পাওয়া
    • একটি নতুন getAnimatedFraction() পদ্ধতি আপনাকে একটি ValueAnimator থেকে বর্তমান অ্যানিমেশন ভগ্নাংশ — অতি সাম্প্রতিক ফ্রেম আপডেটে ব্যবহৃত বিলুপ্ত/ইন্টারপোলেটেড ভগ্নাংশ পেতে দেয়।

UI ফ্রেমওয়ার্ক

  • একটি স্তরের জোরপূর্বক রেন্ডারিং
    • একটি নতুন buildLayer() পদ্ধতি একটি অ্যাপ্লিকেশনকে একটি ভিউ এর স্তর তৈরি করতে বাধ্য করতে দেয় এবং ভিউটি অবিলম্বে এতে রেন্ডার করা হয়। উদাহরণস্বরূপ, একটি অ্যানিমেশন শুরু করার আগে একটি অ্যাপ্লিকেশন তার স্তরে একটি দৃশ্য রেন্ডার করতে এই পদ্ধতিটি ব্যবহার করতে পারে। ভিউ জটিল হলে, অ্যানিমেশন শুরু করার আগে এটিকে লেয়ারে রেন্ডার করা ফ্রেম এড়িয়ে যাওয়া এড়িয়ে যাবে।
  • ক্যামেরা দূরত্ব
    • অ্যাপ্লিকেশানগুলি ক্যামেরা থেকে একটি ভিউতে দূরত্ব সেট করার জন্য একটি নতুন পদ্ধতি setCameraDistance(float) ব্যবহার করতে পারে। এটি অ্যাপ্লিকেশনগুলিকে দৃশ্যের 3D রূপান্তরের উপর উন্নত নিয়ন্ত্রণ দেয়, যেমন ঘূর্ণন।
  • একটি DatePicker থেকে একটি ক্যালেন্ডার ভিউ পাওয়া
  • ভিউ বিচ্ছিন্ন হলে কলব্যাক পাওয়া
    • একটি নতুন View.OnAttachStateChangeListener যখন একটি ভিউ এর উইন্ডো থেকে সংযুক্ত বা বিচ্ছিন্ন হয় তখন আপনাকে কলব্যাক গ্রহণ করতে দেয়৷ একটি শ্রোতা যোগ করতে addOnAttachStateChangeListener() ব্যবহার করুন এবং এটি সরাতে addOnAttachStateChangeListener() ব্যবহার করুন।
  • ফ্র্যাগমেন্ট ব্রেডক্রাম্ব লিসেনার, নতুন onInflate() স্বাক্ষর
    • একটি নতুন পদ্ধতি, setOnBreadCrumbClickListener() , অ্যাপ্লিকেশনগুলিকে ফ্র্যাগমেন্ট-ব্রেডক্রাম্ব ক্লিকগুলিকে আটকাতে এবং ব্যাকস্ট্যাক এন্ট্রি বা ক্লিক করা টুকরোতে যাওয়ার আগে প্রয়োজনীয় কোনও পদক্ষেপ নিতে দেওয়ার জন্য একটি হুক সরবরাহ করে।
    • Fragment ক্লাসে, onInflate(attrs, savedInstanceState) অবহেলিত। এর পরিবর্তে অনুগ্রহ করে onInflate(activity, attrs, savedInstanceState) ব্যবহার করুন।
  • নতুন ট্যাবে অনুসন্ধান ফলাফল প্রদর্শন করুন
    • ACTION_WEB_SEARCH ইন্টেন্টের জন্য একটি EXTRA_NEW_SEARCH ডেটা কী আপনাকে বিদ্যমান একটির পরিবর্তে একটি নতুন ব্রাউজার ট্যাবে একটি অনুসন্ধান খুলতে দেয়৷
  • অঙ্কনযোগ্য পাঠ্য কার্সার
    • আপনি এখন নতুন রিসোর্স অ্যাট্রিবিউট textCursorDrawable ব্যবহার করে পাঠ্য কার্সার হিসাবে ব্যবহার করার জন্য একটি অঙ্কনযোগ্য নির্দিষ্ট করতে পারেন।
  • দূরবর্তী দৃশ্যে প্রদর্শিত শিশু সেট করা
  • গেমপ্যাড এবং অন্যান্য ইনপুট ডিভাইসের জন্য জেনেরিক কী
    • KeyEvent গেমপ্যাড বোতামগুলিকে মিটমাট করার জন্য জেনেরিক কীকোডগুলির একটি পরিসর যুক্ত করে৷ ক্লাসটি কীকোডগুলির সাথে কাজ করার জন্য isGamepadButton(int) এবং অন্যান্য বেশ কয়েকটি সহায়ক পদ্ধতি যুক্ত করে।

গ্রাফিক্স

  • বিটম্যাপ পরিচালনার জন্য সাহায্যকারী
    • setHasAlpha(boolean) একটি অ্যাপকে নির্দেশ করতে দেয় যে একটি বিটম্যাপের সমস্ত পিক্সেল অস্বচ্ছ (মিথ্যা) বা কিছু পিক্সেলে অ-অস্বচ্ছ আলফা মান (সত্য) থাকতে পারে। দ্রষ্টব্য, কিছু কনফিগারেশনের জন্য (যেমন RGB_565) এই কলটি উপেক্ষা করা হয়েছে, কারণ এটি প্রতি-পিক্সেল আলফা মান সমর্থন করে না। এটি একটি অঙ্কন ইঙ্গিত হিসাবে বোঝানো হয়েছে, কারণ কিছু ক্ষেত্রে অস্বচ্ছ প্রতি-পিক্সেল আলফা মান থাকতে পারে এমন একটির তুলনায় একটি বিটম্যাপ যা অস্বচ্ছ বলে পরিচিত একটি দ্রুত অঙ্কন কেস নিতে পারে।
    • getByteCount() বাইটে একটি বিটম্যাপের আকার পায়।
    • getGenerationId() একটি অ্যাপ্লিকেশনকে একটি বিটম্যাপ পরিবর্তন করা হয়েছে কিনা তা খুঁজে বের করতে দেয়, যেমন ক্যাশে করার জন্য।
    • sameAs(android.graphics.Bitmap) নির্ধারণ করে যে একটি প্রদত্ত বিটম্যাপ বর্তমান বিটম্যাপ থেকে, মাত্রা, কনফিগারেশন বা পিক্সেল ডেটাতে আলাদা কিনা।
  • ক্যামেরা অবস্থান এবং ঘূর্ণন সেট করা
    • Camera 3D রূপান্তরের জন্য ক্যামেরার অবস্থান নিয়ন্ত্রণের জন্য দুটি নতুন পদ্ধতি rotate() এবং setLocation() যোগ করে।

নেটওয়ার্ক

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

      একটি উচ্চ-পারফরম্যান্স লক তৈরি করতে, createWifiLock() এ কলে লক মোড হিসাবে WIFI_MODE_FULL_HIGH_PERF পাস করুন৷

  • আরো ট্রাফিক পরিসংখ্যান
    • অ্যাপ্লিকেশনগুলি এখন TrafficStats এ নতুন পদ্ধতি ব্যবহার করে আরও ধরনের নেটওয়ার্ক ব্যবহারের পরিসংখ্যান অ্যাক্সেস করতে পারে৷ অ্যাপ্লিকেশনগুলি একটি প্রদত্ত UID-এর জন্য UDP পরিসংখ্যান, প্যাকেট গণনা, TCP প্রেরণ/পেলোড বাইট এবং সেগমেন্টগুলি পেতে পদ্ধতিগুলি ব্যবহার করতে পারে।
  • এসআইপি প্রমাণীকরণ ব্যবহারকারীর নাম
    • অ্যাপ্লিকেশনগুলি এখন getAuthUserName() এবং setAuthUserName() নতুন পদ্ধতি ব্যবহার করে একটি প্রোফাইলের জন্য SIP প্রমাণীকরণ ব্যবহারকারীর নাম পেতে এবং সেট করতে পারে।

ডাউনলোড ম্যানেজার

  • সম্পূর্ণ ডাউনলোড পরিচালনা করা
    • অ্যাপ্লিকেশানগুলি এখন ডাউনলোড শুরু করতে পারে যা শুধুমাত্র সম্পূর্ণ হওয়ার পরে ব্যবহারকারীদের অবহিত করে৷ এই ধরনের ডাউনলোড শুরু করতে, অ্যাপ্লিকেশনগুলি একটি অনুরোধ বস্তুর setNotificationVisibility() পদ্ধতিতে VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION পাস করে৷
    • একটি নতুন পদ্ধতি, addCompletedDownload() , একটি অ্যাপ্লিকেশনকে ডাউনলোড ডাটাবেসে একটি ফাইল যোগ করতে দেয়, যাতে এটি ডাউনলোড অ্যাপ্লিকেশন দ্বারা পরিচালিত হতে পারে।
  • আকার অনুসারে সাজানো ডাউনলোডগুলি দেখান
    • অ্যাপ্লিকেশানগুলি একটি ACTION_VIEW_DOWNLOADS অভিপ্রায়ে নতুন অতিরিক্ত INTENT_EXTRAS_SORT_BY_SIZE যোগ করে বাছাই-বাই-আকার মোডে ডাউনলোড অ্যাপ্লিকেশন শুরু করতে পারে৷

আইএমই ফ্রেমওয়ার্ক

  • একটি ইনপুট পদ্ধতির অতিরিক্ত মান কী পাওয়া যাচ্ছে
    • InputMethodSubtype যোগ করে মেথডটি containsExtraValueKey() সাবটাইপের জন্য একটি ExtraValue স্ট্রিং সংরক্ষণ করা হয়েছে কিনা এবং ExtraValue হ্যাশম্যাপ থেকে একটি নির্দিষ্ট কী মান বের করার জন্য মেথড getExtraValueOf()

মিডিয়া

  • নতুন স্ট্রিমিং অডিও ফরম্যাট
    • মিডিয়া ফ্রেমওয়ার্ক কাঁচা ADTS AAC সামগ্রীর জন্য অন্তর্নির্মিত সমর্থন যোগ করে, উন্নত স্ট্রিমিং অডিওর জন্য, সেইসাথে FLAC অডিওর জন্য সমর্থন, সর্বোচ্চ মানের (ক্ষতিহীন) সংকুচিত অডিও সামগ্রীর জন্য। আরও তথ্যের জন্য সমর্থিত মিডিয়া ফরম্যাট নথি দেখুন।

বন্ধ করা অ্যাপ্লিকেশনগুলিতে নিয়ন্ত্রণ চালু করুন

অ্যান্ড্রয়েড 3.1 থেকে শুরু করে, সিস্টেমের প্যাকেজ ম্যানেজার থেমে থাকা অ্যাপ্লিকেশানগুলির ট্র্যাক রাখে এবং ব্যাকগ্রাউন্ড প্রসেস এবং অন্যান্য অ্যাপ্লিকেশানগুলি থেকে তাদের লঞ্চ নিয়ন্ত্রণ করার একটি উপায় প্রদান করে৷

মনে রাখবেন যে একটি অ্যাপ্লিকেশানের স্টপ স্টেট একটি অ্যাক্টিভিটির স্টপ স্টেটের মত নয়। সিস্টেমটি সেই দুটি স্টপ স্টেটকে আলাদাভাবে পরিচালনা করে।

প্ল্যাটফর্মটি দুটি নতুন অভিপ্রায় ফ্ল্যাগ সংজ্ঞায়িত করে যা একজন প্রেরককে নির্দিষ্ট করতে দেয় যে অভিপ্রায়কে থামানো অ্যাপ্লিকেশনে উপাদানগুলি সক্রিয় করার অনুমতি দেওয়া উচিত কিনা।

  • FLAG_INCLUDE_STOPPED_PACKAGES — সমাধানের জন্য সম্ভাব্য লক্ষ্যগুলির তালিকায় থামানো অ্যাপ্লিকেশনগুলির উদ্দেশ্য ফিল্টারগুলি অন্তর্ভুক্ত করুন৷
  • FLAG_EXCLUDE_STOPPED_PACKAGES — সম্ভাব্য লক্ষ্যগুলির তালিকা থেকে থামানো অ্যাপ্লিকেশনগুলির উদ্দেশ্য ফিল্টারগুলি বাদ দিন।

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

মনে রাখবেন যে সিস্টেমটি সমস্ত সম্প্রচারের অভিপ্রায়ে FLAG_EXCLUDE_STOPPED_PACKAGES যোগ করে৷ এটি ব্যাকগ্রাউন্ড পরিষেবাগুলি থেকে সম্প্রচারগুলিকে অসাবধানতাবশত বা অপ্রয়োজনীয়ভাবে বন্ধ করা অ্যাপ্লিকেশনগুলির উপাদানগুলি চালু করা থেকে আটকাতে এটি করে৷ একটি ব্যাকগ্রাউন্ড পরিষেবা বা অ্যাপ্লিকেশন এই আচরণটিকে ওভাররাইড করতে পারে FLAG_INCLUDE_STOPPED_PACKAGES ফ্ল্যাগ যুক্ত করে সম্প্রচারের উদ্দেশ্য যা বন্ধ করা অ্যাপ্লিকেশনগুলিকে সক্রিয় করার অনুমতি দেওয়া উচিত৷

অ্যাপ্লিকেশনগুলি একটি বন্ধ অবস্থায় থাকে যখন সেগুলি প্রথম ইনস্টল করা হয় কিন্তু এখনও চালু হয় নি এবং যখন সেগুলি ব্যবহারকারীর দ্বারা ম্যানুয়ালি বন্ধ করা হয় (অ্যাপ্লিকেশন পরিচালনায়)।

আবেদনের বিজ্ঞপ্তি প্রথমে লঞ্চ এবং আপগ্রেড করুন

প্ল্যাটফর্মটি অ্যাপ্লিকেশনটির প্রথম লঞ্চের উন্নত বিজ্ঞপ্তি যোগ করে এবং দুটি নতুন অভিপ্রায় ক্রিয়াগুলির মাধ্যমে আপগ্রেড করে:

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

    এই অভিপ্রায়টি সরাসরি অ্যাপ্লিকেশনে পাঠানো হয়, তবে শুধুমাত্র যদি অ্যাপ্লিকেশনটি আপগ্রেড করা হয় যখন এটি শুরু অবস্থায় ছিল (বন্ধ অবস্থায় নয়)।

মূল উপযোগিতা

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

ওয়েবকিট

  • ফাইল স্কিম কুকিজ
    • CookieManager এখন file: URI স্কিম। আপনি WebView বা CookieManager এর একটি উদাহরণ তৈরি করার আগে ফাইল স্কিম কুকিজের জন্য সমর্থন সক্ষম/অক্ষম করতে setAcceptFileSchemeCookies() ব্যবহার করতে পারেন। একটি CookieManager উদাহরণে, আপনি allowFileSchemeCookies() কল করে ফাইল স্কিম কুকিজ সক্ষম করা হয়েছে কিনা তা পরীক্ষা করতে পারেন।
  • লগইন অনুরোধের বিজ্ঞপ্তি
    • অ্যান্ড্রয়েড 3.0-এ প্রবর্তিত ব্রাউজার অটোলগইন বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য, নতুন পদ্ধতি onReceivedLoginRequest() হোস্ট অ্যাপ্লিকেশনকে অবহিত করে যে ব্যবহারকারীর জন্য একটি অটোলগইন অনুরোধ প্রক্রিয়া করা হয়েছে৷
  • ক্লাস এবং ইন্টারফেস সরানো হয়েছে
    • পূর্বে অবহেলিত অবস্থায় থাকার পরে, পাবলিক API থেকে বেশ কয়েকটি ক্লাস এবং ইন্টারফেস সরানো হয়েছিল। আরও তথ্যের জন্য API পার্থক্য রিপোর্ট দেখুন।

ব্রাউজার

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

  • HTML5 <video> ট্যাগে এমবেড করা ভিডিওর ইনলাইন প্লেব্যাকের জন্য সমর্থন। প্লেব্যাক যেখানে সম্ভব হার্ডওয়্যার-ত্বরিত হয়।
  • সমস্ত সাইটের (মোবাইল এবং ডেস্কটপ) জন্য নির্দিষ্ট অবস্থানের উপাদানগুলির জন্য স্তর সমর্থন।

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

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

  • android.hardware.usb.accessory — ইউএসবি এর মাধ্যমে সংযুক্ত বাহ্যিক হার্ডওয়্যার ডিভাইসের সাথে যোগাযোগ করতে এবং হোস্ট হিসাবে কাজ করার জন্য অ্যাপ্লিকেশনটি USB API ব্যবহার করে।
  • android.hardware.usb.host — অ্যাপ্লিকেশনটি USB এ সংযুক্ত বহিরাগত হার্ডওয়্যার ডিভাইসের সাথে যোগাযোগ করতে USB API ব্যবহার করে এবং ডিভাইস হিসাবে কাজ করে।

Google Play <uses-feature> ম্যানিফেস্ট উপাদানে ঘোষিত বৈশিষ্ট্যের উপর ভিত্তি করে অ্যাপ্লিকেশনগুলিকে ফিল্টার করে। একটি অ্যাপ্লিকেশন ম্যানিফেস্টে বৈশিষ্ট্যগুলি ঘোষণা করার বিষয়ে আরও তথ্যের জন্য, Google Play ফিল্টারগুলি পড়ুন।

API পার্থক্য রিপোর্ট

অ্যান্ড্রয়েড 3.1 (এপিআই লেভেল 12) এ সমস্ত API পরিবর্তনগুলির একটি বিশদ দৃশ্যের জন্য, API পার্থক্য রিপোর্ট দেখুন।

API স্তর

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

আপনার অ্যাপ্লিকেশানে Android 3.1 এ প্রবর্তিত API ব্যবহার করতে, আপনাকে Android 3.1 SDK প্ল্যাটফর্মে সরবরাহ করা Android লাইব্রেরির বিপরীতে অ্যাপ্লিকেশনটি কম্পাইল করতে হবে। আপনার প্রয়োজনের উপর নির্ভর করে, আপনাকে অ্যাপ্লিকেশনের ম্যানিফেস্টে <uses-sdk> উপাদানটিতে একটি android:minSdkVersion="12" বৈশিষ্ট্য যোগ করতে হতে পারে।

আরও তথ্যের জন্য, পড়ুন API স্তর কী?