Android में शेक इवेंट डिटेक्शन का पूरा गाइड
यह ट्यूटोरियल आपको दिखाएगा कि Android ऐप में एक्सेलेरोमीटर सेंसर का उपयोग करके शेक जेस्चर का पता कैसे लगाया जाता है। यह फीचर गेमिंग ऐप्स, म्यूजिक प्लेयर्स या किसी भी ऐसे ऐप के लिए उपयोगी हो सकता है जहां यूजर इंटरैक्शन के लिए फिजिकल शेक का उपयोग किया जाता है।
चरण 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"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:text="शेक इवेंट का पता लगाने के लिए फोन को हिलाएं"
android:textSize="24sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
चरण 3: MainActivity में लॉजिक लागू करें
src/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;
import java.util.Objects;
public class MainActivity extends AppCompatActivity {
private SensorManager mSensorManager;
private float mAccel;
private float mAccelCurrent;
private float mAccelLast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Objects.requireNonNull(mSensorManager).registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
mAccel = 10f;
mAccelCurrent = SensorManager.GRAVITY_EARTH;
mAccelLast = SensorManager.GRAVITY_EARTH;
}
private final SensorEventListener mSensorListener = new SensorEventListener() {
@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((double) (x * x + y * y + z * z));
float delta = mAccelCurrent - mAccelLast;
mAccel = mAccel * 0.9f + delta;
if (mAccel > 12) {
Toast.makeText(getApplicationContext(), "शेक इवेंट डिटेक्ट हुआ", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// आवश्यकतानुसार कार्यान्वित करें
}
};
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(mSensorListener);
super.onPause();
}
}
चरण 4: मैनिफेस्ट फाइल अपडेट करें
androidManifest.xml में आवश्यक परमिशन और एक्टिविटी कॉन्फ़िगरेशन सुनिश्चित करें।
ऐप चलाएं और टेस्ट करें
अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें, Android Studio में Run आइकन पर क्लिक करें और अपने डिवाइस को चुनें। ऐप लॉन्च होने पर फोन को हिलाकर शेक इवेंट टेस्ट करें।
महत्वपूर्ण नोट्स
- थ्रेशोल्ड मान (12) को अपनी आवश्यकतानुसार एडजस्ट करें
- बैटरी बचाने के लिए
onPause()में लिस्टनर अनरजिस्टर करना न भूलें - अधिक सटीक डिटेक्शन के लिए लो-पास फिल्टर का उपयोग करें