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

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

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

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

প্রক্সিমিটি সেন্সর বিবরণ

বিষয়বিস্তারিত
সেন্সর টাইপSensor.TYPE_PROXIMITY
পরিমাপনিকটবর্তী বস্তুর দূরত্ব (সেন্টিমিটারে)
সাধারণ রেঞ্জ০ - ৫ সেমি (বাইনারি: ০ = নিকট, ম্যাক্স = দূর)
টেকনোলজিইনফ্রা-রেড (IR) LED + ফটোডায়োড
অবস্থানফ্রন্ট ক্যামেরার নিকট (ইয়ারপিসের উপরে)
API লেভেল1 (Android 1.0 থেকে)

প্রক্সিমিটি ডেটা পড়া

SensorEventListener listener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        float distance = event.values[0]; // সেমিতে দূরত্ব
        float maxRange = event.sensor.getMaximumRange();
        
        if (distance >= maxRange) {
            // দূর - কোনো বস্তু নেই
            Log.d("Proximity", "দূর: " + distance + " cm");
        } else {
            // নিকট - বস্তু সনাক্ত (সাধারণত ০.০ বা খুব ছোট মান)
            Log.d("Proximity", "নিকট: " + distance + " cm");
        }
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};

sensorManager.registerListener(listener, proximitySensor, SensorManager.SENSOR_DELAY_NORMAL);

বাইনারি নেচার (Binary Nature)

অধিকাংশ প্রক্সিমিটি সেন্সর বাইনারি আউটপুট দেয়:

  • ০.০ cm (বা খুব ছোট): বস্তু সনাক্ত (নিকট)
  • ম্যাক্স রেঞ্জ (সাধারণত ৫.০ cm): বস্তু নেই (দূর)
  • মাঝপথের মান সাধারণত নেই

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

  • কল সক্রিয় থাকা অবস্থায় স্ক্রিন অফ (ব্যাটারি বাঁচানো, অণিচ্ছাকৃত টাচ রোধ)
  • পকেট মোড (ফোন পকেটে থাকলে লক)
  • জেস্ট কন্ট্রোল (হাত ঘুরিয়ে মিউজিক কন্ট্রোল)
  • অটো ব্রাইটনেস অ্যাডজাস্টমেন্ট (কিছু ডিভাইসে)

কল স্ক্রিন অফ ইমপ্লিমেন্টেশন (উদাহরণ)

// কল স্টেট মনিটর
PhoneStateListener phoneListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
            // কল শুরু - প্রক্সিমিটি মনিটরিং শুরু
            sensorManager.registerListener(proximityListener, proximitySensor, 
                SensorManager.SENSOR_DELAY_NORMAL);
        } else if (state == TelephonyManager.CALL_STATE_IDLE) {
            // কল শেষ - মনিটরিং বন্ধ
            sensorManager.unregisterListener(proximityListener);
            // স্ক্রিন অন করুন (WakeLock রিলিজ)
        }
    }
};

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

রান করলে প্রায় সকল স্মার্টফোনে "✓ প্রক্সিমিটি সেন্সর সমর্থিত" দেখাবে (এটি খুব সাধারণ সেন্সর)। ট্যাবলেটে বা বাজেট ফোনে অনুপস্থিত থাকতে পারে।

লক্ষ্য করুন

  • সেন্সর খুব কম পাওয়ার খরচ করে
  • বাইনারি আউটপুট - সুনির্দিষ্ট দূরত্ব মাপা যায় না
  • কল সময় সিস্টেম স্বয়ংক্রিয়ভাবে ব্যবহার করে (অ্যাপলিকেশন লেভেলে নয়)
  • সার্টিফিকেট/স্ক্রিন প্রোটেক্টর সেন্সর ব্লক করতে পারে
  1. অ্যান্ড্রয়েড মোবাইল প্রেশার সেন্সর সাপোর্ট যাচাই

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

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

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