কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েড মোবাইল স্টেপ কাউন্টার সেন্সর সাপোর্ট যাচাই

অ্যান্ড্রয়েড ডিভাইসে স্টেপ কাউন্টার (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_COUNTERTYPE_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+) বাধ্যতামূলক
  1. অ্যান্ড্রয়েড মোবাইল প্রেশার সেন্সর সাপোর্ট যাচাই

  2. অ্যান্ড্রয়েডে বর্তমান Wi-Fi 5 GHz ব্যান্ড সমর্থন করে কিনা যাচাই করুন

  3. অ্যান্ড্রয়েডে Wi-Fi সবসময় আবিষ্কারযোগ্য (Discoverable) কিনা যাচাই করুন

  4. অ্যান্ড্রয়েডে চলমান অ্যাপ্লিকেশন তালিকা পাওয়ার উপায়