एंड्रॉइड में ग्रेविटी सेंसर सपोर्ट जांचें
यह ट्यूटोरियल दिखाता है कि Sensor.TYPE_GRAVITY का उपयोग करके कैसे जांचा जाए कि डिवाइस में ग्रेविटी सेंसर है या नहीं। यह सेंसर गुरुत्वाकर्षण बल को मापता है (एक्सेलेरोमीटर से प्राप्त, सॉफ्टवेयर फ्यूजन)।
चरण 1: प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट (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:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="24dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/sensorStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28sp"
android:textStyle="bold"
android:layout_marginTop="30dp"
android:padding="24dp"
android:background="#E8F5E9"
android:text="जांच हो रही है..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.gravitycheck;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView sensorStatus;
private SensorManager sensorManager;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorStatus = findViewById(R.id.sensorStatus);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
checkGravitySupport();
}
private void checkGravitySupport() {
Sensor gravitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
if (gravitySensor != null) {
sensorStatus.setText("✓ ग्रेविटी सेंसर सपोर्ट करता है");
sensorStatus.setTextColor(0xFF4CAF50);
String info = String.format(
"सेंसर: %s\nवेंडर: %s\nवर्जन: %d\nरेंज: %.1f m/s²\nरिजॉल्यूशन: %.3f m/s²\nपावर: %.3f mA\nन्यूनतम डिले: %d µs",
gravitySensor.getName(),
gravitySensor.getVendor(),
gravitySensor.getVersion(),
gravitySensor.getMaximumRange(),
gravitySensor.getResolution(),
gravitySensor.getPower(),
gravitySensor.getMinDelay()
);
sensorStatus.append("\n\n" + info);
} else {
sensorStatus.setText("✗ ग्रेविटी सेंसर सपोर्ट नहीं करता");
sensorStatus.setTextColor(0xFFF44336);
}
}
}
ग्रेविटी सेंसर vs एक्सेलेरोमीटर
| विशेषता | एक्सेलेरोमीटर (TYPE_ACCELEROMETER) | ग्रेविटी (TYPE_GRAVITY) |
|---|---|---|
| मापता है | कुल त्वरण (ग्रेविटी + यूजर मोशन) | केवल ग्रेविटी घटक |
| प्रकार | हार्डवेयर सेंसर | सॉफ्टवेयर/फ्यूजन सेंसर (आमतौर पर) |
| उपयोग | शेक डिटेक्शन, स्टेप काउंट, ओरिएंटेशन | झुकाव, डिवाइस ओरिएंटेशन, AR |
| मान | गतिशील, शोरयुक्त | स्थिर, स्मूथ (9.8 m/s² नीचे की ओर) |
