फोर्स स्क्रीन ऑन


जवाबों:


339

कृपया एक लॉक का उपयोग न करें

इसके लिए आवश्यक है कि आप अपने ऐप को एक अतिरिक्त अनुमति दें, और उन बगों को पेश करना बहुत आसान है जहां आप गलती से वेक लॉक को पकड़े रहते हैं और इस प्रकार स्क्रीन को छोड़ देते हैं।

यह बहुत दूर है, खिड़की के झंडे का उपयोग करना बेहतर है FLAG_KEEP_SCREEN_ON, जिसे आप अपनी गतिविधि की खिड़की पर onCreate()इस तरह से सक्षम कर सकते हैं :

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

इससे यह सुनिश्चित हो जाएगा कि स्क्रीन आपकी विंडो के अग्र भाग में है, और केवल अग्रभूमि में रहने के दौरान। यह इस सामान्य उपयोग के मामले को बहुत सरल करता है, राज्यों के बीच आपके ऐप संक्रमण के रूप में आपके द्वारा किए जाने वाले किसी भी करतब को समाप्त करने की आवश्यकता है।


5
क्या यह डिवाइस को सोने से रोकता है? यदि हां, तो WAKE_LOCK की समानता मुझे एक चौंकाने वाली गलती के रूप में दिखाती है!
माइकल क्रैमर

32
हां यह स्क्रीन को चालू रखता है और डिवाइस को सोने से रोकता है।
हैकबॉड

1
हाँ, आप उपयुक्त विंडो API के साथ ध्वज को हटा सकते हैं। आपको किसी भी चीज़ को खींचने के बारे में चिंता करने की ज़रूरत नहीं है, ढांचा यह करता है कि यदि आवश्यक हो।
हैकबॉड

1
@ हाकबोड: यह स्क्रीन को जीवित करने के लिए काम करेगा, लेकिन स्क्रीन के बारे में क्या है जो सो रहा है, क्या वह इसे जगाएगा और इसे जीवित रखेगा ????
काविता

5
@ KC202 आप WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON का उपयोग कर सकते हैं, जब आपकी विंडो प्रदर्शित होने पर स्क्रीन चालू हो। अक्सर FLAG_DISMISS_KEYGUARD और / या FLAG_SHOW_WHEN_LOCKED के साथ उपयोग किया जाता है।
हैकबॉड

34

यह प्रश्न पहले से ही महान उत्तर @hackbod द्वारा दिया गया है!

मैं दो अतिरिक्त समाधानों के साथ इस प्रश्न का उत्तर दे रहा हूं!

मौजूदा समाधान:

@Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);    
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

अतिरिक्त समाधान:

हम प्रयोग कर सकते हैं keepScreenOn

1. implementation का उपयोग करsetKeepScreenOn() in java code

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // or any View (in case generated programmatically ) 
        View v = getLayoutInflater().inflate(R.layout.driver_home, null);

        v.setKeepScreenOn(true);
        setContentView(v);
       }

डॉक्स http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2. जोड़ना keepScreenOnकरने के लिएxml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true" >

डॉक्स http://developer.android.com/reference/android/view/View.html#attr_android%3akecillinOn

नोट (कुछ उपयोगी बिंदु):

1। यह कोई फर्क नहीं पड़ता कि keepScreenOnइस पर इस्तेमाल किया जाना चाहिए Main/Root/Parent View किसी के साथ भी child viewकाम किया जा सकता हैParent view

2. बात केवल View's Visibility must be visibleयह है कि अन्य बुद्धिमान यह काम नहीं करेगा!


नोट v.setKeepScreenOn(true);फुलस्क्रीन डॉयलागमेंट के लिए इसे करने का एकमात्र तरीका प्रतीत होता है
टिम

16

एक और समाधान जोड़ना है android:keepScreenOn="true"( प्रलेखन ) विचारों पर स्क्रीन रखने की जरूरत है कि करने के लिए।

उन विचारों के संदर्भ में थोड़ा और अधिक दानेदार नियंत्रण की अनुमति देता है, जिन पर विचार बना रहता है और जो नहीं करते हैं। आप इस तरह से एक संसाधन फ़ाइल से सेटिंग का संदर्भ भी ले सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.