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

एंड्रॉइड में होम और सिस्टम बटन छुपाना (इमर्सिव मोड)

सिस्टम नेविगेशन बार और स्टेटस बार छुपाने के लिए इमर्सिव मोड

एंड्रॉइड में "होम बटन डिसेबल करना" सीधे संभव नहीं है (सुरक्षा कारणों से), लेकिन आप इमर्सिव फुल-स्क्रीन मोड का उपयोग करके सिस्टम बार्स (नेविगेशन बार, स्टेटस बार) को छुपा सकते हैं। यह गेम्स, वीडियो प्लेयर्स, रीडिंग ऐप्स के लिए उपयुक्त है।

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

Android Studio में प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल

res/layout/activity_main.xml:

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

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:text="इमर्सिव मोड सक्रिय\nस्वाइप करके सिस्टम बार्स देखें"
        android:textAlignment="center"
        android:textSize="20sp"
        android:textStyle="bold" />

</RelativeLayout>

चरण 3: MainActivity में इमर्सिव मोड लागू करें

package com.app.sample;

import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideSystemBars();
        }
    }

    private void hideSystemBars() {
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN;

        decorView.setSystemUiVisibility(uiOptions);
    }
}

मुख्य UI फ्लैग्स समझाए गए

फ्लैगउद्देश्य
SYSTEM_UI_FLAG_IMMERSIVE_STICKYस्टिकी इमर्सिव मोड - यूजर स्वाइप करके बार्स देख सकता है, फिर ऑटो-हाइड हो जाते हैं
SYSTEM_UI_FLAG_HIDE_NAVIGATIONनेविगेशन बार छुपाएं (बैक, होम, रीसेंट)
SYSTEM_UI_FLAG_FULLSCREENस्टेटस बार छुपाएं
SYSTEM_UI_FLAG_LAYOUT_STABLEलेआउट स्थिर रहे जब बार्स दिखें/छुपें
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONलेआउट नेविगेशन बार के पीछे जाए
SYSTEM_UI_FLAG_LAYOUT_FULLSCREENलेआउट स्टेटस बार के पीछे जाए

एंड्रॉइड 11+ (API 30) के लिए आधुनिक API

// WindowInsetsController API (API 30+)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    WindowInsetsController controller = getWindow().getInsetsController();
    if (controller != null) {
        controller.hide(WindowInsets.Type.systemBars());
        controller.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
    }
} else {
    // लीगेसी API (ऊपर दिखाया गया)
    hideSystemBars();
}

Kotlin एक्सटेंशन फंक्शन

fun Activity.enableImmersiveMode() {
    window.decorView.apply {
        systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                or View.SYSTEM_UI_FLAG_FULLSCREEN)
    }
}

चरण 4: AndroidManifest.xml

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">

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

    </application>
</manifest>

महत्वपूर्ण सीमाएं और नोट्स

  • होम बटन वास्तव में डिसेबल नहीं होता - यूजर हमेशा स्वाइप करके या जेस्चर से नेविगेशन बार ला सकता है
  • कियोस्क मोड/लॉक टास्क मोड के लिए DevicePolicyManager और डिवाइस ओनर ऐप आवश्यक
  • onWindowFocusChanged में बार्स फिर से छुपाएं क्योंकि फोकस बदलने पर वे वापस आ जाते हैं
  • डायलॉग/कीबोर्ड दिखने पर बार्स स्वतः दिख सकते हैं
सुरक्षा नोट: एंड्रॉइड जानबूझकर होम/पावर बटन को ऐप्स द्वारा डिसेबल करने की अनुमति नहीं देता। यह मैलवेयर रोकथाम और यूजर कंट्रोल के लिए है। केवल सिस्टम-लेवल ऐप्स (डिवाइस ओनर) ही पूर्ण लॉकडाउन कर सकते हैं।
  1. Android विजिबिलिटी लिसनर्स में मास्टरी: व्यू विजिबिलिटी ट्रैक करने का तरीका और कारण Android विजिबिलिटी लिसनर्स में मास्टरी: व्यू विजिबिलिटी ट्रैक करने का तरीका और कारण

    Android UI व्यूज़ से बना होता है, और एक सामान्य ऐप्लिकेशन में आमतौर पर कई व्यूज़ होते हैं। यह जानने के लिए कि यूज़र वर्तमान में किस व्यू को देख रहा है, आपको विजिबिलिटी लिसनर्स इंस्टॉल करने होंगे।व्यू के विजिबिलिटी स्टेटस की पहचान करने के लिए आपके पास मौजूद विभिन्न विकल्पों के बारे में जानने के लिए आ

  1. Android System WebView मास्टर करें: इनेबल/डिसेबल करने की स्टेप-बाय-स्टेप गाइड (2024 अपडेट) Android System WebView मास्टर करें: इनेबल/डिसेबल करने की स्टेप-बाय-स्टेप गाइड (2024 अपडेट)

    आपने अपने इनबिल्ट ऐप्स के अंदर वेब पेज एक्सेस किए होंगे। सर्फिंग करते समय जब आप Instagram में उस लिंक पर क्लिक करते हैं, तो यह आपको ऐप के भीतर एक वेब पेज पर निर्देशित करता है। वेब पेज तक पहुंच वैसी ही है जैसी हमें Chrome पर मिलती है। Android System WebView वह ऐप है जो इसे संभव बनाता है लेकिन हम शायद

  1. एंड्रॉइड पर ऑटोकरेक्ट कैसे बंद करें: स्टेप-बाय-स्टेप गाइड एंड्रॉइड पर ऑटोकरेक्ट कैसे बंद करें: स्टेप-बाय-स्टेप गाइड

    शीर्षक पढ़कर आप पूछेंगे कि एंड्रॉइड पर ऑटोकरेक्ट क्यों डिसेबल करें? आखिरकार, यह एंड्रॉइड डिवाइस पर टाइपिंग त्रुटियों की किसी भी संभावना को खत्म कर देता है, है ना? साथ ही, इसकी प्रणाली ऐसी है कि यह उन शब्दों को सीखता है जिनका आप बार-बार उपयोग करते हैं जैसे-जैसे आप उनका उपयोग करते हैं। फिर भी, ऐसे सम