Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड मोबाइल एक्सेलेरोमीटर सेंसर सपोर्ट करता है या नहीं, कैसे जांचें?

एंड्रॉइड में एक्सेलेरोमीटर सेंसर सपोर्ट जांचें

यह ट्यूटोरियल दिखाता है कि Sensor.TYPE_ACCELEROMETER का उपयोग करके कैसे जांचा जाए कि डिवाइस में एक्सेलेरोमीटर (त्वरण सेंसर) है या नहीं। यह लगभग सभी स्मार्टफोन में मौजूद होता है।

चरण 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="#E3F2FD"
        android:text="जांच हो रही है..."/>

</LinearLayout>

चरण 3: एक्टिविटी कोड (src/MainActivity.java)

package com.example.accelerometercheck;

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);

        checkAccelerometerSupport();
    }

    private void checkAccelerometerSupport() {
        Sensor accelSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

        if (accelSensor != null) {
            sensorStatus.setText("✓ एक्सेलेरोमीटर सपोर्ट करता है");
            sensorStatus.setTextColor(0xFF4CAF50);
            
            String info = String.format(
                "सेंसर: %s\nवेंडर: %s\nवर्जन: %d\nरेंज: ±%.1f g (%.1f m/s²)\nरिजॉल्यूशन: %.3f m/s²\nपावर: %.3f mA\nन्यूनतम डिले: %d µs",
                accelSensor.getName(),
                accelSensor.getVendor(),
                accelSensor.getVersion(),
                accelSensor.getMaximumRange() / 9.81f,
                accelSensor.getMaximumRange(),
                accelSensor.getResolution(),
                accelSensor.getPower(),
                accelSensor.getMinDelay()
            );
            sensorStatus.append("\n\n" + info);
        } else {
            sensorStatus.setText("✗ एक्सेलेरोमीटर सपोर्ट नहीं करता");
            sensorStatus.setTextColor(0xFFF44336);
        }
    }
}

एक्सेलेरोमीटर मूल बातें

एक्सेलेरोमीटर डेटा पढ़ना

SensorEventListener accelListener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];
        
        // कुल त्वरण परिमाण
        float magnitude = (float) Math.sqrt(x*x + y*y + z*z);
        
        // ग्रेविटी घटक हटाकर रैखिक त्वरण प्राप्त करें
        // (TYPE_LINEAR_ACCELERATION सेंसर यह स्वचालित करता है)
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};

// रजिस्टर करें - UI डिले सामान्य ऐप्स के लिए ठीक है
sensorManager.registerListener(accelListener, 
    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
    SensorManager.SENSOR_DELAY_UI);

// गेमिंग के लिए तेज डिले
// SensorManager.SENSOR_DELAY_GAME
// SensorManager.SENSOR_DELAY_FASTEST

सामान्य अनुप्रयोग

  • स्क्रीन रोटेशन: पोर्ट्रेट/लैंडस्केप डिटेक्शन
  • शेक डिटेक्शन: अनडू, डाइस रोल, रिफ्रेश
  • स्टेप काउंटिंग: पैदल चलने का पैटर्न पहचान
  • गेमिंग: टिल्ट कंट्रोल, स्टीयरिंग
  • फ्री फॉल डिटेक्शन: हार्ड ड्राइव पार्किंग, गिरावट अलर्ट
  • जेस्चर: डबल टैप, फ्लिप टू साइलेंस

शेक डिटेक्शन उदाहरण (बोनस)

private static final float SHAKE_THRESHOLD = 15f; // m/s²
private long lastShakeTime = 0;

@Override
public void onSensorChanged(SensorEvent event) {
    float x = event.values[0];
    float y = event.values[1];
    float z = event.values[2];
    
    float gForce = (float) Math.sqrt(x*x + y*y + z*z) - SensorManager.GRAVITY_EARTH;
    
    if (gForce > SHAKE_THRESHOLD) {
        long now = System.currentTimeMillis();
        if (now - lastShakeTime > 1000) { // 1 सेकंड डीबाउंस
            lastShakeTime = now;
            onShakeDetected();
        }
    }
}

private void onShakeDetected() {
    runOnUiThread(() -> Toast.makeText(this, "शेक डिटेक्टेड!", Toast.LENGTH_SHORT).show());
}

चरण 4: टेस्ट करें

  1. किसी भी वास्तविक एंड्रॉइड डिवाइस पर चलाएं
  2. लगभग 100% डिवाइसेज में एक्सेलेरोमीटर होता है
  3. सेंसर डिटेल्स के साथ "सपोर्ट करता है" दिखना चाहिए

एंड्रॉइड मोबाइल एक्सेलेरोमीटर सेंसर सपोर्ट करता है या नहीं, कैसे जांचें?

  1. Android में वर्तमान Wi-Fi 5 GHz बैंड सपोर्ट की जांच कैसे करें Android में वर्तमान Wi-Fi 5 GHz बैंड सपोर्ट की जांच कैसे करें

    परिचयएंड्रॉइड डिवाइस पर वर्तमान Wi-Fi कनेक्शन 5 GHz बैंड को सपोर्ट करता है या नहीं, यह जांचने के लिए `WifiManager.is5GHzBandSupported()` विधि का उपयोग करें।कार्यान्वयन चरणचरण 1: लेआउट (activity_main.xml)<TextView android:id=@+id/text android:layout_width=match_parent android:layout

  1. Android में वर्तमान Wi-Fi हमेशा खोज योग्य है या नहीं जांचें Android में वर्तमान Wi-Fi हमेशा खोज योग्य है या नहीं जांचें

    परिचययह जांचने के लिए कि क्या डिवाइस का Wi-Fi स्कैन हमेशा उपलब्ध मोड में है (अर्थात बैटरी बचत के लिए स्कैन अक्षम नहीं है), `WifiManager.isScanAlwaysAvailable()` का उपयोग करें।कार्यान्वयनचरण 1: लेआउट (activity_main.xml)<TextView android:id=@+id/text android:layout_width=match_parent

  1. Android में वर्तमान में चल रहे ऐप्लिकेशन कैसे जांचें? Android में वर्तमान में चल रहे ऐप्लिकेशन कैसे जांचें?

    यह उदाहरण दर्शाता है कि Android डिवाइस पर वर्तमान में चल रहे टास्क/ऐप्लिकेशन की सूची कैसे प्राप्त की जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=https:

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
विशेषताविवरण
मापता हैउचित त्वरण (m/s² या g में)
अक्षX (बाएं-दाएं), Y (आगे-पीछे), Z (ऊपर-नीचे)
स्थिर अवस्था मेंZ-अक्ष ≈ -9.81 m/s² (ग्रेविटी)
मुक्त गिरावट मेंसभी अक्ष ≈ 0 (भारहीनता)
सामान्य रेंज±2g, ±4g, ±8g, ±16g (कॉन्फिगरेबल)