অ্যান্ড্রয়েড ডিভাইসে ম্যাগনেটোমিটার (Compass) সাপোর্ট যাচাই
এই টিউটোরিয়ালে শিখব কিভাবে SensorManager ব্যবহার করে ডিভাইসে ম্যাগনেটোমিটার (চুম্বकीयক্ষেত্র সেন্সর) উপলব্ধ কিনা তা যাচাই করতে হয়। এটি কম্পাস অ্যাপ বা নেভিগেশন ফিচারের জন্য প্রয়োজনীয়।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project নির্বাচন করে প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট ফাইল
res/layout/activity_main.xml ফাইলে:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:id="@+id/actionEvent"
android:textSize="40sp"
android:layout_marginTop="30dp"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</LinearLayout>
ধাপ ৩: জাভা কোড
src/MainActivity.java ফাইলে:
package com.example.myapplication;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;
TextView actionEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionEvent = findViewById(R.id.actionEvent);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// ম্যাগনেটোমিটার সেন্সর যাচাই
if (sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null) {
actionEvent.setText("✓ ম্যাগনেটোমিটার সমর্থিত");
} else {
actionEvent.setText("✗ ম্যাগনেটোমিটার সমর্থিত নয়");
}
}
}
গুরুত্বপূর্ণ পয়েন্টসমূহ
| কনস্ট্যান্ট | ব্যাখ্যা |
|---|---|
| Sensor.TYPE_MAGNETIC_FIELD | জিওম্যাগনেটিক ফিল্ড সেন্সর (ম্যাগনেটোমিটার) |
| getDefaultSensor() | ডিফল্ট সেন্সর অবজেক্ট রিটার্ন করে, না থাকলে null |
| SensorManager | সেন্সর সার্ভিস অ্যাক্সেসের মূল ক্লাস |
সেন্সর লিস্ট পাওয়ার পদ্ধতি
// সব সেন্সর লিস্ট করা
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
for (Sensor sensor : sensorList) {
Log.d("Sensor", sensor.getName() + " - " + sensor.getType());
}
ম্যাগনেটোমিটার ব্যবহারের ক্ষেত্র
- কম্পাস অ্যাপ্লিকেশন
- ম্যাপ ও নেভিগেশন (উত্তর দিক নির্দেশ)
- মেটাল ডিটেকশন
- AR (Augmented Reality) অ্যাপ
সেন্সর মান পড়ার উদাহরণ
Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0]; // X-axis magnetic field (μT)
float y = event.values[1]; // Y-axis magnetic field (μT)
float z = event.values[2]; // Z-axis magnetic field (μT)
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
sensorManager.registerListener(listener, magneticSensor, SensorManager.SENSOR_DELAY_NORMAL);
অ্যাপ্লিকেশন চালানো
রান করলে ডিভাইসে ম্যাগনেটোমিটার থাকলে "✓ ম্যাগনেটোমিটার সমর্থিত" দেখাবে, অন্যথায় "✗ ম্যাগনেটোমিটার সমর্থিত নয়"।
লক্ষ্য করুন
- অনেক বাজেট ফোনে ম্যাগনেটোমিটার থাকে না
- ট্যাবলেটে প্রায়শই এই সেন্সর অনুপস্থিত থাকে
- সেন্সর লিস্টে TYPE_MAGNETIC_FIELD এবং TYPE_MAGNETIC_FIELD_UNCALIBRATED দুটোই থাকতে পারে