ভাইব্রেশন অ্যাকচুয়েটর প্রাইমার

অ্যান্ড্রয়েড ডিভাইসে হ্যাপটিক ইফেক্ট ডিজাইন করার আগে, এটি ভাইব্রেশন অ্যাকচুয়েটর কীভাবে কাজ করে তার একটি ওভারভিউ পেতে সাহায্য করে।

হ্যাপটিক এলআরএর উপাদানগুলির চিত্রণ

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

দুটি ভিন্ন ফ্রিকোয়েন্সিতে একই ইনপুট ভোল্টেজ দেওয়া হলে, কম্পন আউটপুট প্রশস্ততা ভিন্ন হতে পারে। LRA এর অনুরণন ফ্রিকোয়েন্সি থেকে ফ্রিকোয়েন্সি যত দূরে থাকবে, এর কম্পনের প্রশস্ততা তত কম হবে।

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

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

কোটলিন

val timings: LongArray = longArrayOf(50, 50, 50, 50, 50, 100, 350, 250)
val amplitudes: IntArray = intArrayOf(77, 79, 84, 99, 143, 255, 0, 255)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

জাভা

long[] timings = new long[] { 50, 50, 50, 50, 50, 100, 350, 250 };
int[] amplitudes = new int[] { 77, 79, 84, 99, 143, 255, 0, 255 };
int repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

নীচের প্লটটি উপরে দেখানো কোড স্নিপেটের সাথে সঙ্গতিপূর্ণ তরঙ্গরূপ দেখায়।

ধাপ ফাংশন ইনপুট তরঙ্গরূপ প্লট

সংশ্লিষ্ট ত্বরণ নীচে দেখানো হয়েছে:

প্রকৃত পরিমাপকৃত তরঙ্গরূপের প্লট, স্তরগুলির মধ্যে আরও জৈব রূপান্তর দেখায়

লক্ষ্য করুন যে ত্বরণ ধীরে ধীরে বৃদ্ধি পায়, হঠাৎ নয়, যখনই প্যাটার্নে প্রশস্ততার একটি ধাপ পরিবর্তন হয় (যেমন, 0ms, 150ms, 200ms, 250ms, 700ms)। প্রশস্ততা পরিবর্তনের প্রতিটি ধাপে একটি ওভারশুটও রয়েছে এবং ইনপুট প্রশস্ততা হঠাৎ 0 এ নেমে গেলে কমপক্ষে 50ms স্থায়ী হয় এমন দৃশ্যমান 'রিংিং' রয়েছে।

ওভারশুট এড়াতে এবং রিং করার সময় কমাতে ধীরে ধীরে প্রশস্ততা বৃদ্ধি এবং হ্রাস করে এই হ্যাপটিক প্যাটার্নটি উন্নত করা যেতে পারে। নিম্নলিখিত সংশোধিত সংস্করণের তরঙ্গরূপ এবং ত্বরণ প্লট দেখায়।

কোটলিন

val timings: LongArray = longArrayOf(
    25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
    300, 25, 25, 150, 25, 25, 25
)
val amplitudes: IntArray = intArrayOf(
    38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
    0, 85, 170, 255, 170, 85, 0
)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

জাভা

long[] timings = new long[] {
        25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
        300, 25, 25, 150, 25, 25, 25
    };
int[] amplitudes = new int[] {
        38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
        0, 85, 170, 255, 170, 85, 0
    };
int repeatIndex = -1; // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

অতিরিক্ত পদক্ষেপ সহ ইনপুট তরঙ্গরূপের প্লট

মাপা তরঙ্গরূপের প্লট, মসৃণ রূপান্তর দেখায়

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

  • স্পষ্ট প্রভাব এবং আদিম সঞ্চালন.

  • নতুন হ্যাপটিক প্রভাব রচনা করতে তাদের সংযুক্ত করুন।

এই প্রাক-সংজ্ঞায়িত হ্যাপটিক ধ্রুবক এবং আদিম উচ্চ মানের হ্যাপটিক প্রভাব নিশ্চিত করার সাথে সাথে আপনার কাজের গতি বাড়াতে পারে।