মাস্টার অ্যান্ড্রয়েডের সেন্সরগুলি: হার্ডওয়্যার, সফ্টওয়্যার এবং বহুমাত্রিক

লেখক: John Stephens
সৃষ্টির তারিখ: 26 জানুয়ারি 2021
আপডেটের তারিখ: 5 জুলাই 2024
Anonim
মাস্টার অ্যান্ড্রয়েডের সেন্সরগুলি: হার্ডওয়্যার, সফ্টওয়্যার এবং বহুমাত্রিক - অ্যাপস
মাস্টার অ্যান্ড্রয়েডের সেন্সরগুলি: হার্ডওয়্যার, সফ্টওয়্যার এবং বহুমাত্রিক - অ্যাপস

কন্টেন্ট


বর্তমানে, বেশিরভাগ আধুনিক অ্যান্ড্রয়েড ডিভাইসগুলিতে একগুচ্ছ সেন্সর রয়েছে।

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

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

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


আমি কী অ্যান্ড্রয়েড সেন্সর ব্যবহার করতে পারি?

অ্যান্ড্রয়েড সেন্সরগুলি নিম্নলিখিত বিভাগগুলিতে বিভক্ত করা যেতে পারে:

  • পরিবেশগত সেন্সর। এগুলি পরিবেশের পরিস্থিতি যেমন বায়ুর তাপমাত্রা, চাপ, আর্দ্রতা এবং পরিবেষ্টনের আলো স্তরকে পরিমাপ করে।

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

উপরন্তু, সেন্সর হয় হয়:

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

পরিবেশগত সেন্সর: পরিবেষ্টিত আলো পরিমাপ করা

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


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

আপনার পছন্দসই সেটিংস সহ একটি নতুন অ্যান্ড্রয়েড প্রকল্প তৈরি করুন এবং আসুন শুরু করা যাক!

আপনার সেন্সর ডেটা প্রদর্শন করা হচ্ছে

আমি একটি টেক্সটভিউ যুক্ত করতে যাচ্ছি যা শেষ পর্যন্ত লাইট সেন্সর থেকে বের করা ডেটা প্রদর্শিত হবে। এই টেক্সটভিউটি যখনই নতুন ডেটা উপলভ্য হবে আপডেট হবে, তাই ব্যবহারকারীর সর্বদা সর্বশেষতম তথ্যে অ্যাক্সেস থাকে।

আপনার প্রকল্পের কার্যকলাপ_মিন.এক্সএমএল ফাইলটি খুলুন এবং নিম্নলিখিতগুলি যুক্ত করুন:

এরপরে, আমাদের লেআউটে রেফারেন্সযুক্ত "লাইট_সেন্সর" স্ট্রিং রিসোর্স তৈরি করতে হবে। আপনার প্রকল্পের স্ট্রিং.এক্সএমএল ফাইলটি খুলুন এবং নিম্নলিখিতগুলি যুক্ত করুন:

হালকা সেন্সর:% 1 $ .2f

"% 1 $ .2f" হ'ল একটি স্থানধারক যা আমাদের প্রদর্শিত তথ্য এবং এটি কীভাবে ফর্ম্যাট করা উচিত তা নির্দিষ্ট করে:

  • %1. আপনি একই স্ট্রিং রিসোর্সে একাধিক স্থানধারক সন্নিবেশ করতে পারেন; "% 1" নির্দেশ করে যে আমরা একটি একক স্থানধারক ব্যবহার করছি।
  • $.2. এটি নির্দিষ্ট করে যে আমাদের অ্যাপ্লিকেশনটি কীভাবে প্রতিটি আগত ভাসমান-পয়েন্ট মান বিন্যাস করতে হবে। "$ .2" ইঙ্গিত দেয় যে মানটি দুটি দশমিক স্থানে গোল করা উচিত।
  • এফ ভাসমান-পয়েন্ট সংখ্যা হিসাবে মানটি ফর্ম্যাট করুন।

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

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

আমাদের স্ট্রিংস। এক্সএমএল ফাইলটি উন্মুক্ত থাকার সময়, একটি "নো_সেন্সর" স্ট্রিং তৈরি করা যাক, যা আলোক সেন্সরটি উপলভ্য না থাকলে আমরা প্রদর্শন করব:

কোনও হালকা সেন্সর উপলব্ধ নেই

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

এখন, আপনার অ্যাপ্লিকেশনটি কেবল এমন ডিভাইসে ডাউনলোড করা যেতে পারে যেখানে একটি কম্পাস সেন্সর রয়েছে।

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

সেন্সরের সাথে যোগাযোগ করা: সেন্সর ম্যানেজার, সেন্সরএভেণ্টস এবং শ্রোতা

ডিভাইসের হালকা সেন্সরটির সাথে যোগাযোগ করতে, আপনাকে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে হবে:

1. সেন্সরম্যানেজারের একটি উদাহরণ পান

সেন্সর ম্যানেজারটি ডিভাইসের সম্পূর্ণ সেন্সর ব্যবহার করার জন্য আপনার প্রয়োজনীয় সমস্ত পদ্ধতি সরবরাহ করে।

শুরু করতে, একটি ভেরিয়েবল তৈরি করুন যা সেন্সরম্যানেজারের একটি উদাহরণ রাখে:

প্রাইভেট সেন্সর ম্যানেজার লাইট সেন্সর ম্যানেজার;

তারপরে, আপনার কনটেক্সট.জেটসিস্টেমসেবার পদ্ধতিটি কল করে এবং প্রসঙ্গটি পাস করার মাধ্যমে সেন্সর ম্যানেজারের একটি উদাহরণ পাওয়া দরকার EN SENSOR_SERVICE যুক্তি:

লাইট সেন্সর ম্যানেজার = (সেন্সর ম্যানেজার) গিস্টিস্টেম সার্ভিস (প্রসঙ্গ। SENSOR_SERVICE);

২.লাইটটেক্সটভিউয়ের একটি রেফারেন্স পান

এর পরে, আমাদের একটি প্রাইভেট সদস্য ভেরিয়েবল তৈরি করতে হবে যা আমাদের টেক্সটভিউ অবজেক্টগুলিকে ধারণ করবে এবং এটি আমাদের টেক্সটভিউতে নির্ধারণ করুন:

প্রাইভেট টেক্সটভিউ লাইটটেক্সটভিউ; ... ... ... লাইটটেক্সটভিউ = (টেক্সটভিউ) সন্ধান ভিউবিআইআইডি (আর.আইডি.লাইটলটেক্সটভিউ);

৩. বর্তমান ডিভাইসে সেন্সর রয়েছে কিনা তা পরীক্ষা করুন

আপনি getDefaultSensor () পদ্ধতিতে কল করে কোনও নির্দিষ্ট সেন্সরে অ্যাক্সেস পেতে পারেন এবং তারপরে প্রশ্নটিতে সেন্সরটি পাস করে। হালকা সেন্সরটির ধরণের ধ্রুবকটি TYPE_LIGHT, সুতরাং আমাদের নিম্নলিখিত ব্যবহার করতে হবে:

লাইট সেন্সর = লাইটসেন্সর ম্যানেজ.জেটডিফল্ট সেন্সর (সেন্সর.টিওয়াইপি.লাইট);

যদি এই ডিভাইসে সেন্সরটি বিদ্যমান না থাকে, তবে getDefaultSensor () পদ্ধতিটি বাতিল হয়ে যাবে এবং আমরা "no_sensor" স্ট্রিংটি প্রদর্শন করব:

স্ট্রিং সেন্সর_অরর = গেটআরসোর্সস ()। গেটস্ট্রিং (আর। স্ট্রিং.নো_সেনসর); যদি (লাইটসেন্সর == নাল) {লাইটটেক্সটভিউ.সেটটেক্সট (সেন্সর_অরর); }}

৪. আপনার সেন্সর শ্রোতাদের নিবন্ধন করুন

যখনই কোনও সেন্সরে নতুন ডেটা থাকে, অ্যান্ড্রয়েড একটি সেন্সরইভেন্ট বস্তু উত্পন্ন করে। এই সেন্সরইভেন্ট অবজেক্টটিতে এমন সংবেদক অন্তর্ভুক্ত রয়েছে যা ইভেন্ট, একটি টাইমস্ট্যাম্প এবং নতুন ডেটার মান উত্পন্ন করে।

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

আমাদের অ্যাপ্লিকেশনটিকে এই সেন্সরভেন্ত অবজেক্ট সম্পর্কে অবহিত করা হয়েছে তা নিশ্চিত করার জন্য, আমাদের সেন্সর ম্যানেজারের রেজিস্টারলিস্টনার () ব্যবহার করে সেই নির্দিষ্ট সেন্সর ইভেন্টের জন্য একটি শ্রোতা নিবন্ধিত করতে হবে।

রেজিস্টারলিস্টনার () পদ্ধতিতে নিম্নলিখিত যুক্তিগুলি গ্রহণ করা হয়:

  • একটি অ্যাপ্লিকেশন বা ক্রিয়াকলাপ প্রসঙ্গে।
  • আপনি যে ধরণের সেন্সর পর্যবেক্ষণ করতে চান তা।
  • যে হারে সেন্সরের নতুন ডেটা প্রেরণ করা উচিত। একটি উচ্চতর হার আপনার অ্যাপ্লিকেশনটিকে আরও ডেটা সরবরাহ করবে তবে এটি আরও বেশি সিস্টেমের সংস্থান, বিশেষত ব্যাটারি লাইফ ব্যবহার করবে। ডিভাইসের ব্যাটারি সংরক্ষণে সহায়তা করতে, আপনার অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় সর্বনিম্ন পরিমাণের জন্য আপনাকে অনুরোধ করা উচিত। আমি সেন্সর ম্যানেজ.আর সেনসোর_ড্লে_নির্মাল ব্যবহার করতে যাচ্ছি, যা প্রতি 200,000 মাইক্রোসেকেন্ডে (0.2 সেকেন্ড) একবার নতুন ডেটা প্রেরণ করে।

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

পরিবর্তে, আপনার অ্যাপ্লিকেশনটির অন স্টার্ট () লাইফলাইকেল পদ্ধতিতে সেন্সরগুলি নিবন্ধভুক্ত করা উচিত:

@ ওভাররাইড সুরক্ষিত অকার্যকর অন স্টার্ট ()। সুপার.অনস্টার্ট (); // যদি সেন্সরটি বর্তমান ডিভাইসে উপলভ্য থাকে ... // যদি (লাইট সেন্সর! = নাল) {//….এখন শুনতে শুরু করুন // লাইট সেন্সর ম্যানেজ.আরজিস্টারলিস্টনার (এটি, লাইট সেন্সর, সেন্সর ম্যানেজার.সেনসর_ডেলি_নির্মাল); }}

5. সেন্সরএভেন্টলিস্টনার কলব্যাকগুলি বাস্তবায়ন করুন

সেন্সরএভেন্টলিস্টনার এমন একটি ইন্টারফেস যা সেন্সরম্যানেজারের কাছ থেকে বিজ্ঞপ্তি পায়
যখনই নতুন ডেটা উপলব্ধ থাকে বা সেন্সরের যথার্থতা পরিবর্তন হয়।

সেন্সরইভেন্টলিস্টনার ইন্টারফেসটি প্রয়োগ করতে প্রথম পদক্ষেপটি আমাদের শ্রেণি স্বাক্ষরটি সংশোধন করছে:

সার্বজনীন শ্রেণীর মেইনএকটিভিটি অ্যাপকম্প্যাটঅ্যাক্টিভিটি সেন্সরএভেন্টলিস্টনার প্রয়োগ করে {

আমাদের তখন নিম্নলিখিত কলব্যাক পদ্ধতিগুলি প্রয়োগ করতে হবে:

onSensorChanged ()

এই পদ্ধতিটি প্রতিটি নতুন সেন্সরইভেন্টের প্রতিক্রিয়া হিসাবে ডাকা হয়।

সেন্সর ডেটা প্রায়শই দ্রুত পরিবর্তিত হতে পারে, তাই আপনার অ্যাপ্লিকেশনটি নিয়মিতভাবে সেন্সর চেঞ্জড () পদ্ধতিতে কল করতে পারে। আপনার অ্যাপ্লিকেশনটি সুচারুভাবে চালিয়ে যেতে সহায়তা করার জন্য, আপনার অন সেন্সরচেনজড () পদ্ধতির ভিতরে যতটা সম্ভব কম কাজ করা উচিত।

@ ওভাররাইড পাবলিক অকার্যকর অন সেন্সরচেন্জড (সেন্সরইভেন্ট সেন্সর এভেন্ট) {// করতে // To

onAccuracyChanged ()

যদি সেন্সরের যথার্থতা উন্নতি হয় বা হ্রাস পায়, তবে অ্যান্ড্রয়েড অনঅ্যাকুরিসিচেন্জড () পদ্ধতিটি কল করবে এবং এটিকে সেন্সরপ্যাটাস_উনআরইলিয়েবল বা সেনসোরপ্যাটাস_আসিকিউরসিআইএইচআইটি হিসাবে নতুন নির্ভুলতার মান সহ একটি সেন্সর অবজেক্টটি পাস করবে pass

হালকা সেন্সর নির্ভুলতার পরিবর্তনের খবর দেয় না, তাই আমি অন্যাক্যুরিসিচেন্ডেড () কলব্যাকটি খালি রেখে যাব:

@ ওভাররাইড সার্বজনীন শূন্য অনঅ্যাক্সেসরিচেনজড (সেন্সর সেন্সর, আইটি আই) {// করতে //} To

6. সেন্সর মান পুনরুদ্ধার

যখনই আমাদের একটি নতুন মান রয়েছে, আমাদের অন সেন্সরচেন্জড () পদ্ধতিটি কল করতে হবে এবং "লাইট_সেন্সর" স্ট্রিংটি পুনরুদ্ধার করতে হবে। তারপরে আমরা স্ট্রিংয়ের স্থানধারক পাঠ্য (% 1 $ .2f) ওভাররাইড করতে পারি এবং আমাদের টেক্সটভিউয়ের অংশ হিসাবে আপডেট হওয়া স্ট্রিংটি প্রদর্শন করতে পারি:

@ ওভাররাইড পাবলিক অকার্যকর onSensorChanged (SensorEvent sensorEvent) {// সেন্সরের বর্তমান মান // ফ্লোট কারেন্টভ্যালু = সেন্সরএভেন্ট.ভ্যালু; // "হালকা_সেন্সর" স্ট্রিংটি পুনরুদ্ধার করুন, নতুন মানটি সন্নিবেশ করুন এবং এটি ব্যবহারকারীর কাছে প্রদর্শিত করুন (লাইটটেক্সটভিউ.সেটটেক্সট (গেটআরসোর্সস))। গেটস্ট্রিং (আর। স্ট্রিং.লাইট_সেন্সার, কারেন্টভ্যালু)); }

Your. আপনার শ্রোতাদের নিবন্ধন করুন

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

আপনার অ্যাপ্লিকেশনটি পটভূমিতে থাকাকালীন সেন্সর ইভেন্টগুলি শোনার জন্য, আপনার প্রকল্পের অনস্টপ () লাইফসাইকেল পদ্ধতিতে অনিবন্ধনদীপনকারী () যুক্ত করুন:

@ ওভাররাইড সুরক্ষিত অকার্যকর অনটপ () {সুপার.অনস্টপ (); lightSensorManager.unregisterListener (এই); }

মনে রাখবেন যে অ্যান্ড্রয়েড .0.০-এর মতো অন-পজ ()-এ আপনার শ্রোতাদের নিবন্ধভুক্ত করা উচিত নয় এবং উচ্চতর অ্যাপ্লিকেশনগুলি স্প্লিট-স্ক্রিন এবং চিত্র-ইন-পিকচার মোডে চলতে পারে, যেখানে তারা বিরামপ্রাপ্ত অবস্থায় রয়েছে, তবে অনস্ক্রিনে দৃশ্যমান থাকবে।

অ্যান্ড্রয়েডের হালকা সেন্সর ব্যবহার করে: সম্পূর্ণ কোড

উপরের সমস্ত পদক্ষেপগুলি শেষ করার পরে, আপনার প্রকল্পের মূল ক্রিয়াকলাপটি এর মতো দেখতে হবে:

আমদানি android.support.v7.app.appCompatActivity; আমদানি android.os.Bundle; আমদানি android.content.Context; আমদানি android.hardware.Sensor; আমদানি android.hardware.SensorEvent; আমদানি android.hardware.SensorEventListener; আমদানি android.hardware.SensorManager; আমদানি android.widget.TextView; পাবলিক ক্লাস মাইনঅ্যাক্টিভিটি অ্যাপকম্প্যাটএটিভিটি প্রসারিত করে // সেন্সরএভেন্টলিস্টনার ইন্টারফেস প্রয়োগ করুন // সেন্সরএভেন্টলিস্টনার প্রয়োগ করুন {// আপনার ভেরিয়েবলগুলি তৈরি করুন // ব্যক্তিগত সেন্সর লাইট সেন্সর; প্রাইভেট সেন্সর ম্যানেজার লাইট সেন্সর ম্যানেজার; প্রাইভেট টেক্সটভিউ লাইটটেক্সটভিউ; @ ওভাররাইড সুরক্ষিত অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); setContentView (R.layout.activity_main); লাইটটেক্সটভিউ = (টেক্সটভিউ) সন্ধান করুন ভিউবিআইআইডি (আর.আইডি.লাইটলটেক্সটভিউ); // সেন্সর ম্যানেজারের একটি উদাহরণ পান // হালকা সেন্সর ম্যানেজার = (সেন্সর ম্যানেজার) getSystemService (প্রসঙ্গ। SENSOR_SERVICE); // একটি হালকা সেন্সর জন্য পরীক্ষা করুন // লাইট সেন্সর = লাইটসেন্সর ম্যানেজ। বিজেট ডেফল্ট সেন্সর (সেন্সর। টিওয়াইপি.লাইট); // যদি লাইট সেন্সরটি বিদ্যমান না থাকে তবে একটি ত্রুটি প্রদর্শন করুন // স্ট্রিং সেন্সর_অরর = getResferences () get getString (R.string.no_sensor); যদি (লাইটসেন্সর == নাল) {লাইটটেক্সটভিউ.সেটটেক্সট (সেন্সর_অরর); St} @ ওভাররাইড সুরক্ষিত অকার্যকর অন স্টার্ট () {সুপার.অনস্টার্ট (); // যদি সেন্সরটি বর্তমান ডিভাইসে উপলভ্য থাকে ... // যদি (লাইট সেন্সর! = নাল) {// .......... তবে শ্রোতার নিবন্ধন করুন // লাইট সেন্সর ম্যানেজ.আরজিস্টারলিস্টনার (এটি, লাইট সেন্সর, // আপনি কতবার চান তা উল্লেখ করুন নতুন ডেটা গ্রহণ করুন // সেন্সর ম্যানেজ। সেনসোর_ড্লে_এনআরএমএল); Top} @ ওভাররাইড সুরক্ষিত শূন্য অনসটপ () {সুপার.অনসটপ (); // আপনার শ্রোতার তালিকাভুক্ত করুন // হালকা সেন্সরমনেজ.আরনজিস্টারলিস্টেনার (এটি); Ens @ ওভাররাইড পাবলিক অকার্যকর onSensorChanged (সেন্সরএভেন্ট সেন্সর এভেন্ট) {// সেন্সরের বর্তমান মান // ফ্লোট কারেন্টভ্যালু = সেন্সরএভেন্ট.ভ্যালু; // "হালকা_সেন্সর" স্ট্রিংটি পুনরুদ্ধার করুন, নতুন মান সন্নিবেশ করুন এবং টেক্সটভিউ // লাইটটেক্সটভিউ.সেটটেক্সট (গেটআরসোর্সস ()। গেট স্ট্রিং (আর। স্ট্রিং.লাইট_সেন্সার, কারেন্টভ্যালু)) আপডেট করুন; } @ ওভাররাইড // যদি সেন্সরের যথার্থতা বদলে যায়… .অ্যাপ্যুসিটি সার্বিকভাবে অ্যাকুয়্যারসিচেন্জড (সেন্সর সেন্সর, ইন্ট আই) {// টু // //} TO

আপনার সম্পন্ন অ্যান্ড্রয়েড সেন্সর অ্যাপ্লিকেশন পরীক্ষা করুন

শারীরিক অ্যান্ড্রয়েড স্মার্টফোন বা ট্যাবলেটে এই অ্যাপ্লিকেশনটি পরীক্ষা করতে:

  • আপনার ডিভাইসে প্রকল্পটি ইনস্টল করুন (Android স্টুডিও সরঞ্জামদণ্ড থেকে "রান> রান" নির্বাচন করে) select
  • যদিও এটি ডিভাইসের মধ্যে পরিবর্তিত হয়, হালকা সেন্সরটি প্রায়শই পর্দার উপরের ডানদিকে থাকে। আলোর স্তরের কারসাজি করতে, আপনার ডিভাইসটিকে আরও কাছে নিয়ে যান এবং তারপরে হালকা উত্স থেকে আরও দূরে যান। বিকল্পভাবে, আপনি আলোকে আটকানোর জন্য, আপনার নিজের হাত দিয়ে ডিভাইসটি coveringাকতে চেষ্টা করতে পারেন। "হালকা সেন্সর" মানটি বৃদ্ধি এবং হ্রাস হওয়া উচিত, এটি উপলব্ধ আলোর পরিমাণের উপর নির্ভর করে।

আপনি যদি কোনও অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইস (এভিডি) ব্যবহার করেন, তবে এমুলেটরটিতে ভার্চুয়াল সেন্সর নিয়ন্ত্রণের একটি সেট রয়েছে যা আপনি বিভিন্ন সেন্সরের ইভেন্টগুলি সিমুলেট করতে ব্যবহার করতে পারেন। আপনি এই ভার্চুয়াল সেন্সর নিয়ন্ত্রণগুলি এমুলেটরটির "বর্ধিত নিয়ন্ত্রণগুলি" উইন্ডোর মাধ্যমে অ্যাক্সেস করতে পারেন:

  • আপনার এভিডিতে অ্যাপ্লিকেশনটি ইনস্টল করুন।
  • AVD এর পাশাপাশি, আপনি বোতামগুলির একটি স্ট্রিপ দেখতে পাবেন। তিনটি বিন্দুযুক্ত "আরও" বোতামটি সন্ধান করুন (যেখানে নিম্নলিখিত স্ক্রিনশটে কার্সারটি অবস্থিত) এবং এটিতে একটি ক্লিক দিন। এটি "বর্ধিত নিয়ন্ত্রণ" উইন্ডোটি চালু করে।

  • বাম-হাতের মেনুতে, "ভার্চুয়াল সেন্সরগুলি" নির্বাচন করুন।
  • "অতিরিক্ত সেন্সর" ট্যাবটি নির্বাচন করুন। এই ট্যাবে বিভিন্ন স্লাইডার রয়েছে যা আপনি বিভিন্ন অবস্থান এবং পরিবেশগত সেন্সর ইভেন্টগুলি অনুকরণ করতে ব্যবহার করতে পারেন।

  • সিমুলেটেড আলোর স্তর পরিবর্তন করতে "হালকা (লাক্স)" স্লাইডারটি সন্ধান করুন এবং এটিকে বাম এবং ডানদিকে টেনে আনুন। আপনার অ্যাপ্লিকেশনটির রিয়েল টাইমে এই পরিবর্তনশীল মানগুলি প্রদর্শন করা উচিত।

আপনি সম্পূর্ণ প্রকল্পটি গিটহাব থেকে ডাউনলোড করতে পারেন।

অ্যান্ড্রয়েডের নৈকট্য সেন্সর সহ দূরত্ব পরিমাপ

পরিবেশগত সেন্সর থেকে তথ্য কীভাবে পুনরুদ্ধার করা যায় তা আমরা এখনই দেখেছি, আপনি কীভাবে এই জ্ঞানটি প্রয়োগ করতে পারবেন তা দেখুন অবস্থান সেন্সর.

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

ইউজার ইন্টারফেস তৈরি করা হচ্ছে

আমি অনস্ক্রিনের নিকটবর্তী ডেটা প্রদর্শন করতে যাচ্ছি, যাতে আপনি এটি রিয়েল টাইমে আপডেট দেখতে পারেন can জিনিসগুলি সহজ রাখতে সহায়তা করতে আসুন আমাদের আগের অ্যাপ্লিকেশন থেকে লেআউটটির অনেকগুলি পুনরায় ব্যবহার করা যাক:

এরপরে, আপনার স্ট্রিং.এক্সএমএল ফাইলটি খুলুন এবং একটি "প্রক্সিমিটি_সেনসেডার" স্ট্রিং তৈরি করুন। আবারও, এই স্ট্রিংটিতে একটি স্থানধারক থাকা দরকার যা শেষ পর্যন্ত প্রক্সিমিটি সেন্সর থেকে প্রাপ্ত ডেটা দ্বারা পপুলেট হবে:

নৈকট্য সেন্সর প্রক্সিমিটি সেন্সর:% 1 $ .2f কোনও নৈকট্য সেন্সর উপলব্ধ নেই

প্রক্সিমিটি সেন্সর থেকে ডেটা প্রাপ্ত করা

লাইট সেন্সরের মতোই, অ্যান্ড্রয়েডের প্রক্সিমিটি সেন্সর একটি একক ডেটা মান দেয়, যার অর্থ আমরা আমাদের আগের অ্যাপ্লিকেশন থেকে কোডের অনেকাংশ পুনরায় ব্যবহার করতে পারি। তবে কয়েকটি বড় পার্থক্য রয়েছে, আরও কিছু নামের সাথে সম্পর্কিত পরিবর্তনগুলি যা এই কোডটি অনুসরণ করা সহজ করে তোলে:

  • সেন্সর ম্যানেজারের একটি উদাহরণ তৈরি করুন, যা এবার প্রায় আমি "প্রক্সিমিটি সেন্সর ম্যানেজার" নামকরণ করতে যাচ্ছি।
  • "প্রক্সিমিটি সেন্সর ম্যানেজার" এর একটি উদাহরণ পান।
  • "প্রক্সিমিটিেক্সটভিউ" তে একটি রেফারেন্স তৈরি করুন।
  • GetDefaultSensor () পদ্ধতিটি কল করুন এবং এটি TYPE_PROXIMITY সেন্সরটি পাস করুন।
  • প্রক্সিমিটি সেন্সরের জন্য শ্রোতাদের নিবন্ধন করুন এবং নিবন্ধন করুন।

এই টুইটগুলি করার পরে, আপনার নিম্নলিখিতগুলি দিয়ে শেষ করা উচিত:

আমদানি android.support.v7.app.appCompatActivity; আমদানি android.os.Bundle; আমদানি android.content.Context; আমদানি android.hardware.Sensor; আমদানি android.hardware.SensorEvent; আমদানি android.hardware.SensorManager; আমদানি android.hardware.SensorEventListener; আমদানি android.widget.TextView; পাবলিক ক্লাস মেইনএকটিভিটি অ্যাপকম্প্যাটএটিভিটি প্রসারিত করে // সেন্সরএভেন্টলিস্টনার ইন্টারফেস প্রয়োগ করুন // সেন্সরএভেন্টলিস্টনার প্রয়োগ করুন imple // আপনার ভেরিয়েবলগুলি তৈরি করুন // ব্যক্তিগত সেন্সর প্রক্সিমিটি সেন্সর; প্রাইভেট সেন্সর ম্যানেজার প্রক্সিমিটি সেন্সর ম্যানেজার; প্রাইভেট টেক্সটভিউ প্রক্সিমিটিটেক্সটভিউ; @ ওভাররাইড সুরক্ষিত অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); setContentView (R.layout.activity_main); প্রক্সিমিটিটেক্সটভিউ = (টেক্সটভিউ) সন্ধান ভিউবিআইআইডি (আর.আইডি.প্রক্সিমিটিটেক্সটভিউ); // সেন্সর ম্যানেজারের একটি উদাহরণ পান // প্রক্সিমিটিসেন্সর ম্যানেজার = (সেন্সর ম্যানেজার) getSystemService (প্রসঙ্গ। SENSOR_SERVICE); // একটি প্রক্সিমিটি সেন্সর পরীক্ষা করুন // প্রক্সিমিটি সেন্সর = প্রক্সিমিটি সেন্সর ম্যানেজআর্ট ডেফল্ট সেন্সর (সেন্সর.টিওয়াইপিপ্রসাইসিটি); // যদি প্রক্সিমিটি সেন্সরটি বিদ্যমান না থাকে, তবে একটি ত্রুটি প্রদর্শন করুন // স্ট্রিং সেন্সর_অরর = getRes উত্স ()। গেটস্ট্রিং (আর। স্ট্রিং.নো_সেেন্সর); যদি (প্রক্সিমিটিসেন্সর == নাল) x প্রক্সিমিটিটেক্সটভিউ.সেটটেক্সট (সেন্সর_অরর); St} @ ওভাররাইড সুরক্ষিত অকার্যকর অন স্টার্ট () {সুপার.অনস্টার্ট (); // যদি সেন্সরটি বর্তমান ডিভাইসে উপলভ্য থাকে ... // যদি (প্রক্সিমিটিসেন্সর! = নাল)… //….একটি শ্রোতার নিবন্ধন করুন // প্রক্সিমিটি সেন্সর ম্যানেজ.আরজিস্টারলিস্টনার (এটি, প্রক্সিমিটি সেন্সর, // আপনি কতবার চান তা উল্লেখ করুন নতুন ডেটা গ্রহণ করুন // সেন্সর ম্যানেজ। সেনসোর_ড্লে_এনআরএমএল); Top} @ ওভাররাইড সুরক্ষিত শূন্য অনসটপ () {সুপার.অনসটপ (); // সিস্টেমের সংস্থান সংরক্ষণ করার জন্য আপনার শ্রোতার তালিকাভুক্ত করুন // প্রক্সিমিটিসেন্সর ম্যানেজ.আরনগ্রিস্টারলিস্টনার (এটি); Ens @ ওভাররাইড পাবলিক অকার্যকর onSensorChanged (সেন্সরএভেন্ট সেন্সর এভেন্ট) {// সেন্সরের বর্তমান মান // ফ্লোট কারেন্টভ্যালু = সেন্সরএভেন্ট.ভ্যালু; // "প্রক্সিমিটি_সেন্সর" স্ট্রিংটি পুনরুদ্ধার করুন, নতুন মান সন্নিবেশ করুন এবং টেক্সটভিউ // প্রক্সিমিটিটেক্সটভিউ.সেটটেক্সট (getRes উত্স ()। GetString (আর। স্ট্রিং.প্রক্সিমিটি_সেন্সর, কারেন্টভ্যালু)) আপডেট করুন; } @ ওভাররাইড // যদি সেন্সরের যথার্থতা বদলে যায়… .অ্যাপ্যুসিচুসিচেনজড পাবলিক অকার্যকর (সেন্সর সেন্সর, ইন্ট আই) {//...TO ডিও //}}

পরীক্ষা: ব্যবহারকারী তাদের ডিভাইসের কতটা কাছাকাছি?

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

কেবল সচেতন থাকুন যে ডিভাইসগুলির মধ্যে প্রক্সিমিটি সেন্সরগুলি পৃথক হতে পারে। কিছু ডিভাইস কেবল দুটি সান্নিধ্যের মান প্রদর্শন করতে পারে - একটিতে "নিকটবর্তী" এবং একটিতে "দূর" নির্দেশ করা যায় - তাই আপনি যদি আপনার শারীরিক অ্যান্ড্রয়েড ডিভাইসে বেশি বৈচিত্র না দেখেন তবে অবাক হবেন না।

কোনও এমুলেটরটিতে এই অ্যাপ্লিকেশনটি পরীক্ষা করতে:

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

আপনি সম্পূর্ণ প্রকল্পটি গিটহাব থেকে ডাউনলোড করতে পারেন।

মোশন সেন্সর: বহুমাত্রিক অ্যারে প্রসেসিং

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

মোশন সেন্সরগুলি আপনাকে সহায়তা করতে পারে:

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

এই চূড়ান্ত বিভাগে, আমরা ঘূর্ণন ভেক্টর সেন্সর (TYPE_ROTATION_VECTOR) ব্যবহার করব। লাইট এবং প্রক্সিমিটি সেন্সরগুলির বিপরীতে, এটি একটি সফ্টওয়্যার সেন্সর যা ডিভাইসের অ্যাক্সিলোমিটার, চৌম্বকীয় এবং জিরোস্কোপ সেন্সরগুলির ডেটাগুলিকে সহযোগিতা করে। যদিও এই সেন্সরটির সাথে কাজ করার জন্য আপনাকে প্রায়শই গাণিতিক রূপান্তর এবং রূপান্তর করতে হয় তবে এটি আপনাকে ডিভাইস সম্পর্কে অত্যন্ত সঠিক-সঠিক তথ্য সরবরাহ করতে পারে।

আমরা এমন একটি অ্যাপ্লিকেশন তৈরি করব যা পরিমাপের জন্য ঘূর্ণন ভেক্টর সেন্সর ব্যবহার করে:

  • পিচ। এটি ডিভাইসের উপরের থেকে নীচের দিকে টিল্ট।
  • রোল। এটি ডিভাইসের বাম থেকে ডান দিকে iltালু।

রিয়েল টাইম পিচ এবং রোল ডেটা প্রদর্শিত হচ্ছে

যেহেতু আমরা দুটি মেট্রিক পরিমাপ করছি, আমাদের দুটি পাঠ্যদর্শন এবং দুটি সম্পর্কিত স্ট্রিং সংস্থান তৈরি করতে হবে:

স্ট্রিং.এক্সএমএল ফাইলটি খুলুন এবং নিম্নলিখিতগুলি যুক্ত করুন:

MotionSensors পিচ সেন্সর:% 1 $ .2f রোল সেন্সর:% 1 $ .2f কোনও গতি সেন্সর উপলব্ধ নেই

আপনার অ্যাপে রোটেশন ভেক্টর সেন্সর ব্যবহার করে

আমরা আমাদের পূর্ববর্তী অ্যাপ্লিকেশনগুলি থেকে কিছু কোড পুনরায় ব্যবহার করব, সুতরাং যে ঘূর্ণন ভেক্টর সেন্সরটির সাথে যোগাযোগ করা হয়েছে সেগুলিগুলিতে ফোকাস করা যাক আমরা আগে যা দেখেছি তার চেয়ে আলাদা।

1. TYPE_ROTATION_VECTOR ব্যবহার করুন

যেহেতু আমরা রোটেশন ভেক্টর সেন্সর নিয়ে কাজ করছি, তাই আমাদের getDefaultSensor () পদ্ধতিটি কল করতে হবে এবং তারপরে এটি TYPE_ROTATION_VECTOR ধ্রুবকটি পাস করতে হবে:

positionSensorManager.getDefaultSensor (Sensor.TYPE_ROTATION_VECTOR);

2. সেন্সর ডেটা অনুবাদ করুন

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

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

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

প্রথমত, ডিভাইস সমন্বয় ব্যবস্থাটি একটি স্ট্যান্ডার্ড 3-অক্ষ, এক্স, ওয়াই, জেড সমন্বিত সিস্টেম, যেখানে তিনটি অক্ষের প্রতিটি বিন্দু একটি 3 ডি ভেক্টর দ্বারা প্রতিনিধিত্ব করা হয়। এর অর্থ আমাদের 9 টি ভাসমান মান তৈরি করতে হবে:

ফ্লোট রোটেশনম্যাট্রিক্স = নতুন ফ্লোট;

এরপরে আমরা এই অ্যারেটি getRotationMatrix () পদ্ধতিতে পাস করতে পারি:

সেন্সরম্যানেজ.জেটরেটেশনম্যাট্রিক্সফ্র্যামভেেক্টর (রোটেশনম্যাট্রিক্স, ভেক্টর); int WorldAxisX = SensorManager.AXIS_X; int WorldAxisZ = SensorManager.AXIS_Z;

পরবর্তী পদক্ষেপটি, ডিভাইসের বর্তমান অবস্থানের উপর ভিত্তি করে সেন্সর ডেটা পুনর্নির্মাণের জন্য সেন্সর-ম্যানেজ.আরেম্যাপকর্ডিনেট সিস্টেম () পদ্ধতি ব্যবহার করছে।

সেন্সরমনেজ.আরেম্যাপকর্ডিনেট সিস্টেম () পদ্ধতিটি নিম্নলিখিত যুক্তিগুলি গ্রহণ করে:

  • আসল আবর্তন ম্যাট্রিক্স।
  • আপনি যে অক্ষগুলি পুনর্নির্মাণ করতে চান তা।
  • আপনি যে নতুন অ্যারে ডেটা নিয়ে পপুলার করছেন সেই অ্যারেটি।

আমি আমার অ্যাপটিতে যে কোডটি ব্যবহার করব তা এখানে রয়েছে:

ভাসা সমন্বিতরোটেশনম্যাট্রিক্স = নতুন ফ্লোট; সেন্সরমনেজ.আরেম্যাপকর্ডিনেটসিস্টেম (রোটেশনম্যাট্রিক্স, ওয়ার্ল্ডএক্সিসএক্স, ওয়ার্ল্ডঅ্যাকিসজেড, অ্যাডজাস্টেডরোটেশনম্যাট্রিক্স);

অবশেষে, আমরা সেন্সর-ম্যানেজ.জেট ওরিয়েন্টেশন কল করব এবং এটি অ্যাডজাস্টেড রোটেশনম্যাট্রিক্স ব্যবহার করতে বলব:

সেন্সর ম্যানেজ.জেট ওরিয়েন্টেশন (অ্যাডজাস্ট্রোটেশনম্যাট্রিক্স, ওরিয়েন্টেশন);

3. স্থানধারক স্ট্রিং আপডেট করুন

যেহেতু আমাদের কাছে দুটি সেট ডেটা রয়েছে (পিচ এবং রোল), আমাদের দুটি পৃথক স্থানধারক স্ট্রিং পুনরুদ্ধার করতে হবে, তাদেরকে সঠিক মান দিয়ে পপুলেট করতে হবে এবং তারপরে সংশ্লিষ্ট পাঠ্যদর্শনটি আপডেট করুন:

পিচটেক্সটভিউ.সেটটেক্সট (গেটআরসোর্সস ()। গেটস্ট্রিং (আর। স্ট্রিং.পিচ_সেন্সর, পিচ)); রোলটেক্সটভিউ.সেটটেক্সট (গেটআরসোর্সস ()। গেটস্ট্রিং (আর। স্ট্রিং। রোল_সেন্সর, রোল));

একাধিক সেন্সর ডেটা প্রদর্শন করা হচ্ছে: সমাপ্ত কোড

উপরের পদক্ষেপগুলি সম্পাদন করার পরে, আপনার মেইনএ্যাকটিভিটির কিছু দেখতে এমন হওয়া উচিত:

আমদানি android.app.Activity; আমদানি android.os.Bundle; আমদানি android.hardware.Sensor; আমদানি android.hardware.SensorEvent; আমদানি android.hardware.SensorEventListener; আমদানি android.hardware.SensorManager; আমদানি android.widget.TextView; সার্বজনীন শ্রেনী মেইনএকটিভিটি সেন্সরএভেন্টলিস্টনার-প্রাইভেট সেন্সর ম্যানেজার মোশনসেন্সর ম্যানেজারের ক্রিয়াকলাপ প্রয়োগ করে; বেসরকারী সেন্সর গতি সেন্সর; প্রাইভেট টেক্সটভিউ পিচটেক্সটভিউ; প্রাইভেট টেক্সটভিউ রোলটেক্সটভিউ; ব্যক্তিগত স্ট্যাটিক ফাইনাল ইন SENSOR_DELAY = 500 * 1000; প্রাইভেট স্ট্যাটিক ফাইনাল ইন FROM_RADS_TO_DEGS = -57; @ ওভাররাইড সুরক্ষিত অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); setContentView (R.layout.activity_main); পিচটেক্সটভিউ = (টেক্সটভিউ) সন্ধান ভিউবিআইআইডি (আর.আইডি.পিচটেক্সটভিউ); রোলটেক্সটভিউ = (টেক্সটভিউ) সন্ধান ভিউবিআইআইডি (R.id.rollTextView); চেষ্টা করুন {মোশনসেন্সর ম্যানেজার = (সেন্সর ম্যানেজার) getSystemService (Activity.SENSOR_SERVICE); মোশনসেন্সর = মোশনসেন্সার ম্যানেজ.জেটডিফল্টসেন্সর (সেন্সর। TYPE_ROTATION_VECTOR); মোশনসেন্সর ম্যানেজ.আরজিস্টারলিস্টনার (এটি, মোশন সেন্সর, SENSOR_DELAY); } ক্যাচ (ব্যতিক্রম ই) itch পিচটেক্সটভিউ.সেটটেক্সট (আর। স্ট্রিং.নো_সেনসর); rollTextView.setText (R.string.no_sensor); Cc} @ ওভাররাইড সার্বজনীন শূন্যর উপর ACuracyChanged (সেন্সর সেন্সর, int নির্ভুলতা) do // করতে // To @ ওভাররাইড পাবলিক শূন্যপদ onSensorChanged (সেন্সর ইভেন্ট) {যদি (ইভেন্ট.সেেন্সর == গতি সেন্সর) {আপডেট (ইভেন্ট.ভ্যালু); }} বেসরকারী শূন্য আপডেট (ফ্লোট ভেক্টর) {// রোটেশন ম্যাট্রিক্স গণনা // ফ্লোট রোটেশনম্যাট্রিক্স = নতুন ফ্লোট; সেন্সরম্যানেজ.জেটরেটেশনম্যাট্রিক্সফ্র্যামভেেক্টর (রোটেশনম্যাট্রিক্স, ভেক্টর); int WorldAxisX = SensorManager.AXIS_X; int WorldAxisZ = SensorManager.AXIS_Z; // ক্রিয়াকলাপের বর্তমান ওরিয়েন্টেশনের উপর ভিত্তি করে ম্যাট্রিক্স পুনরায় ম্যাপ করুন // ফ্লোট অ্যাডজাস্টেডরোটেশনম্যাট্রিক্স = নতুন ফ্লোট; সেন্সরমনেজ.আরেম্যাপকর্ডিনেটসিস্টেম (রোটেশনম্যাট্রিক্স, ওয়ার্ল্ডএক্সিসএক্স, ওয়ার্ল্ডঅ্যাকিসজেড, অ্যাডজাস্টেডরোটেশনম্যাট্রিক্স); // ডিভাইসগুলির ওরিয়েন্টেশন গুনুন // ফ্লোট ওরিয়েন্টেশন = নতুন ফ্লোট; // getOrientation () পদ্ধতি // সেন্সর ম্যানেজ। বিজেট ওরিয়েন্টেশন (অ্যাডজাস্ট্রোটেশনম্যাট্রিক্স, ওরিয়েন্টেশন) এ ভাসমান মানগুলির অ্যারে সরবরাহ করুন; ভাসা পিচ = অভিমুখীকরণ * FROM_RADS_TO_DEGS; ভাসা রোল = অভিযোজন * FROM_RADS_TO_DEGS; // পিচ এবং রোল মানগুলির সাথে টেক্সটভিউগুলি আপডেট করুন // পিচটেক্সটভিউ.সেটটেক্সট (গেটরেসোর্সস ()। গেটস্ট্রিং (আর। স্ট্রিং.পিচ_সেন্সর, পিচ)); রোলটেক্সটভিউ.সেটটেক্সট (গেটআরসোর্সস ()। গেটস্ট্রিং (আর। স্ট্রিং। রোল_সেন্সর, রোল)); }}

আপনি সম্পূর্ণ প্রকল্পটি গিটহাব থেকে ডাউনলোড করতে পারেন।

আমাদের চূড়ান্ত অ্যান্ড্রয়েড সেন্সর অ্যাপ্লিকেশন পরীক্ষা করা

একটি শারীরিক অ্যান্ড্রয়েড স্মার্টফোন বা ট্যাবলেটে এই রোটেশন ভেক্টর অ্যান্ড্রয়েড সেন্সর অ্যাপ্লিকেশনটি পরীক্ষা করতে:

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

আপনি যদি কোনও এমুলেটরটিতে আপনার প্রকল্পটি পরীক্ষা করে থাকেন:

  • আপনার এভিডিতে অ্যাপ্লিকেশনটি ইনস্টল করুন।
  • "বর্ধিত নিয়ন্ত্রণ" উইন্ডোটি চালু করে "আরও" নির্বাচন করুন।
  • বাম-হাতের মেনুতে, "ভার্চুয়াল সেন্সরগুলি" নির্বাচন করুন।
  • নিশ্চিত করুন যে "অ্যাক্সিলোমিটার" ট্যাবটি নির্বাচিত হয়েছে। এই ট্যাবটিতে এমন নিয়ন্ত্রণ রয়েছে যা ডিভাইসের অবস্থান এবং দিকনির্দেশে পরিবর্তনগুলি অনুকরণ করতে পারে।
  • বিভিন্ন অ্যাপ্লিকেশন "রোল সেন্সর" কীভাবে প্রভাবিত করে তা দেখতে বিভিন্ন স্লাইডার (ঘোরান: জেড-রট, এক্স-রট, ওয়াই-রট; এবং সরান: এক্স, ওয়াই এবং জেড) এবং বিভিন্ন "ডিভাইস রোটেশন" বোতামগুলির সাথে পরীক্ষার চেষ্টা করুন "এবং" পিচ সেন্সর "মানগুলি।

মোড়ক উম্মচন

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

আপনি কি এমন কোনও অ্যান্ড্রয়েড অ্যাপ্লিকেশন দেখেছেন যা আকর্ষণীয় বা অনন্য উপায়ে সেন্সর ব্যবহার করে? নীচের মতামত আমাদের জানতে দিন!

প্রায় এক বছর আগে রিয়েলমে ওপ্পো থেকে বিদায় নিয়েছে এবং সিদ্ধান্ত নিয়েছে যে এটি তার নিজের মতো করে একটি পূর্ণাঙ্গ স্মার্টফোন প্লেয়ার হয়ে উঠবে। তার পর থেকে, সংস্থাটি লাফিয়ে ও সীমাবদ্ধতার দ্বারা বেড...

রিয়েলমে সবেমাত্র এক বছরের পুরানো তবে এটি ইতিমধ্যে দৃ and়ভাবে নিজেকে ভারত এবং অন্যান্য কয়েকটি বাজারের একটি প্রধান খেলোয়াড় হিসাবে প্রতিষ্ঠিত করেছে। সংস্থাটি তার বাজেটের অফারগুলির জন্য পরিচিত, তবে এ...

জনপ্রিয় প্রকাশনা