অ্যান্ড্রয়েড ডিভাইসে ডাইনামিক সেন্সর ডিসকভারি সাপোর্ট যাচাই
এই টিউটোরিয়ালে শিখব কিভাবে `SensorManager.isDynamicSensorDiscoverySupported()` মেথড ব্যবহার করে ডিভাইসে ডাইনামিক সেন্সর ডিসকভারি সাপোর্ট আছে কিনা তা যাচাই করতে হয়। ডাইনামিক সেন্সর হলো রানটাইমে যোগ/বিয়োগ হওয়া সেন্সর (যেমন: ব্লুটুথ সenseignement, এক্সটার্ন্যাল সেন্সর হাব)।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
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.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;
TextView actionEvent;
@RequiresApi(api = Build.VERSION_CODES.N)
@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);
// ডাইনামিক সেন্সর ডিসকভারি সাপোর্ট যাচাই (API 24+)
boolean supported = sensorManager.isDynamicSensorDiscoverySupported();
actionEvent.setText("ডাইনামিক সেন্সর ডিসকভারি: " + (supported ? "✓ সমর্থিত" : "✗ সমর্থিত নয়"));
}
}
ডাইনামিক সেন্সর কী?
- সংজ্ঞা: সিস্টেম বুট হওয়ার পর রানটাইমে যোগ বা বিয়োগ হওয়া সেন্সর
- উদাহরণ: ব্লুটুথ হৃৎপিণ্ড দর মনিটর, এক্সটার্ন্যাল সেন্সর হাব, ওয়েয়ারেবল ডিভাইসের সেন্সর
ডাইনামিক সেন্সর লিস্টেনার নিবন্ধন
// ডাইনামিক সেন্সর কনেক্ট/ডিসকানেক্ট লিস্টেনার
SensorManager.DynamicSensorCallback callback = new SensorManager.DynamicSensorCallback() {
@Override
public void onDynamicSensorConnected(Sensor sensor) {
// নতুন সেন্সর যোগ হয়েছে (যেমন: ব্লুটুথ HRM কানেক্টেড)
Log.d("Sensor", "Connected: " + sensor.getName());
// সেন্সর রেজিস্টার করুন
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onDynamicSensorDisconnected(Sensor sensor) {
// সেন্সর ডিসকানেক্ট হয়েছে
Log.d("Sensor", "Disconnected: " + sensor.getName());
sensorManager.unregisterListener(listener, sensor);
}
};
// কলব্যাক রেজিস্টার
sensorManager.registerDynamicSensorCallback(callback);
// আনরেজিস্টার (onDestroy-এ)
sensorManager.unregisterDynamicSensorCallback(callback);
সাধারণ ডাইনামিক সেন্সর টাইপ
| সেন্সর টাইপ | ব্যাখ্যা |
|---|---|
| TYPE_HEART_RATE | ব্লুটুথ হৃৎপিণ্ড দর মনিটর (চেস্ট স্ট্র্যাপ, ওয়াচ) |
| TYPE_STEP_COUNTER | ব্লুটুথ পেডোমিটার/ফিটনেস ব্যান্ড |
| TYPE_POSE_6DOF | ARCore/ব্লুটুথ পোজ ট্র্যাকার |
| TYPE_HEAD_TRACKER | হেডফোন হেড ট্র্যাকিং (Spatial Audio) |
ব্যবহারের ক্ষেত্র
- ফিটনেস অ্যাপ - বাহ্যিক হৃৎপিণ্ড দর মনিটর সাপোর্ট
- হেলথ মনিটরিং - এক্সটার্ন্যাল মেডিকেল সেন্সর
- AR/VR - বাহ্যিক পোজ ট্র্যাকিং ডিভাইস
- স্পেশিয়াল অডিও - হেড ট্র্যাকিং হেডফোন
অ্যাপ্লিকেশন চালানো
রান করলে ডিভাইস যদি ডাইনামিক সেন্সর ডিসকভারি সাপোর্ট করে (প্রায় সকল Android 7.0+ ডিভাইস) তবে "✓ সমর্থিত" দেখাবে।
লক্ষ্য করুন
- API 24+ (Android 7.0+) দরকার
- সাপোর্ট থাকলেও অবশ্য ডাইনামিক সেন্সর থাকবে না (হার্ডওয়্যার-নির্ভর)
- ব্লুটুথ পারমিশন দরকার হলে (API 31+): BLUETOOTH_CONNECT