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

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

एंड्रॉइड में गेम रोटेशन वेक्टर सेंसर सपोर्ट जांचें

यह ट्यूटोरियल दिखाता है कि Sensor.TYPE_GAME_ROTATION_VECTOR की उपलब्धता कैसे जांचें। यह सेंसर मैग्नेटोमीटर के बिना ओरिएंटेशन प्रदान करता है (गेमिंग के लिए आदर्श)।

चरण 1: प्रोजेक्ट बनाएं

एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं (API 18+ अनुशंसित)।

चरण 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="24sp"
        android:textStyle="bold"
        android:layout_marginTop="30dp"
        android:padding="24dp"
        android:background="#FFF3E0"
        android:text="जांच हो रही है..."/>

</LinearLayout>

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

package com.example.gamerotationcheck;

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

        checkGameRotationVectorSupport();
    }

    private void checkGameRotationVectorSupport() {
        // API 18 (Android 4.3) में जोड़ा गया
        Sensor gameRotationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR);

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

गेम रोटेशन वेक्टर vs रोटेशन वेक्टर

विशेषताTYPE_ROTATION_VECTORTYPE_GAME_ROTATION_VECTOR
मैग्नेटोमीटर उपयोगहां (उत्तर खोजने के लिए)नहीं (केवल जायरो + एक्सेलेरोमीटर)
ड्रिफ्टकम (मैग्नेटोमीटर से करेक्शन)अधिक (समय के साथ यॉ ड्रिफ्ट)
रिस्पॉन्सनेसथोड़ा धीमातेज, कम विलंबता
उपयोगनेविगेशन, कम्पास, ARगेमिंग, VR, सापेक्ष रोटेशन
उपलब्धताAPI 9+API 18+

गेम रोटेशन वेक्टर डेटा (क्वाटर्नियन)

SensorEventListener listener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        // event.values में क्वाटर्नियन घटक:
        // values[0] = x*sin(θ/2)
        // values[1] = y*sin(θ/2)  
        // values[2] = z*sin(θ/2)
        // values[3] = cos(θ/2)  (स्केलर भाग)
        // values[4] = अनुमानित हेडिंग सटीकता (रेडियन में, वैकल्पिक)
        
        float[] quaternion = new float[4];
        System.arraycopy(event.values, 0, quaternion, 0, 4);
        
        // रोटेशन मैट्रिक्स में कनवर्ट करें
        float[] rotationMatrix = new float[9];
        SensorManager.getRotationMatrixFromVector(rotationMatrix, event.values);
        
        // ऑयलर एंगल्स प्राप्त करें
        float[] orientation = new float[3];
        SensorManager.getOrientation(rotationMatrix, orientation);
        // orientation[0] = अजीमथ (यॉ)
        // orientation[1] = पिच
        // orientation[2] = रोल
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};

गेमिंग में उपयोग

  • कैमरा कंट्रोल: फर्स्ट-पर्सन लुक अराउंड
  • स्टीयरिंग: रेसिंग गेम्स में फोन झुकाकर
  • VR: हेड ट्रैकिंग (मैग्नेटोमीटर ड्रिफ्ट के बिना)
  • जेस्चर: क्विक रोटेशन जेस्चर्स पहचानें

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

  1. वास्तविक डिवाइस पर चलाएं (API 18+)
  2. अधिकांश आधुनिक फोन सपोर्ट करते हैं (सॉफ्टवेयर फ्यूजन के माध्यम से)
  3. बजट/पुराने डिवाइसेज में नहीं हो सकता

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

  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: