অ্যান্ড্রয়েড ৬.০ এবং এর পরবর্তী সংস্করণগুলো ব্লুটুথ (BT), ব্লুটুথ লো এনার্জি (BTLE), বা USB-এর মাধ্যমে ব্লুটুথ স্টাইলাস সংযোগের জন্য একটি স্ট্যান্ডার্ড ডেটা ফরম্যাট সমর্থন করে। প্ল্যাটফর্মটি টাচ ইনপুট এবং স্টাইলাস ডেটার মধ্যে সময়ের সামঞ্জস্য বিধান করে এবং তারপর সক্রিয় অ্যাপে মোশনইভেন্ট (MotionEvents) রেন্ডার করার জন্য স্টাইলাস ডেটা সরবরাহ করে। নিম্নলিখিত বিভাগগুলোতে OEM ডিভাইস বাস্তবায়নকারী, স্টাইলাস অ্যাকসেসরি নির্মাতা এবং স্টাইলাস অ্যাপ ডেভেলপারদের জন্য নির্দেশিকা প্রদান করা হয়েছে।
OEM ডিভাইস বাস্তবায়নকারীদের জন্য নির্দেশিকা
ব্লুটুথ স্টাইলাস সমর্থন সক্রিয় করতে, OEM ডিভাইস বাস্তবায়নকারীদের অবশ্যই ব্লুটুথ সমর্থন করতে হবে (এবং বৃহত্তর সামঞ্জস্যের জন্য BTLE সমর্থন করা উচিত)। প্ল্যাটফর্মটি সমর্থিত স্টাইলাস ইভেন্টগুলির জন্য ডেটা সংগ্রহ, টাইমিং কোরিলেশন এবং অ্যাপে রেন্ডারিংয়ের কাজ পরিচালনা করে।
১৪ এবং এর পরবর্তী সংস্করণগুলিতে, StylusButtonInputEventTest একটি সংযুক্ত স্টাইলাসের আচরণ অনুকরণ করে এবং বাটন ইভেন্টগুলি সঠিকভাবে রিপোর্ট করা হচ্ছে কিনা তা পরীক্ষা করে। এর পূর্ববর্তী সংস্করণগুলির জন্য একটি বিকল্প সমাধান হিসেবে, আমরা এমন একটি স্টাইলাস অ্যাক্সেসরি বা এমুলেটর তৈরি করার পরামর্শ দিই যা স্টাইলাস ইভেন্টগুলি সিমুলেট করতে পারে।
স্টাইলাস অ্যাকসেসরি নির্মাতাদের জন্য নির্দেশিকা
একটি স্টাইলাস ডিভাইসে সাপোর্ট প্রয়োগ করতে, ডিভাইস বাস্তবায়নকারীদের অবশ্যই নিচে দেখানো স্টাইলাস হিউম্যান ইন্টারফেস ডিভাইস (HID) ডেসক্রিপ্টরটি ব্যবহার করতে হবে, যা বর্ণনা করে যে স্টাইলাস ডেটা (চাপ সংবেদনশীলতা, ইরেজার, বাটন, ডিভাইস আইডি, ব্যাটারি লেভেল, চার্জিং স্ট্যাটাস, ইত্যাদি) কীভাবে উপস্থাপিত হয়। স্টাইলাস ডিভাইসটি অ্যান্ড্রয়েড মোবাইল ডিভাইসে HID তথ্য পাঠায়, যা প্ল্যাটফর্মটিকে টাচস্ক্রিনের টাচ ডেটার সাথে HID ডেটা সমন্বয় করতে এবং MotionEvent ক্লাস ব্যবহার করে স্টাইলাস ইভেন্ট তৈরি করতে সক্ষম করে। অ্যান্ড্রয়েড ১৪ এবং তার পরবর্তী সংস্করণগুলিতে, স্টাইলাসের বাটন চাপলে KeyEvent ক্লাস ব্যবহার করে অভ্যন্তরীণ ইভেন্টও তৈরি হয়। ডেটা ব্লুটুথ (BT), ব্লুটুথ লো এনার্জি (BTLE), বা USB-এর মাধ্যমে পাঠানো যেতে পারে।
উদাহরণ HID বর্ণনাকারী
নিম্নলিখিত নমুনা HID ডেসক্রিপ্টরটি টিপের সংস্পর্শ, চাপ, প্রাথমিক ও মাধ্যমিক বাটন, ইরেজার এবং সিরিয়াল নম্বর রিপোর্ট করে। আপনার অন্তর্ভুক্ত করা HID ডেসক্রিপ্টরটি অবশ্যই ব্লুটুথের মাধ্যমে স্টাইলাস দ্বারা রিপোর্ট করা বিষয়টিকে সঠিকভাবে প্রতিফলিত করবে, যা উপলব্ধ ক্ষমতাগুলোর যেকোনো একটি উপসেট হতে পারে।
UsagePage(Digitizer)
Usage(Pen)
Collection(Application)
Usage(Stylus)
Collection(Logical)
Usage(Tip Pressure)
Logical Minimum(0)
Logical Maximum(1023)
Report Count(1)
Report Size(10)
Input(Data, Variable, Absolute, No Null)
Usage(Barrel Switch)
Usage(Secondary Barrel Switch)
Usage(Tip Switch)
Usage(Invert)
Logical Maximum(1)
Report Count(4)
Report Size(1)
Input(Data, Variable, Absolute, No Null)
Usage(Transducer Serial Number)
Report Count(1)
Report Size(128)
Feature(Constant, Variable)
EndCollection
EndCollection
unsigned char HID_DESC[] = {
0x05, 0x0D, // UsagePage(Digitizer)
0x09, 0x02, // Usage(Pen)
0xA1, 0x01, // Collection(Application)
0x09, 0x20, // Usage(Stylus)
0xA1, 0x02, // Collection(Logical)
0x09, 0x30, // Usage(Tip Pressure)
0x15, 0x00, // Logical Minimum(0)
0x26, 0xFF, 0x03, // Logical Maximum(1023)
0x95, 0x01, // Report Count(1)
0x75, 0x0A, // Report Size(10)
0x81, 0x02, // Input(Data, Variable, Absolute, No Null)
0x09, 0x44, // Usage(Barrel Switch)
0x09, 0x5A, // Usage(Secondary Barrel Switch)
0x09, 0x42, // Usage(Tip Switch)
0x09, 0x3C, // Usage(Invert)
0x25, 0x01, // Logical Maximum(1)
0x95, 0x04, // Report Count(4)
0x75, 0x01, // Report Size(1)
0x81, 0x02, // Input(Data, Variable, Absolute, No Null)
0x09, 0x5B, // Usage(Transducer Serial Number)
0x95, 0x01, // Report Count(1)
0x75, 0x80, // Report Size(128)
0xB1, 0x03, // Feature(Constant, Variable)
0xC0, // End Collection
0xC0, // End Collection
}
স্টাইলাস অ্যাপ ডেভেলপারদের জন্য নির্দেশিকা
অ্যান্ড্রয়েড প্ল্যাটফর্ম স্বয়ংক্রিয়ভাবে পেয়ারিং এবং ইভেন্ট কোরিলেশন পরিচালনা করে, তাই বিদ্যমান এবং নতুন উভয় অ্যাপই ডিফল্টরূপে ব্লুটুথ স্টাইলাস সমর্থন করে। অ্যান্ড্রয়েড অ্যাপে স্টাইলাস সমর্থন করার বিষয়ে আরও জানতে, অ্যান্ড্রয়েড ডেভেলপার ডকুমেন্টেশন দেখুন।