ডিভাইস নির্মাতারা সাধারণত প্রতিটি ডিভাইসের জন্য তৈরি ব্যক্তিগত সম্পদের মালিক বলে বিবেচিত হয়। যেমন, তাদের প্রকৌশল প্রচেষ্টা প্রায়ই প্রতি-ডিভাইসের ভিত্তিতে ফোকাস করা হয়; ইকোসিস্টেমের অন্যান্য যন্ত্রের সামঞ্জস্যের দিকে সামান্য পরিশ্রম করা যায় না।
সরাসরি বিপরীতে, বিকাশকারীরা প্রতিটি ডিভাইসের প্রযুক্তিগত বৈশিষ্ট্য নির্বিশেষে ইকোসিস্টেমের সমস্ত অ্যান্ড্রয়েড ফোনে কাজ করে এমন অ্যাপ তৈরি করার চেষ্টা করে। পদ্ধতির এই পার্থক্যটি একটি ফ্র্যাগমেন্টেশন সমস্যার কারণ হতে পারে, উদাহরণস্বরূপ, কিছু ফোনের হার্ডওয়্যার ক্ষমতা অ্যাপ ডেভেলপারদের দ্বারা সেট করা প্রত্যাশার সাথে মেলে না। তাই যদি হ্যাপটিক্স এপিআই কিছু অ্যান্ড্রয়েড ফোনে কাজ করে কিন্তু অন্যগুলিতে নয়, ফলাফলটি একটি অসামঞ্জস্যপূর্ণ ইকোসিস্টেম। এই কারণেই হার্ডওয়্যার কনফিগারেশন নিশ্চিত করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে যে নির্মাতারা প্রতিটি ডিভাইসে অ্যান্ড্রয়েড হ্যাপটিক্স API প্রয়োগ করতে পারে।
এই পৃষ্ঠাটি Android haptics API-এর সর্বোত্তম ব্যবহারের জন্য হার্ডওয়্যার সম্মতি সেট আপ করার জন্য একটি ধাপে ধাপে চেকলিস্ট প্রদান করে।
নীচের চিত্রটি ডিভাইস প্রস্তুতকারক এবং ডেভেলপারদের মধ্যে সাধারণ জ্ঞান গড়ে তোলার চিত্র তুলে ধরে, যা একটি সমন্বিত বাস্তুতন্ত্র তৈরির একটি গুরুত্বপূর্ণ পদক্ষেপ।
চিত্র 1. ডিভাইস নির্মাতা এবং বিকাশকারীদের মধ্যে জ্ঞান তৈরি করা
হ্যাপটিক্স বাস্তবায়ন চেকলিস্ট
- হ্যাপটিক্স বাস্তবায়নের জন্য ধ্রুবকের তালিকা।
HAL এবং API এর মধ্যে মানচিত্র ধ্রুবক
- পাবলিক API ধ্রুবক (ফ্রেমওয়ার্কে নামযুক্ত স্থানধারক ) এবং HAL ধ্রুবকগুলির মধ্যে ম্যাপিং সুপারিশ, যা স্থানধারকদের বাস্তবায়ন করে।
- এই প্রক্রিয়া সম্পর্কে আরও জানতে প্রস্তাবিত ম্যাপিং গাইড করতে ডিজাইন নীতিগুলি দেখুন।
- লক্ষ্য হ্যাপটিক প্রভাব নির্দেশাবলী. আপনার হার্ডওয়্যারে দ্রুত চেক করতে এই নির্দেশাবলী ব্যবহার করুন।
আমরা নীচে এই ধাপগুলির প্রত্যেকটি আরও বিস্তারিতভাবে অন্বেষণ করব৷
ধাপ 1: ধ্রুবক প্রয়োগ করুন
আপনার ডিভাইস হ্যাপটিক্স বাস্তবায়নের জন্য ন্যূনতম প্রয়োজনীয়তা পূরণ করে কিনা তা নির্ধারণ করতে এই পরীক্ষাগুলি সম্পাদন করুন।
চিত্র 2. প্রভাব বাস্তবায়ন
চিত্র 3. আদিম বাস্তবায়ন
নিম্নলিখিত হ্যাপটিক ধ্রুবকগুলির বাস্তবায়ন অবস্থা পরীক্ষা করুন।
হ্যাপটিক ধ্রুবক | অবস্থান এবং সারাংশ |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | VibrationEffect ক্লাসVibrationEffect হ্যাপটিক ধ্রুবক ইনপুট ইভেন্টের কোনো ধারণা অন্তর্ভুক্ত করে না এবং কোনো UI উপাদান নেই। ধ্রুবকগুলির পরিবর্তে শক্তির স্তরের ধারণা অন্তর্ভুক্ত করা হয়, যেমন EFFECT_CLICK এবং EFFECT_HEAVY_CLICK , যাকে createPredefined() দ্বারা বলা হয়। |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD | VibrationEffect.Composition ক্লাসVibrationEffect.Composition এ হ্যাপটিক ধ্রুবকগুলিকে মাপযোগ্য তীব্রতা থাকতে দেওয়া হয়, যেটিকে addPrimitive(int primitiveId, float scale, int delay) দ্বারা বলা হয়। |
নীচে বর্ণিত বিকল্প কম্পনগুলি এমন ডিভাইসগুলিতে সঞ্চালিত হয় যেগুলি VibrationEffect
ধ্রুবকগুলি প্রয়োগ করে না৷ এই ধরনের ডিভাইসগুলিতে সর্বোত্তম কার্য সম্পাদন করার জন্য এই কনফিগারেশনগুলি আপডেট করার পরামর্শ দেওয়া হয়।
EFFECT_CLICK
VibrationEffect.createWaveform
এবংframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
এ কনফিগার করা টাইমিং-এর সাহায্যে তৈরি করা ওয়েভফর্ম ভাইব্রেশন।EFFECT_HEAVY_CLICK
VibrationEffect.createWaveform
এবংframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
এ কনফিগার করা টাইমিং-এর সাহায্যে তৈরি করা ওয়েভফর্ম ভাইব্রেশন।EFFECT_DOUBLE_CLICK
VibrationEffect.createWaveform
এবং টাইমিং (0, 30, 100, 30) দিয়ে তৈরি করা ওয়েভফর্ম কম্পন।EFFECT_TICK
VibrationEffect.createWaveform
দিয়ে তৈরি ওয়েভফর্ম ভাইব্রেশন এবংframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
এ কনফিগার করা সময়।
চিত্র 4. প্রতিক্রিয়া ধ্রুবক বাস্তবায়ন
নিম্নলিখিত পাবলিক প্রতিক্রিয়া ধ্রুবকগুলির স্থিতি পরীক্ষা করুন।
হ্যাপটিক ধ্রুবক | অবস্থান এবং সারাংশ |
---|---|
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS , KEYBOARD_RELEASE , KEYBOARD_TAP REJECT LONG_PRESS , TEXT_HANDLE_MOVE , VIRTUAL_KEY , VIRTUAL_KEY_RELEASE , GESTURE_END , GESTURE_START CONFIRM | HapticFeedbackConstants ক্লাসHapticFeedbackConstants -এ হ্যাপটিক ধ্রুবকগুলি নির্দিষ্ট UI উপাদানগুলির সাথে ইনপুট ইভেন্টে সহায়তা করে, যেমন KEYBOARD_PRESS এবং KEYBOARD_RELEASE , যাকে performHapticFeedback() দ্বারা বলা হয়। |
ধাপ 2: HAL এবং API এর মধ্যে মানচিত্র ধ্রুবক
ধাপ 2 পাবলিক HAL ধ্রুবক এবং API ধ্রুবকের মধ্যে প্রস্তাবিত ম্যাপিং উপস্থাপন করে। যদি ধাপ 1-এ মূল্যায়ন করা হার্ডওয়্যার HAL ধ্রুবকগুলি বাস্তবায়ন না করে, তাহলে অনুরূপ আউটপুট তৈরি করার জন্য ধাপ 1-এ বর্ণিত ফলব্যাক প্যাটার্নগুলি আপডেট করতে ধাপ 2 ব্যবহার করা উচিত। ম্যাপিং দুটি ভিন্ন ডিফল্ট মডেল দ্বারা সাহায্য করা হয়.
বিচ্ছিন্ন মডেল (সহজ)
- প্রশস্ততা এই মডেলের মূল পরিবর্তনশীল। এইচএএল-এর প্রতিটি সত্তা একটি ভিন্ন হ্যাপটিক প্রশস্ততার প্রতিনিধিত্ব করে।
- মৌলিক হ্যাপটিক ইউএক্স বাস্তবায়নের জন্য এই মডেলটি একটি ন্যূনতম প্রয়োজনীয়তা।
- একটি আরও উন্নত হ্যাপটিক ইউএক্সের জন্য উন্নত হার্ডওয়্যার এবং একটি উন্নত মডেল (একটানা মডেল) প্রয়োজন।
ক্রমাগত মডেল (উন্নত)
- টেক্সচার এবং প্রশস্ততা এই মডেলের মূল পরিবর্তনশীল। HAL-এর প্রতিটি সত্তা বিভিন্ন হ্যাপটিক টেক্সচারের প্রতিনিধিত্ব করে। প্রতিটি HAL সত্তার প্রশস্ততা স্কেল ফ্যাক্টর (
S
) দ্বারা নিয়ন্ত্রিত হয়। - এই মডেলের জন্য উন্নত হার্ডওয়্যার প্রয়োজন। যদি OEMs
VibrationEffect.Composition
সহ উন্নত হ্যাপটিক UX ব্যবহার করতে চায় (সর্বশেষ হ্যাপটিক্স API-এর সর্বোত্তম ব্যবহারের জন্য), এই মডেলটি ব্যবহার করে তাদের হার্ডওয়্যার প্রয়োগ করার পরামর্শ দেওয়া হয়।
- টেক্সচার এবং প্রশস্ততা এই মডেলের মূল পরিবর্তনশীল। HAL-এর প্রতিটি সত্তা বিভিন্ন হ্যাপটিক টেক্সচারের প্রতিনিধিত্ব করে। প্রতিটি HAL সত্তার প্রশস্ততা স্কেল ফ্যাক্টর (
বিচ্ছিন্ন মডেল
উপযুক্ত HAL ধ্রুবক সহ API-এ প্রদত্ত সমস্ত পাবলিক ধ্রুবক ম্যাপ করার সুপারিশ করা হয়। এই প্রক্রিয়াটি শুরু করার জন্য, HAL-এ ডিভাইসটি পৃথক প্রশস্ততা সহ কতগুলি হ্যাপটিক তরঙ্গরূপ নির্ধারণ করতে পারে তা খুঁজে বের করুন। এই ধারণার চারপাশে গঠিত একটি নির্দিষ্ট প্রশ্ন এইরকম দেখায়: আমার ফোনে মানব-বোধগম্য প্রশস্ততা পার্থক্যের সাথে কতগুলি একক-আবেগ হ্যাপটিক প্রভাব সংজ্ঞায়িত করা যেতে পারে? এই প্রশ্নের উত্তর ম্যাপিং নির্ধারণ করে।
HAL ধ্রুবক সংজ্ঞায়িত করা একটি হার্ডওয়্যার-নির্ভর প্রক্রিয়া। উদাহরণস্বরূপ, একটি এন্ট্রি-লেভেল ফোনে একটি একক হ্যাপটিক ওয়েভফর্ম তৈরি করার জন্য শুধুমাত্র হার্ডওয়্যার ক্ষমতা থাকতে পারে। আরও উন্নত হার্ডওয়্যার উপাদান সহ ডিভাইসগুলি বিচ্ছিন্ন প্রশস্ততা স্তরের বিস্তৃত পরিসর তৈরি করে এবং এইচএএল-এ একাধিক হ্যাপটিক তরঙ্গরূপ সংজ্ঞায়িত করতে পারে। HAL-API ধ্রুবক ম্যাপিং HAL ধ্রুবক নেয় (একটি বেসলাইন হিসাবে মাঝারি প্রশস্ততা ব্যবহার করে), তারপর সেখান থেকে শক্তিশালী বা দুর্বল প্রভাবের ব্যবস্থা করে।
চিত্র 5. প্রশস্ততা দ্বারা HAL ধ্রুবক পরিসীমা
যখন বিযুক্ত প্রশস্ততার সাথে HAL ধ্রুবকের সংখ্যা সংজ্ঞায়িত করা হয়, তখন HAL ধ্রুবকের সংখ্যা দ্বারা HAL এবং API ধ্রুবকগুলিকে ম্যাপ করার সময়। এই ম্যাপিং প্রক্রিয়াটি একটি একক ইমপালস API ধ্রুবককে প্রশস্ততা স্তরের তিনটি পৃথক গ্রুপে ভাগ করতে পারে। API ধ্রুবকগুলিকে যেভাবে বিভক্ত করা হয় তা ইনপুট ইভেন্টের সহগামীর জন্য UX নীতির উপর ভিত্তি করে। আরও তথ্যের জন্য, হ্যাপটিক্স ইউএক্স ডিজাইন দেখুন।
চিত্র 6. HAL-API ধ্রুবক ম্যাপিং: বিচ্ছিন্ন মডেল
যদি আপনার ডিভাইসটি পৃথক প্রশস্ততা সহ শুধুমাত্র দুটি HAL ধ্রুবক সমর্থন করে, তবে মাঝারি এবং উচ্চ প্রশস্ততা স্তরের HAL ধ্রুবকগুলিকে একত্রিত করার কথা বিবেচনা করুন৷ অনুশীলনে এই ধারণাটির একটি উদাহরণ হল একই HAL ধ্রুবকের সাথে EFFECT_CLICK
এবং EFFECT_HEAVY_CLICK
ম্যাপ করা, যা হবে মাঝারি প্রশস্ততা স্তরের HAL ধ্রুবক। যদি আপনার ডিভাইসটি বিচ্ছিন্ন প্রশস্ততার সাথে শুধুমাত্র একটি HAL ধ্রুবককে সমর্থন করে, তবে তিনটি স্তরকে একটিতে একত্রিত করার কথা বিবেচনা করুন।
ক্রমাগত মডেল
প্রশস্ততা পরিমাপযোগ্যতা সহ অবিচ্ছিন্ন মডেল HAL ধ্রুবক সংজ্ঞায়িত করতে প্রয়োগ করা যেতে পারে। একটি স্কেল ফ্যাক্টর ( S
) HAL ধ্রুবকগুলিতে প্রয়োগ করা যেতে পারে (উদাহরণস্বরূপ, HAL_H0
, HAL_H1
) স্কেল করা HAL ( HAL_H0
x S
) তৈরি করতে। এই ক্ষেত্রে, চিত্র 7-এ দেখানো হিসাবে API ধ্রুবকগুলি ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
) সংজ্ঞায়িত করার জন্য স্কেল করা HAL ম্যাপ করা হয়েছে। একটানা মডেলের প্রশস্ততা মাপযোগ্যতা ব্যবহার করে, একটি ডিভাইস স্বতন্ত্র টেক্সচার সহ অল্প সংখ্যক HAL ধ্রুবক সংরক্ষণ করতে পারে। এবং স্কেল ফ্যাক্টর ( S
) সামঞ্জস্য করে প্রশস্ততার বৈচিত্র যোগ করুন। ডিভাইস নির্মাতারা কতগুলি ভিন্ন হ্যাপটিক টেক্সচার প্রদান করতে চান তার উপর ভিত্তি করে HAL ধ্রুবকের সংখ্যা নির্ধারণ করতে পারে।
চিত্র 7. টেক্সচার (HAL_H0) এবং প্রশস্ততা স্কেল (S) দ্বারা HAL ধ্রুবক পরিসীমা
চিত্র 8. HAL-API ধ্রুবক ম্যাপিং: ক্রমাগত মডেল
অবিচ্ছিন্ন মডেলে, বিভিন্ন HAL ধ্রুবকগুলি বিভিন্ন প্রশস্ততার পরিবর্তে বিভিন্ন হ্যাপটিক টেক্সচারের প্রতিনিধিত্ব করে; স্কেল ফ্যাক্টর ( S
) প্রশস্ততা কনফিগার করতে পারে। যাইহোক, যেহেতু টেক্সচারের উপলব্ধি (উদাহরণস্বরূপ, তীক্ষ্ণতা) সময়কাল এবং প্রশস্ততার উপলব্ধির সাথে সম্পর্কিত, তাই টেক্সচার এবং স্কেল ফ্যাক্টর (HAL-API ম্যাপিংয়ের নকশা প্রক্রিয়াতে) একত্রিত করার পরামর্শ দেওয়া হয়।
চিত্র 7 প্রশস্ততা স্কেলেবিলিটি সহ একটি এইচএএল থেকে অনেকগুলি এপিআই ধ্রুবক পর্যন্ত প্রকরণ বাড়িয়ে ধ্রুবক ম্যাপিংকে চিত্রিত করে।
চিত্র 9. প্রশস্ততা পরিমাপযোগ্যতার সাথে ক্রমবর্ধমান বৈচিত্র্য
VibrationEffect.Composition
এ PRIMITIVE_TICK
এবং PRIMITIVE_CLICK
মতো সমস্ত পরিমাপযোগ্য API ধ্রুবকগুলির জন্য, API ধ্রুবকের শক্তি স্তর float scale
প্যারামিটারের উপর নির্ভর করে যখন API ধ্রুবকটি addPrimitive(int primitiveID, float scale, int delay)
এর মাধ্যমে ঘোষণা করা হয়। PRIMITIVE_TICK
এবং PRIMITIVE_CLICK
বিভিন্ন HAL ধ্রুবক ব্যবহার করে একটি স্পষ্ট পার্থক্যের সাথে ডিজাইন করা যেতে পারে। আপনি যদি টেক্সচারে ভিন্নতা যোগ করতে চান তাহলে এই পদ্ধতির পরামর্শ দেওয়া হয়।
ধাপ 3: হার্ডওয়্যার মূল্যায়ন
হার্ডওয়্যার মূল্যায়ন এই নির্দিষ্ট মূল্যায়নের জন্য তিনটি হ্যাপটিক প্রভাব, লেবেলযুক্ত প্রভাব 1, 2, এবং 3 সংজ্ঞায়িত করে।
প্রভাব 1: পূর্বনির্ধারিত ছোট হ্যাপটিক ধ্রুবক
VibrationEffect.EFFECT_CLICK
ধ্রুবক হল বেসলাইন ইফেক্ট বা HAL-API ম্যাপিং-এর সাধারণ ডিনোমিনেটর যা ধাপ 2-এ দেওয়া হয়েছে। এটি সবচেয়ে বেশি ব্যবহৃত প্রভাব, HapticFeedbackConstants.KEYBOARD_PRESS
দিয়ে ম্যাপ করা হয়েছে। এই প্রভাব মূল্যায়ন পরিষ্কার হ্যাপটিক্সের জন্য আপনার লক্ষ্য ডিভাইসের প্রস্তুতি নির্ধারণ করতে সাহায্য করে।
প্রভাব 2: সংক্ষিপ্ত কাস্টম হ্যাপটিক প্রভাব
VibrationEffect.createOneShot(20,255)
ধ্রুবকটি কাস্টম হ্যাপটিক প্রভাবের জন্য। সংক্ষেপে, একক কাস্টম ইম্পালস, 20 ms হল সর্বোচ্চ থ্রেশহোল্ড সময়কাল সংজ্ঞায়িত করার জন্য। 20 ms এর বেশি একটি একক প্ররোচনা সুপারিশ করা হয় না কারণ এটি একটি গুঞ্জন কম্পন হিসাবে বিবেচিত হয়৷
চিত্র 10. সংক্ষিপ্ত কাস্টম হ্যাপটিক প্রভাব
প্রভাব 3: প্রশস্ততা বৈচিত্র সহ দীর্ঘ কাস্টম হ্যাপটিক প্রভাব
VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
ধ্রুবক হল প্রশস্ততা বৈচিত্র সহ দীর্ঘ কাস্টম প্রভাবের জন্য। কাস্টম হ্যাপটিক প্রভাবগুলির জন্য বিভিন্ন প্রশস্ততা তৈরি করার ক্ষমতা সমৃদ্ধ হ্যাপটিক্সের জন্য ডিভাইসের ক্ষমতা মূল্যায়ন করার সূচকগুলির মধ্যে একটি। প্রস্তাবিত timings []
এবং amplitudes []
হল যথাক্রমে {500, 500}
এবং {128, 255}
, যা 500 ms স্যাম্পলিং রেট সহ 50% থেকে 100% পর্যন্ত প্রশস্ততা বৃদ্ধির প্রবণতা উপস্থাপন করে৷
চিত্র 11. প্রশস্ততা বৈচিত্র সহ দীর্ঘ কাস্টম হ্যাপটিক প্রভাব
Effect 3 এর জন্য প্রশস্ততা নিয়ন্ত্রণের হার্ডওয়্যার ক্ষমতা পরীক্ষা করতে, Vibrator.hasAmplitudeControl()
পদ্ধতি ব্যবহার করুন। উদ্দেশ্য অনুযায়ী পরিবর্তিত প্রশস্ততা সহ VibrationEffect.createWaveform
কার্যকর করতে ফলাফলটি true
হতে হবে।
চিত্র 12. হ্যাপটিক প্রভাব 1, 2, এবং 3 এর বিষয় মূল্যায়ন
একটি বিষয়গত মূল্যায়ন সঞ্চালন
একটি দ্রুত সমন্বয় চেক করার জন্য, প্রথমে একটি বিষয়গত মূল্যায়ন করুন। সাবজেক্টিভ অ্যাসেসমেন্টের লক্ষ্য হ'ল হ্যাপটিক প্রভাবের প্রশস্ততা পর্যবেক্ষণ করা যাতে ডিভাইসটি মানব-অনুভূতিযোগ্য প্রশস্ততার সাথে হ্যাপটিক্স তৈরি করতে পারে কিনা।
এই ধারণার চারপাশে গঠন করা একটি নির্দিষ্ট প্রশ্ন এইরকম দেখায়: ডিভাইসটি কি প্রত্যাশিতভাবে ব্যবহারকারীদের কাছে সহজেই উপলব্ধিযোগ্য হ্যাপটিক প্রভাব তৈরি করতে পারে? এই প্রশ্নের উত্তর আপনাকে ব্যর্থ হ্যাপটিক্স এড়াতে সাহায্য করে, যার মধ্যে অদৃশ্য হ্যাপটিক্স যা ব্যবহারকারীরা অনুভব করতে পারে না, বা অনিচ্ছাকৃত হ্যাপটিক্স যেখানে ওয়েভফর্মগুলি উদ্দেশ্য অনুযায়ী প্যাটার্ন তৈরি করে না।