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

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

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

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

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

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

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

</LinearLayout>

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

package com.example.stepcountercheck;

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

        checkStepCounterSupport();
    }

    private void checkStepCounterSupport() {
        // API 19 (KitKat) में जोड़ा गया
        Sensor stepCounterSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);

        if (stepCounterSensor != null) {
            sensorStatus.setText("✓ स्टेप काउंटर सेंसर सपोर्ट करता है");
            sensorStatus.setTextColor(0xFF4CAF50);
            
            String info = String.format(
                "सेंसर: %s\nवेंडर: %s\nवर्जन: %d\nरेंज: %.0f कदम\nरिजॉल्यूशन: %.1f\nपावर: %.3f mA\nन्यूनतम डिले: %d µs\nरिपोर्टिंग मोड: %s",
                stepCounterSensor.getName(),
                stepCounterSensor.getVendor(),
                stepCounterSensor.getVersion(),
                stepCounterSensor.getMaximumRange(),
                stepCounterSensor.getResolution(),
                stepCounterSensor.getPower(),
                stepCounterSensor.getMinDelay(),
                getReportingModeName(stepCounterSensor.getReportingMode())
            );
            sensorStatus.append("\n\n" + info);
        } else {
            sensorStatus.setText("✗ स्टेप काउंटर सेंसर सपोर्ट नहीं करता");
            sensorStatus.setTextColor(0xFFF44336);
            
            sensorStatus.append("\n\nनोट: यह हार्डवेयर सेंसर है।\nअधिकांश आधुनिक फोन (2014+) में होता है।\nसॉफ्टवेयर-आधारित स्टेप डिटेक्शन के लिए\nTYPE_STEP_DETECTOR उपयोग करें।");
        }
    }

    private String getReportingModeName(int mode) {
        switch (mode) {
            case Sensor.REPORTING_MODE_CONTINUOUS: return "CONTINUOUS";
            case Sensor.REPORTING_MODE_ON_CHANGE: return "ON_CHANGE";
            case Sensor.REPORTING_MODE_ONE_SHOT: return "ONE_SHOT";
            case Sensor.REPORTING_MODE_SPECIAL_TRIGGER: return "SPECIAL_TRIGGER";
            default: return "UNKNOWN";
        }
    }
}

स्टेप काउंटर vs स्टेप डिटेक्टर

सेंसरTYPE_STEP_COUNTERTYPE_STEP_DETECTOR
प्रकारहार्डवेयर (लो-पावर, ऑलवेज-ऑन)सॉफ्टवेयर/हार्डवेयर
आउटपुटकुल कदमों की गिनती (बूट के बाद से)प्रत्येक कदम का इवेंट (टाइमस्टैम्प के साथ)
पावरबहुत कम (को-प्रोसेसर पर चलता है)थोड़ा अधिक
उपयोगदैनिक कदम लक्ष्य, गतिविधि ट्रैकिंगरियल-टाइम कदम इवेंट्स, गेमिंग
उपलब्धताAPI 19+API 19+

स्टेप काउंटर डेटा पढ़ना

SensorEventListener stepListener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        // event.values[0] = बूट के बाद से कुल कदम (फ्लोट लेकिन पूर्णांक मान)
        int totalSteps = (int) event.values[0];
        
        // पिछले मान से अंतर लेकर सत्र के कदम प्राप्त करें
        // या SharedPreferences में प्रारंभिक मान स्टोर करें
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};

// रजिस्टर करें - ON_CHANGE मोड (कदम होने पर ही कॉलबैक)
sensorManager.registerListener(stepListener,
    sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),
    SensorManager.SENSOR_DELAY_NORMAL);

Google Fit API (अनुशंसित विकल्प)

हार्डवेयर सेंसर न होने पर या क्रॉस-डिवाइस सिंक के लिए:

// निर्भरता: implementation 'com.google.android.gms:play-services-fitness:21.0.0'

// दैनिक कदम क्वेरी करें
Fitness.getHistoryClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
    .readDailyTotal(DataType.TYPE_STEP_COUNT_DELTA)
    .addOnSuccessListener(dataSet -> {
        long totalSteps = dataSet.isEmpty() ? 0 : dataSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS).asInt();
    });

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

  1. वास्तविक डिवाइस पर चलाएं
  2. अधिकांश 2014+ फोन सपोर्ट करते हैं
  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: