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

Android ऐप में शेक फीचर से रिफ्रेश कैसे जोड़ें?

Android में एक्सेलेरोमीटर से शेक जेस्चर डिटेक्ट करने का तरीका

यह उदाहरण दिखाता है कि SensorManager और Sensor.TYPE_ACCELEROMETER का उपयोग करके फोन हिलाने (शेक) को कैसे डिटेक्ट करें और उस पर एक्शन (जैसे रिफ्रेश) ट्रिगर करें।

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

Android Studio में File → New Project चुनें।

चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Shake your phone to detect shake Feature...."
        android:textSize="24sp"
        android:textStyle="bold" />

</LinearLayout>

चरण 3: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements SensorEventListener {
    private SensorManager sensorManager;
    private Sensor accelerometer;
    private float mAccelCurrent = SensorManager.GRAVITY_EARTH;
    private float mAccelLast = SensorManager.GRAVITY_EARTH;
    private float mAccel = 0.0f;
    private static final float SHAKE_THRESHOLD = 12.0f;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (accelerometer != null) {
            sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];

        mAccelLast = mAccelCurrent;
        mAccelCurrent = (float) Math.sqrt(x * x + y * y + z * z);
        float delta = mAccelCurrent - mAccelLast;
        mAccel = mAccel * 0.9f + delta; // लो-पास फिल्टर

        if (mAccel > SHAKE_THRESHOLD) {
            Toast.makeText(this, "शेक डिटेक्ट हुआ! रिफ्रेश हो रहा है...", Toast.LENGTH_SHORT).show();
            // यहां अपना रिफ्रेश लॉजिक डालें: swipeRefreshLayout.setRefreshing(true); आदि
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // अनावश्यक
    }
}

चरण 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

सुधार और बेस्ट प्रैक्टिस

  • मूल कोड में अनाम क्लास के बजाय एक्टिविटी को SensorEventListener इम्प्लीमेंट कराया गया है (क्लीनर)।
  • SensorManager.SENSOR_DELAY_UI या SENSOR_DELAY_GAME भी उपयोग कर सकते हैं।
  • शेक थ्रेशहोल्ड को डिवाइस अनुसार ट्यून करें।
  • बैटरी बचाने के लिए onPause में अनरजिस्टर करना अनिवार्य है।
  1. Android में PreferenceScreen पर बटन कैसे जोड़ें? Android में PreferenceScreen पर बटन कैसे जोड़ें?

    AndroidX Preference लाइब्रेरी का उपयोग करके सेटिंग्स स्क्रीन में कस्टम एक्शन बटन जोड़ने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: एक्टिविटी लेआउट res/layout/activity_main.xml - Fragment कंटेनर: <LinearLayout xmlns:android=https://schemas.android.com/apk

  1. Android ऐप को प्रोग्रामेटिकली कैसे बंद करें? Android ऐप को प्रोग्रामेटिकली कैसे बंद करें?

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

  1. Android पर Chrome का पुल-टू-रिफ्रेश अक्षम करें: चरण-दर-चरण मार्गदर्शिका Android पर Chrome का पुल-टू-रिफ्रेश अक्षम करें: चरण-दर-चरण मार्गदर्शिका

    Android पर Google Chrome उपयोगकर्ताओं ने देखा होगा कि जब वे एक वेबपेज को नीचे की ओर खींचते हैं तो यह स्वचालित रूप से रीफ्रेश हो जाता है। यह सुविधा तब उपयोगी होती है जब आप किसी वेबपेज को जल्दी से रीफ्रेश करना चाहते हैं। इसका एक बड़ा नुकसान यह है कि यदि आप किसी वेबपेज पर कोई जानकारी दर्ज करते हैं और य