অ্যান্ড্রয়েড ডিভাইসে স্টেপ কাউন্টার (Step Counter) সেন্সর সাপোর্ট যাচাই
এই টিউটোরিয়ালে শিখব কিভাবে 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.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 19+ / Android 4.4+)
Sensor stepCounterSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (stepCounterSensor != null) {
actionEvent.setText("✓ স্টেপ কাউন্টার সেন্সর সমর্থিত\n" +
"নাম: " + stepCounterSensor.getName() + "\n" +
"টাইপ: হার্ডওয়্যার (অলওয়েজ-অন comune)\n" +
"পাওয়ার: " + stepCounterSensor.getPower() + " mA\n" +
"ম্যাক্স রেঞ্জ: " + stepCounterSensor.getMaximumRange() + " steps\n" +
"রেজোলিউশন: " + stepCounterSensor.getResolution() + " steps");
} else {
actionEvent.setText("✗ স্টেপ কাউন্টার সেন্সর সমর্থিত নয়\n(সফ্টওয়্যার-ভিত্তিক TYPE_STEP_DETECTOR ব্যবহার করুন)");
}
}
}
স্টেপ কাউন্টার vs স্টেপ ডিটেক্টর
| বৈশিষ্ট্য | TYPE_STEP_COUNTER | TYPE_STEP_DETECTOR |
|---|---|---|
| ফাংশন | মোট ধাপ গণনা করে (কিউমুলেটিভ) | প্রতিটি ধাপ ডিটেক্ট করে (ইভেন্ট) |
| রিবুট পর | রিসেট হয় (০ থেকে শুরু) | N/A (ইভেন্ট-ভিত্তিক) |
| পাওয়ার | খুব কম (হার্ডওয়্যার এক্সিলারোমিটার ব্যবহার) | কম |
| API লেভেল | 19 (KitKat) | 19 (KitKat) |
| উপলব্ধতা | মিড-রেঞ্জ+ ফোনে | প্রায় সব ফোনে (সফ্টওয়্যার ফ্যালব্যাক) |
স্টেপ কাউন্টার ডেটা পড়া
SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// event.values[0] = মোট ধাপ সংখ্যা (float, কিন্তু পূর্ণসংখ্যা)
int totalSteps = (int) event.values[0];
// UI আপডেট: "আজকে " + totalSteps + " ধাপ হয়েছে"
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
// রিবুট-টলারেন্ট: বুট টাইম থেকে গড়ে
// SharedPreferences-এ শেষ মান সংরক্ষণ করুন
sensorManager.registerListener(listener, stepCounterSensor, SensorManager.SENSOR_DELAY_NORMAL);
পারমিশন (API 29+ / Android 10+)
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
Android 10+ এ রানটাইম পারমিশন চাইবে।
Google Fit API বিকল্প
হার্ডওয়্যার না থাকলে Google Fit REST API ব্যবহার করে স্ট্রাইড/স্টেপ ডেটা পাওয়া যায়।
ব্যবহারের ক্ষেত্র
- ফিটনেস ট্র্যাকিং অ্যাপ (Google Fit, Samsung Health স 타이ল)
- হেলথ মনিটরিং (দৈনন্দিন লক্ষ্যমাত্রা)
- গেমিফিকেশন (ধাপ চ্যালেঞ্জ)
- বিমা/ওয়েলনেস প্রোগ্রাম
অ্যাপ্লিকেশন চালানো
রান করলে হার্ডওয়্যার স্টেপ কাউন্টার থাকলে বিস্তারিত তথ্য সহ "✓ স্টেপ কাউন্টার সেন্সর সমর্থিত" দেখাবে। বাজেট ফোনে এটি অনুপস্থিত থাকতে পারে।
লক্ষ্য করুন
- সেন্সর রিবুটে রিসেট হয় - অ্যাপ লজিকেই হিস্টরি ম্যানেজ করতে হবে
- ব্যাকগ্রাউন্ডে কাজ করে (অলওয়েজ-অন সেন্সর হাব)
- TYPE_STEP_DETECTOR ফ্যালব্যাক হিসেবে ব্যবহার করুন
- ACTIVITY_RECOGNITION পারমিশন (Android 10+) বাধ্যতামূলক