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

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

অ্যান্ড্রয়েড ডিভাইসে এক্সিলারোমিটার (Accelerometer) সেন্সর সাপোর্ট যাচাই

এই টিউটোরিয়ালে শিখব কিভাবে সবচেয়ে বেসিক এবং সর্বव्यাপী সেন্সর এক্সিলারোমিটার ডিভাইসে উপলব্ধ কিনা তা যাচাই করতে হয়। এটি প্রায় সকল অ্যান্ড্রয়েড ডিভাইসে থাকে।

প্রয়োজনীয় ধাপসমূহ

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

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);
        
        // এক্সিলারোমিটার সেন্সর যাচাই
        Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        
        if (accelerometerSensor != null) {
            actionEvent.setText("✓ এক্সিলারোমিটার সমর্থিত\n" +
                "নাম: " + accelerometerSensor.getName() + "\n" +
                "বেন্ডর: " + accelerometerSensor.getVendor() + "\n" +
                "ম্যাক্স রেঞ্জ: ±" + accelerometerSensor.getMaximumRange() + " m/s²\n" +
                "রেজোলিউশন: " + accelerometerSensor.getResolution() + " m/s²\n" +
                "পাওয়ার: " + accelerometerSensor.getPower() + " mA\n" +
                "মিন ডिले: " + accelerometerSensor.getMinDelay() + " μs");
        } else {
            actionEvent.setText("✗ এক্সিলারোমিটার সমর্থিত নয় (অসাধারণ)");
        }
    }
}

এক্সিলারোমিটার সেন্সর বিবরণ

বিষয়বিস্তারিত
সেন্সর টাইপSensor.TYPE_ACCELEROMETER
পরিমাপ৩-অক্ষে লিনিয়ার ত্বরণ (গ্র্যাভিটি সহ)
এককm/s² (মিটার পার সেকেন্ড স্কোয়ার)
API লেভেল1 (Android 1.0 থেকে)
সাধারণ রেঞ্জ±2g, ±4g, ±8g, ±16g (1g = 9.81 m/s²)
উপলব্ধতা৯৯.৯%+ অ্যান্ড্রয়েড ডিভাইসে

র ডেটা পড়া

SensorEventListener listener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        float x = event.values[0]; // X-অক্ষ ত্বরণ
        float y = event.values[1]; // Y-অক্ষ ত্বরণ
        float z = event.values[2]; // Z-অক্ষ ত্বরণ (গ্র্যাভিটি সহ)
        
        // মাত্রা
        double magnitude = Math.sqrt(x*x + y*y + z*z); // ~9.81 স্থির অবস্থায়
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
sensorManager.registerListener(listener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL);

সেন্সর ডिले রেট

কনস্ট্যান্টইন্টারভালব্যবহার
SENSOR_DELAY_NORMAL~200,000 μs (5 Hz)UI রোটেশন, সাধারণ용
SENSOR_DELAY_UI~60,000 μs (16 Hz)UI অ্যানিমেশন
SENSOR_DELAY_GAME~20,000 μs (50 Hz)গেমিং
SENSOR_DELAY_FASTESTহার্ডওয়্যার ডিপেন্ডেন্টউচ্চ ফ্রিকোয়েন্সি অ্যাপ

ব্যবহারের ক্ষেত্র

  • স্ক্রিন রোটেশন (পোর্ট্রেট/ল্যান্ডস্কেপ)
  • শেক ডিটেকশন (অন্ডু, ডাইস রোল)
  • স্টেপ কাউন্টার / পেডোমিটার
  • ফল ডিটেকশন (বৃদ্ধদের সুরক্ষা)
  • গেম কন্ট্রোল (টিল্ট-ভিত্তিক)
  • ভাইব্রেশন অ্যানালিসিস

গ্র্যাভিটি কম্পোনেন্ট পৃথক করা

// হাই-পাস ফিল্টার (লিনিয়ার এক্সিলারেশন পাওয়ার ساده পদ্ধতি)
float[] gravity = new float[3];
float alpha = 0.8f;

@Override
public void onSensorChanged(SensorEvent event) {
    gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
    gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
    gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
    
    float linearX = event.values[0] - gravity[0];
    float linearY = event.values[1] - gravity[1];
    float linearZ = event.values[2] - gravity[2];
}

অ্যাপ্লিকেশন চালানো

রান করলে প্রায় সকল ডিভাইসে বিস্তারিত স্পেসিফিকেশন সহ "✓ এক্সিলারোমিটার সমর্থিত" দেখাবে।

লক্ষ্য করুন

  • এক্সিলারোমিটার সবচেয়ে কম পাওয়ার খরচ করে
  • সিস্টেম নিজে ব্যবহার করে (রোটেশন, স্টেপ কাউন্ট) - তাই সবসময় সক্রিয় থাকে
  • TYPE_LINEAR_ACCELERATION এবং TYPE_GRAVITY সফ্টওয়্যার সেন্সর এক্সিলারোমিটার থেকে তৈরি
  1. অ্যান্ড্রয়েড মোবাইল প্রেশার সেন্সর সাপোর্ট যাচাই

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

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

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