হ্যাপটিক ডিজাইন নীতি

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

এই পৃষ্ঠায় হ্যাপটিক ব্যবহারের বিভিন্ন ক্ষেত্র ব্যাখ্যা করা হয়েছে, হ্যাপটিক এফেক্টের শ্রেণীবিভাগ সম্পর্কে জানানো হয়েছে এবং অ্যাপের জন্য প্রাথমিক নির্দেশিকা সম্পর্কেও বলা হয়েছে।

আপনার অ্যাপে হ্যাপটিক যোগ করার ব্যবহারিক উদাহরণ

আপনার অ্যাপে হ্যাপটিক ফিডব্যাক যোগ করার কিছু কারণ এখানে দেওয়া হল।

  • ব্যবহারকারীর মনোযোগ আকর্ষণ করা প্রয়োজন এমন কোনও ইভেন্ট সম্পর্কে তাকে বিজ্ঞপ্তি পাঠাতে। ইনকামিং ফোন কল বা টেক্সট মেসেজ অথবা ক্যালেন্ডারে আসন্ন মিটিং এর মধ্যে পড়ে।

  • ব্যবহারকারীর অ্যাকশনের পরে ডিভাইসে কোনও স্টেট পরিবর্তন কনফার্ম করতে। উদাহরণগুলির মধ্যে বোতাম প্রেস করার জন্য ক্লিক ফিডব্যাক, ফোন আনলক করা, ফিঙ্গারপ্রিন্ট গ্রহণ বা বাতিল করা বা ক্যামেরা অ্যাক্টিভেট করা অন্তর্ভুক্ত।

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

হ্যাপটিকের শ্রেণীবিভাগ

এখানে উপস্থাপিত হ্যাপটিক নীতিগুলি পরিষ্কার হ্যাপটিক, সমৃদ্ধ হ্যাপটিক এবং বাজি হ্যাপটিক-এর উপর ভিত্তি করে ডিজাইন করা হয়েছে।

হ্যাপটিক মুছে দেওয়া

'পরিষ্কার হ্যাপটিক' বলতে বোতাম প্রেস করার মতো আলাদা ইভেন্টের সাথে যুক্ত স্পষ্ট ও পরিচ্ছন্ন অনুভূতিকে বোঝায়। এইসব এফেক্ট প্রায়ই কোনও বাস্তব-জগতের মেকানিক্যাল অ্যাকশনকে অনুকরণ করার উদ্দেশ্যে তৈরি করা হয়, যেমন কোনও ফিজিক্যাল বোতামে প্রেস করলে যেমন অনুভূতি হয়।

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

অ্যাকশন-ভিত্তিক কনস্ট্যান্টের আরেকটি সুবিধা হল, প্ল্যাটফর্ম ফলব্যাক আচরণ প্রদান করতে পারে যদি আরও জটিল এফেক্ট ব্যবহারকারীর ডিভাইসে কাজ না করে।

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

রিচ হ্যাপটিক

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

রিচ হ্যাপ্টিক এফেক্টের উদাহরণ হল:

  • "ফ্লাটারি" অনুভূতি, অনেকটা প্রজাপতি আপনার আঙুলের ডগায় ডানা ঝাপটালে যেমন লাগে
  • কোনও সারফেসের টেক্সচার আঙুল দিয়ে টেনে বা সোয়াইপ করে অনুভব করা
  • অস্থিরতা ও ভারসাম্যহীনতা অথবা ভারী ও প্রতিধ্বনি হওয়ার অনুভূতি

বাজি হ্যাপটিক

বাজি হ্যাপটিকের বৈশিষ্ট্য হল, এটিতে তীব্র, তীক্ষ্ণ ও গভীর ভাইব্রেশন হয় যা ভাইব্রেশন শেষ হয়ে যাওয়ার পরেও শরীরে থেকে যায়, যেমন, ঝিনঝিন করা। এছাড়াও, এটিতে একটি রিং হওয়ার মতো প্রভাব থাকে যা ভাইব্রেশন সম্পূর্ণ বন্ধ হওয়ার আগে রিভার্বেশনের মতো মনে হয়।

বাজি হ্যাপটিক সেনসেশনের উদাহরণ হল:

  • জ্যাকহ্যামার চালানো
  • মোটরসাইকেল চালানো
  • মোবাইল ডিভাইসে, কোনও কী প্রেস করার পরে দীর্ঘক্ষণ ধরে রিং হওয়া ভাইব্রেশন

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

হ্যাপটিক ডিজাইন সংক্রান্ত নির্দেশিকা

মোটামুটিভাবে, ডিজাইন নির্দেশিকাকে এইভাবে সংক্ষিপ্ত করা যায়:

  • বাজি হ্যাপটিকের পরিবর্তে রিচ ও স্পষ্ট হ্যাপটিক ব্যবহার করুন।
  • সিস্টেম ও অ্যাপ ডিজাইন, দু'টি ক্ষেত্রেই সামঞ্জস্য বজায় রাখুন।
  • ব্যবহারের ফ্রিকোয়েন্সি এবং গুরুত্ব সম্পর্কে সচেতন থাকুন।

আগে থেকে সংজ্ঞায়িত হ্যাপটিক ধ্রুবক ও প্রভাবকে অগ্রাধিকার দিন

আপনার অ্যাকশন যদি HapticFeedbackConstants-এ আগে থেকে সংজ্ঞায়িত অ্যাকশনের মধ্যে পড়ে, তাহলে সেই কনস্ট্যান্ট ব্যবহার করুন। এটি ব্যবহারকারীর সাথে ইন্টার‍্যাকশনের একটি ধারাবাহিক অভিজ্ঞতা নিশ্চিত করে, যা অ্যাক্সেসিবিলিটি সংক্রান্ত বিষয় হিসেবে বিশেষভাবে গুরুত্বপূর্ণ।

আপনি নিজের এফেক্ট তৈরি করলে, VibrationEffect আগে থেকে সংজ্ঞায়িত এফেক্ট ও VibrationEffect.Composition প্রিমিটিভ ব্যবহার করার কথা বিবেচনা করুন। যেসব ডিভাইসে এগুলি কাজ করে, সেগুলিতে এগুলি একই ধরনের কোয়ালিটি প্রদান করে।

গুরুত্ব ও ফ্রিকোয়েন্সির সাথে শক্তিকে কোরিলেট করা

হ্যাপ্টিক এফেক্ট ব্যবহারকারীকে যেন অতিষ্ঠ করে না তোলে বা অপ্রয়োজনীয় না হয়।

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

  • আরও গুরুত্বপূর্ণ ইভেন্ট, যেমন কোনও পৃষ্ঠা রিফ্রেশ করা বা ফর্ম জমা দেওয়া, টগল পরিবর্তন করা বা কোনও তালিকায় স্ক্রল করার চেয়ে আরও শক্তিশালী হওয়া উচিত।

  • দুটি ধারণা একত্রিত করে এমন এফেক্ট তৈরি করুন যা ইন্টার‍্যাকশন কোনও টার্গেটে পৌঁছানোর সাথে সাথে আরও শক্তিশালী হয়ে ওঠে, যেমন, ড্র্যাগ করা, ড্রপ করা বা স্ন্যাপ করার অ্যাকশনের মাধ্যমে টিকের সিকোয়েন্সের অ্যামপ্লিটিউড ধীরে ধীরে বাড়ানো।

লাগাতার ভিডিও আপলোড করা

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

এছাড়াও, ভালভাবে সংজ্ঞায়িত ইন্টার‍্যাকশনের জন্য একই HapticFeedbackConstants ব্যবহার করে Android সিস্টেমের সাথে সামঞ্জস্যপূর্ণ হন, যেমন টাইম পিকার বা ভার্চুয়াল কীবোর্ড।

হ্যাপটিকের সাহায্যে ভিজ্যুয়াল ও অডিও অভিজ্ঞতা ডিজাইন করা

ব্যবহারকারীর সামগ্রিক অভিজ্ঞতার অংশ হিসেবে হ্যাপটিক্সকে বিবেচনা করুন।

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

অন্যদিকে, সিঙ্ক না হওয়া বা ভিজ্যুয়াল ও অডিও এফেক্টের সাথে সামঞ্জস্যপূর্ণ না হওয়া হ্যাপ্টিক ফিডব্যাক ব্যবহারকারীকে কিছুটা অস্বস্তিতে ফেলতে পারে। কিছু ক্ষেত্রে, ব্যবহারকারী হ্যাপ্টিক অ্যাকচুয়েটরটি ভেঙে গেছে বলে মনে করতে পারেন।

হ্যাপ্টিক ফিডব্যাকের জন্য পুরনো ওয়ান-শট ভাইব্রেশন এড়িয়ে চলুন

একবার বাজানো যায় এমন কম্পন, যেমন VibrationEffect.createOneShot-এর মাধ্যমে সংজ্ঞায়িত করা বা API-এর মাধ্যমে পারফর্ম করা Vibrator.vibrate(long) এবং Vibrator.vibrate(long[], int)-এর মতো লেগ্যাসি কম্পন ব্যবহার করা এড়িয়ে চলুন।

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

ভাল 'কীক্লিক' হ্যাপ্টিক ফিডব্যাক সিগন্যালের সময়সীমা ১০ থেকে ২০ মিলি সেকেন্ডের মধ্যে হওয়া উচিত। তবে, অ্যাকচুয়েটরে ২০ মিলিসেকেন্ড ইনপুট শেষ হওয়ার পরে, অ্যাকচুয়েটর আরও ২০ থেকে ৫০ মিলিসেকেন্ড পর্যন্ত রিং করা চালিয়ে যেতে পারে। তাই, এই ধরনের ফিডব্যাকের জন্য সিঙ্গেল-শট ভাইব্রেশন এড়িয়ে যাওয়াই ভালো।