অ্যান্ড্রয়েড ডিভাইসে এम्बিয়েন্ট টেম্পারেচার (Temperature) সেন্সর সাপোর্ট যাচাই
এই টিউটোরিয়ালে শিখব কিভাবে ডিভাইসে পরিবেশের তাপমাত্রা মাপার সেন্সর (TYPE_AMBIENT_TEMPERATURE) উপলব্ধ কিনা তা যাচাই করতে হয়। নোট: অধিকাংশ ফোনে এই সেন্সর থাকে না, এটি সাধারণত 스페সিয়ালাইজড ডিভাইস বা কিছু নির্দিষ্ট মডেলে পাওয়া যায়।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
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 tempSensor = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if (tempSensor != null) {
actionEvent.setText("✓ টেম্পারেচার সেন্সর সমর্থিত\n" +
"নাম: " + tempSensor.getName() + "\n" +
"বেন্ডর: " + tempSensor.getVendor() + "\n" +
"ম্যাক্স রেঞ্জ: " + tempSensor.getMaximumRange() + " °C\n" +
"রেজোলিউশন: " + tempSensor.getResolution() + " °C\n" +
"পাওয়ার: " + tempSensor.getPower() + " mA");
} else {
actionEvent.setText("✗ টেম্পারেচার সেন্সর সমর্থিত নয়\n(আপনার ডিভাইসে এम्बিয়েন্ট টেম্পারেচার সেন্সর নেই)");
}
}
}
গুরুত্বপূর্ণ সত্য: ফোনের তাপমাত্রা vs পরিবেশের তাপমাত্রা
| সেন্সর টাইপ | পরিমাপ করে | উপলব্ধতা |
|---|---|---|
| TYPE_AMBIENT_TEMPERATURE | পরিবেশের তাপমাত্রা (Air temperature) | খুব কম ডিভাইসে (Samsung Galaxy S4, Note 3, কিছু Rugged ফোন) |
| TYPE_TEMPERATURE (ডিপ্রিকেটেড) | ডিভাইসের অভ্যন্তরীণ তাপমাত্রা (CPU/ব্যাটারি) | পুরানো ডিভাইসে, এখন TYPE_AMBIENT_TEMPERATURE ব্যবহৃত হয় |
| CPU/ব্যাটারি তাপমাত্রা | থার্মাল ম্যানেজমেন্ট용 (সেন্সর ফ্রেমওয়ার্কে নয়) | ফাইল সিস্টেম থেকে (/sys/class/thermal/) |
CPU/ব্যাটারি তাপমাত্রা পড়া (বিকল্প)
যদি এम्बিয়েন্ট সেন্সর না থাকে, তবে সিস্টেম ফাইল থেকে ডিভাইসের অভ্যন্তরীণ তাপমাত্রা পড়া যায়:
public float getCpuTemperature() {
try {
// সাধারণ পথ (ডিভাইস অনুযায়ী ভিন্ন হতে পারে)
String[] paths = {
"/sys/class/thermal/thermal_zone0/temp",
"/sys/class/thermal/thermal_zone1/temp",
"/sys/devices/virtual/thermal/thermal_zone0/temp"
};
for (String path : paths) {
File file = new File(path);
if (file.exists()) {
BufferedReader br = new BufferedReader(new FileReader(file));
String line = br.readLine();
br.close();
// মান সাধারণত মিলি-ডিগ্রি সেলসিয়াসে (মিলি ডিগ্রি)
return Float.parseFloat(line) / 1000.0f;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return -1; // পাওয়া যায়নি
}
তাপমাত্রা সেন্সর ডেটা পড়া (যদি থাকে)
SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float ambientTemp = event.values[0]; // ডিগ্রি সেলসিয়াসে
// UI আপডেট: "পরিবেশের তাপমাত্রা: " + ambientTemp + "°C"
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
ব্যবহারের ক্ষেত্র
- মeteorological/আবহাওয়া অ্যাপ (যদি হার্ডওয়্যার থাকে)
- ইন্ডাস্ট্রিয়াল মনিটরিং (রাগেড ডিভাইস)
- IoT গেটওয়ে ডিভাইস
অ্যাপ্লিকেশন চালানো
রান করলে অধিকাংশ সাধারণ ফোনে "✗ টেম্পারেচার সেন্সর সমর্থিত নয়" দেখাবে। এটি সাধারণ - বড় অংশ ফোনে এই সেন্সর থাকে না।
লক্ষ্য করুন
- TYPE_AMBIENT_TEMPERATURE = পরিবেশের তাপমাত্রা (বায়ু)
- ফোনের অভ্যন্তরীণ তাপমাত্রা (CPU/ব্যাটারি) ভিন্ন জিনিস
- Samsung Galaxy S4, Note 3, Galaxy S5-এ এই সেন্সর ছিল
- আধুনিক ফোনে (2016+) প্রায় নেই - বডি তাপমাত্রা সেন্সর আলাদা (TYPE_SKIN_TEMPERATURE API 34+)