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

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

অ্যান্ড্রয়েড ডিভাইসে ব্যারোমেট্রিক প্রেশার (Pressure) সেন্সর সাপোর্ট যাচাই

এই টিউটোরিয়ালে শিখব কিভাবে SensorManager ব্যবহার করে ডিভাইসে ব্যারোমেটার (বায়ুমণ্ডলীয় চাপ) সেন্সর উপলব্ধ কিনা তা যাচাই করতে হয়। এটি высоতা (altitude) মাপা, আবহাওয়া পূর্বাভাস, এবং ইন্ডোর ফ্লোর ডিটেকশনের জন্য ব্যবহৃত হয়।

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

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

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 pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
        
        if (pressureSensor != null) {
            actionEvent.setText("✓ প্রেশার সেন্সর (ব্যারোমেটার) সমর্থিত\n" +
                "নাম: " + pressureSensor.getName() + "\n" +
                "বেন্ডর: " + pressureSensor.getVendor() + "\n" +
                "ম্যাক্স রেঞ্জ: " + pressureSensor.getMaximumRange() + " hPa\n" +
                "রেজোলিউশন: " + pressureSensor.getResolution() + " hPa\n" +
                "পাওয়ার: " + pressureSensor.getPower() + " mA");
        } else {
            actionEvent.setText("✗ প্রেশার সেন্সর সমর্থিত নয়");
        }
    }
}

প্রেশার সেন্সর (ব্যারোমেটার) বিবরণ

বিষয়বিস্তারিত
সেন্সর টাইপSensor.TYPE_PRESSURE
পরিমাপবায়ুমণ্ডলীয় চাপ (Atmospheric pressure)
এককহেক্টোপাস্কেল (hPa) = মিলিবার (mbar)
সাধারণ রেঞ্জ৩০০ - ১১০০ hPa
সমুদ্রতলে স্ট্যান্ডার্ড চাপ১০১৩.২৫ hPa
টেকনোলজিMEMS পিজোরেজিস্টিভ / ক্যাপাসিটিভ
API লেভেল9 (Android 2.3 Gingerbread)
উপলব্ধতামিড-রেঞ্জ+ ফোনে (Samsung Galaxy S3+, Pixel, OnePlus ইত্যাদি)

প্রেশার থেকে উচ্চতা (Altitude) ক্যালকুলেশন

// ব্যারোমেট্রিক ফর্মুলা (ইন্টারন্যাশনল স্ট্যান্ডার্ড অ্যাটমোসফিয়ার)
public float calculateAltitude(float pressure, float seaLevelPressure) {
    // seaLevelPressure: বর্তমান অবস্থানের সমুদ্রস্তরের চাপ (hPa)
    // সাধারণত ১০১৩.২৫ hPa ব্যবহার করা হয়, কিন্তু স্থানীয় আবহাওয়া স্টেশন থেকে আপডেট করা ভালো
    
    return 44330.0f * (1.0f - (float) Math.pow(pressure / seaLevelPressure, 0.1903f));
    // ফলাফল মিটারে
}

// ব্যবহার
float altitude = calculateAltitude(currentPressure, 1013.25f);

প্রেশার সেন্সর ডেটা পড়া

SensorEventListener listener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        float pressure = event.values[0]; // hPa-তে
        
        // উচ্চতা ক্যালকুলেট (স্থানীয় সমুদ্রস্তরের চাপ দরকার)
        float altitude = 44330f * (1f - (float)Math.pow(pressure / 1013.25f, 0.1903f));
        
        Log.d("Pressure", "চাপ: " + pressure + " hPa, উচ্চতা: " + altitude + " m");
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};

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

  • উচ্চতা মাপা (হাইকিং, পর্বতারোহণ, এলিভেশন প্রোফাইল)
  • আবহাওয়া পূর্বাভাস (চাপ পরিবর্তন থেকে ঝড়/বৃষ্টি অনুমান)
  • ইন্ডোর ফ্লোর ডিটেকশন (লিফ্ট/সিডি ব্যবহার ট্র্যাকিং)
  • GPS উচ্চতা আক্যুরেসি উন্নতি (GPS + ব্যারোমেটার ফিউশন)
  • ফ্লাইট মোড ডিটেকশন (দ্রুত চাপ পরিবর্তন)

কালিব্রেশন ও সীমাবদ্ধতা

  • স্থানীয় চাপ দরকার: সঠিক উচ্চতার জন্য বর্তমান সমুদ্রস্তরের চাপ (QNH) জরুরি
  • তাপমাত্রা প্রভাব:তাপমাত্রা পরিবর্তন চাপ প্রভাবিত করে (কম্পেনসেশন দরকার)
  • ড্রিফট:সময়ের সাথে স্নippets ড্রিফট করতে পারে
  • ইন্ডোর ভেন্টিলেশন:এসি/পंखা চাপ পরিবর্তন করতে পারে

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

রান করলে প্রেশার সেন্সর থাকলে (মিড-রেঞ্জ+ ফোনে) বিস্তারিত স্পেসিফিকেশন সহ "✓ প্রেশার সেন্সর সমর্থিত" দেখাবে। বাজেট ফোনে সাধারণত অনুপস্থিত থাকে।

লক্ষ্য করুন

  • GPS উচ্চতা (WGS84 এলিপসয়েড) এবং ব্যারোমেট্রিক উচ্চতা (জিওয়েড) ভিন্ন
  • ওয়ेदার অ্যাপ API থেকে বর্তমান সমুদ্রস্তরের চাপ নিয়ে ক্যালিব্রেট করুন
  • Sensor.TYPE_PRESSURE এখনো ডিপ্রিকেটেড নয়, কিন্তু TYPE_AMBIENT_TEMPERATURE-এর মতো 스페সিয়ালাইজড
  1. অ্যান্ড্রয়েড মোবাইল হিউমিডিটি সেন্সর সাপোর্ট যাচাই

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

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

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