আমি কিছুক্ষণের জন্য অ্যান্ড্রয়েড ওরিয়েন্টেশন সেন্সরগুলির আশেপাশে মাথা পেতে চেষ্টা করছিলাম। আমি ভেবেছিলাম আমি এটা বুঝতে পেরেছি। তখন বুঝতে পারলাম আমি করিনি। এখন আমি মনে করি (আশা করি) এর জন্য আমার আবার আরও ভাল অনুভূতি রয়েছে তবে আমি এখনও 100% নই। আমি এটি সম্পর্কে আমার দুর্দশাগ্রস্ত বোঝার চেষ্টা করব এবং আশা করব যে আমি যদি অংশগুলি ভুল হয়ে থাকি বা কোনও শূন্যস্থান পূরণ করি তবে লোকেরা আমাকে সংশোধন করতে সক্ষম হবে।
আমি কল্পনা করি যে আমি 0 ডিগ্রি দ্রাঘিমাংশ (প্রাইম মেরিডিয়ান) এবং 0 ডিগ্রি অক্ষাংশ (নিরক্ষীয়) এ দাঁড়িয়ে আছি। এই অবস্থানটি আসলে আফ্রিকার উপকূলের সমুদ্রের মধ্যে তবে আমার সহ্য করবে। আমি আমার ফোনটি আমার মুখের সামনে ধরে রাখি যাতে ফোনের নীচে আমার পায়ে ইশারা করে; আমি উত্তর দিকে মুখ করছি (গ্রিনউইচের দিকে তাকিয়ে) তাই ফোনের ডান দিকটি পূর্ব দিকে আফ্রিকার দিকে নির্দেশ করে। এই অরিয়েন্টেশনটিতে (নীচের চিত্রের রেফারেন্স সহ) আমার এক্স-অক্ষ রয়েছে পূর্ব দিকে নির্দেশ করছে, জেড-অক্ষটি দক্ষিণ এবং ওয়াই-অক্ষটি আকাশের দিকে নির্দেশ করছে।
এখন ফোনের সেন্সরগুলি আপনাকে এই পরিস্থিতিতে ডিভাইসের ওরিয়েন্টেশন (অবস্থান নয়) কাজ করতে দেয়। এই অংশটি আমাকে সর্বদা বিভ্রান্ত করেছে, সম্ভবত যেহেতু আমি বুঝতে চেয়েছিলাম কীভাবে কিছু কাজ করেছে তা গ্রহণ করার আগেই এটি ঠিক কাজ করে। দেখে মনে হচ্ছে ফোনটি দুটি ভিন্ন প্রযুক্তির সংমিশ্রণ ব্যবহার করে তার অভিমুখীকরণের কাজ করে।
আমি সেখানে পৌঁছানোর আগে, কল্পনা করুন যে ভূমির সেই কাল্পনিক টুকরোটি 0 ডিগ্রি অক্ষাংশ এবং দ্রাঘিমাংশের উপরে উল্লিখিত দিকে দাঁড়িয়ে আছে back আপনি চোখের পাতায় পড়ে আছেন এবং আপনার জুতাগুলি খেলার মাঠের চতুর্থ স্থানে স্থির রয়েছে Ima যদি কেউ আপনাকে পিছনে টান দেয় তবে আপনি সামনে (উত্তর দিকে) পড়ে যাবেন এবং আপনার পতন ভাঙতে উভয় হাত বাইরে রাখবেন। একইভাবে যদি কেউ আপনাকে বাম কাঁধে কাঁধ দেয় তবে আপনি ডান হাতের উপর পড়ে যাবেন। আপনার অভ্যন্তর কানের মধ্যে "মহাকর্ষ সেন্সর" রয়েছে (ইউটিউব ক্লিপ) যা আপনি যদি সামনে / পিছনে, বা বাম / ডানদিকে পড়ে যাচ্ছেন বা নিচে পড়ে যাচ্ছেন কিনা তা সনাক্ত করতে দেয় (বা উপরে !!)। সুতরাং মানুষ ফোনের মতো একই এক্স এবং জেড অক্ষের চারপাশে প্রান্তিককরণ এবং ঘূর্ণন সনাক্ত করতে পারে।
এখন কল্পনা করুন যে কেউ এখন আপনাকে 90 ডিগ্রি ঘুরতে ঘুরবে যাতে আপনি এখন প্রাচ্যের মুখোমুখি হন। আপনি Y অক্ষের চারপাশে ঘোরানো হচ্ছে। এই অক্ষটি আলাদা কারণ আমরা জৈবিকভাবে এটি সনাক্ত করতে পারি না। আমরা জানি আমরা একটি নির্দিষ্ট পরিমাণে কোণঠাসা হয়েছি কিন্তু আমরা গ্রহের চৌম্বকীয় উত্তর মেরুর সাথে সম্পর্কিত দিকটি জানি না। পরিবর্তে আমাদের একটি বাহ্যিক সরঞ্জাম ... একটি চৌম্বকীয় কম্পাস ব্যবহার করা দরকার। এটি আমাদের কোন দিকে মুখ করে রয়েছে তা নির্ধারণ করতে সহায়তা করে। আমাদের ফোনের ক্ষেত্রেও একই কথা।
এখন ফোনে 3-অক্ষের অ্যাক্সিলোমিটারও রয়েছে। আমার নেইতারা আসলে কীভাবে কাজ করে তবে আমি যেভাবে এটি কল্পনা করেছি তা হল মহাকর্ষকে আকাশ থেকে ধ্রুবক ও অভিন্ন 'বৃষ্টিপাত' হিসাবে কল্পনা করা এবং উপরের চিত্রটিতে অক্ষগুলি টিউব হিসাবে কল্পনা করা যা বৃষ্টিপাতের পরিমাণটি নির্ধারণ করতে পারে। ফোনটি সোজা হয়ে গেলে সমস্ত বৃষ্টি হবে ওয়াই 'টিউব' দিয়ে। যদি ফোনটি ধীরে ধীরে ঘোরানো হয় তবে এর স্ক্রিনটি আকাশের মুখোমুখি হবে ওয়াইয়ের মধ্য দিয়ে প্রবাহিত বৃষ্টিপাতের পরিমাণ হ্রাস পেয়ে শূন্যে নেমে যাবে এবং সর্বাধিক পরিমাণ বৃষ্টিপাত প্রবাহিত হওয়া অবধি Z এর মাধ্যমে ভলিউম অবিচ্ছিন্নভাবে বৃদ্ধি পাবে। একইভাবে যদি আমরা এখন ফোনটিকে তার পাশে টিপ করি তবে এক্স টিউব অবশেষে সর্বাধিক পরিমাণ বৃষ্টিপাত সংগ্রহ করবে। সুতরাং 3 টি টিউব দিয়ে প্রবাহিত বৃষ্টির পরিমাণ পরিমাপ করে ফোনের ওরিয়েন্টেশনের উপর নির্ভর করে আপনি ওরিয়েন্টেশনটি গণনা করতে পারেন।
ফোনে একটি বৈদ্যুতিন কম্পাসও রয়েছে যা একটি সাধারণ কম্পাসের মতো আচরণ করে - এর "ভার্চুয়াল সুই" চৌম্বকীয় উত্তরের দিকে নির্দেশ করে। অ্যান্ড্রয়েড মার্জ এই দুটি সেন্সর থেকে তথ্য যাতে যখনই কোন যে SensorEvent
এর TYPE_ORIENTATION
উৎপন্ন হয় values[3]
অ্যারের হয়েছে
মান [0]: দিগ্বলয় - (চৌম্বক উত্তর কম্পাস ভারবহন পূর্ব)
মান [1]: পিচ প্রায় x- অক্ষ ঘূর্ণন (ফোন সামনে বা পিছনের দিকে ঝুঁকানো)
মানগুলি [২]: রোল, y- অক্ষের চারপাশে ঘূর্ণন (ফোনটি তার বাম বা ডানদিকে ঝুঁকছে)
সুতরাং আমি মনে করি (তৃতীয় অ্যাকসিলোমিটার পড়ার চেয়ে অ্যান্ড্রয়েড অজিমুথ (কম্পাস বিয়ারিং) দেওয়ার কারণটি মনে করে যে কম্পাস ভারবহন কেবল আরও দরকারী। আমি নিশ্চিত নই কেন তারা এই ধরণের সেন্সরটিকে অবহেলা করেছিল কারণ এখন মনে হচ্ছে আপনাকে সিস্টেমের SensorEvent
ধরণের জন্য কোনও শ্রোতার রেজিস্ট্রেশন করতে হবে TYPE_MAGNETIC_FIELD
। ঘূর্ণন ম্যাট্রিক্স (নীচে দেখুন) যা পদ্ধতিতে পাস করা হয় তার value[]
জন্য ইভেন্টের অ্যারেটিকে SensorManger.getRotationMatrix(..)
পদ্ধতিতে অতিক্রম করতে হবে SensorManager.getOrientation(..)
। কেউ কি জানেন যে অ্যান্ড্রয়েড দলটি কেন হতাশ হয়েছিল Sensor.TYPE_ORIENTATION
? এটা কি দক্ষতার জিনিস? অনুরূপ প্রশ্নের একটি মন্তব্যে এটিই অন্তর্ভুক্ত তবে আপনাকে এখনও ভিন্ন ধরণের শ্রোতার নিবন্ধ করতে হবেবিকাশ / নমুনা / কম্পাস / এসসিআর / কম / উদাহরণ / অ্যান্ড্রয়েড / কম্পাস / কম্পাসঅ্যাক্টিভিটি.জভা উদাহরণ।
আমি এখন রোটেশন ম্যাট্রিক্স সম্পর্কে কথা বলতে চাই। (এটি এখানে আমি সবচেয়ে অনিশ্চিত) সুতরাং উপরে আমাদের কাছে অ্যান্ড্রয়েড ডকুমেন্টেশন থেকে তিনটি চিত্র রয়েছে, আমরা তাদের এ, বি এবং সি বলব'll
এ = সেন্সর ম্যানেজার.গেটরোটেশনম্যাট্রিক্স (..) পদ্ধতি চিত্র এবং বিশ্বের সমন্বিত সিস্টেমের প্রতিনিধিত্ব করে
বি = সেন্সরইভেন্ট এপিআই দ্বারা ব্যবহৃত সমন্বয় ব্যবস্থা।
সি = সেন্সর-ম্যানেজ.জেট ওরিয়েন্টেশন (..) পদ্ধতির চিত্র
সুতরাং আমার বোধগম্যতা হ'ল এটি "বিশ্বের সমন্বিত ব্যবস্থা" উপস্থাপন করে যা আমি অনুমান করি যে গ্রহের অবস্থানগুলিকে যেভাবে একটি latচ্ছিক (উচ্চতা) সহ একটি (অক্ষাংশ, দ্রাঘিমাংশ) দম্পতি হিসাবে দেওয়া হয়েছে তা বোঝায়। এক্স হ'ল "ইস্টিটিং" কো-অর্ডিনেটেট, ওয়াই হ'ল "নরথিং" কো-অর্ডিনেটেট। জেড আকাশের দিকে নির্দেশ করে এবং উচ্চতার প্রতিনিধিত্ব করে।
ফোন কো-অর্ডিনেট সিস্টেমটি চিত্রের বিতে দেখানো হয়েছে এটি স্থির হয়েছে। এর Y অক্ষটি সর্বদা শীর্ষকে নির্দেশ করে। ঘূর্ণন ম্যাট্রিক্স ফোন দ্বারা নিয়মিত গণনা করা হচ্ছে এবং দুজনের মধ্যে ম্যাপিংয়ের অনুমতি দেয়। তাহলে আমি কি এই ভেবে সঠিকভাবে আছি যে ঘূর্ণন ম্যাট্রিক্স বি এর সমন্বিত সিস্টেমকে সি তে রূপান্তরিত করে? সুতরাং আপনি যখন SensorManager.getOrientation(..)
পদ্ধতিটি কল করবেন তখন আপনি values[]
অঙ্কটি সি এর সাথে মানগুলির সাথে অ্যারে ব্যবহার করবেন যখন ফোন আকাশের দিকে নির্দেশ করা হবে তখন ঘূর্ণন ম্যাট্রিক্সটি আইডেন্টিটি ম্যাট্রিক্স (1 এর ম্যাট্রিক্স গাণিতিক সমতুল্য) যার অর্থ ডিভাইসটি সারিবদ্ধ হওয়ার সাথে সাথে কোনও ম্যাপিং প্রয়োজন নেই বিশ্বের সমন্বিত সিস্টেমের সাথে।
ঠিক আছে. আমি মনে করি আমি এখনই থামি। যেমনটি আমি আশা করার আগে বলেছিলাম যে লোকেরা আমাকে বলবে আমি কোথায় লোককে বিভ্রান্ত করেছি বা সাহায্য করেছি (বা আরও বিভ্রান্ত মানুষ!)