অ্যাপ্লিকেশন চলাকালীন অ্যান্ড্রয়েড স্ক্রিনের সময়সীমা অক্ষম করে


116

আমার অ্যাপটি চলমান থাকাকালীন স্ক্রিনসেভারটি অক্ষম করার কোনও উপায় আছে কি?

স্ক্রিনটির ম্লান হওয়া বলতে আমি কী বোঝাতে চাইছি।


3
View.setKeepScreenOn()[লিঙ্ক] [1] ব্যবহার সম্পর্কে কী ?. যদিও আমি নিজে এটি কখনও ব্যবহার করি নি। [1]: বিকাশকারী.আ্যান্ড্রয়েড.
com


উত্তর:


172

আপনি এর মতো কিছু ব্যবহার করতে চান:

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

4
এটি চলমান ক্রিয়াকলাপ বা পুরো অ্যাপ্লিকেশনটির জন্য এটি তৈরি করে?
মুহাম্মদ রেফায়াত

@ ময়ূরআর.আমিপাড়া হ্যাঁ আমি মনে করি এটি এখানেই হয়েছে
মুহাম্মদ রেফায়াত

1
আমি যদি এই কোডটি অ্যাপ্লিকেশন শ্রেণিতে অনক্রিয়েট () পদ্ধতিতে লিখি তবে এটি কি পুরো অ্যাপের জন্য কাজ করবে?
জয়েশ

যদি না হয় তবে প্রতিটি ক্রিয়াকলাপে সেই লাইনটি যুক্ত করার পরিবর্তে আমি কীভাবে কম কোড প্রবেশ করিয়ে পুরো অ্যাপ স্ক্রিনটি চালিয়ে যেতে পারি।
জয়েশ

1
@ জয়শ: আপনি একটি বেসঅ্যাক্টিভিটি তৈরি করতে পারেন এবং এই কোডটি অনক্রিয়া পদ্ধতিতে লিখতে পারেন এবং বেসঅ্যাক্টিভিটি থেকে সমস্ত ক্রিয়াকলাপ প্রসারিত করতে পারেন।
মের্যাম

102

আমি ব্যবহার করতাম:

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

স্ক্রীন সময়সীমা নিষ্ক্রিয় করতে এবং

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

এটি পুনরায় সক্ষম করতে।


83

গুগল সুপারিশ করে এমন একটি এক্সএমএল উপায়ও রয়েছে:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true">

পরীক্ষা করে দেখুন Google স্লাইড - স্লাইড 16।

"ভ্যাকলকগুলি ভুলে গেলে ব্যয়বহুল (...) অ্যান্ড্রয়েড ব্যবহার বিবেচনা করুন: নির্ভুলতা নিশ্চিত করতে কিপস্ক্রিনঅন"


2
যাদের লিঙ্কযুক্ত পিডিএফ পড়ার সময় নেই: "ওয়েলক্লকস যদি ভুলে যায় তবে ব্যয়বহুল হয়", "অ্যান্ড্রয়েড ব্যবহার বিবেচনা করুন: নির্ভুলতা নিশ্চিত করার জন্য কেপস্ক্রিনঅন"।
lenrok258

2
@ lenrok258 উত্তরে যুক্ত হয়েছে ;-)
neteinstein

ব্যবহার করার সময় PowerManager.newWakeLockএবং getWindow().addFlagsকোনও কারণে কাজ করে নি, এটি হয়েছিল।
বেনজমিন বাসমাকি



2

একটি দৃশ্যে, আমার ক্ষেত্রে একটি সারফেসভিউ সাবক্লাস, আপনি সর্বদা চালু রাখতে পারেন can এই ভিউটি স্টাফ আঁকতে থাকাকালীন আমি পর্দাটি চালু রাখতে চেয়েছিলাম।

public class MyCoolSurfaceView extends SurfaceView { 
@Override
protected void onAttachedToWindow (){
    super.onAttachedToWindow();
    this.setKeepScreenOn(true);
}

@Override
protected void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    this.setKeepScreenOn(false);
}

1
এটি আসলে প্রয়োজনের চেয়ে জটিল। কেবল সেটকিপসস্ক্রিন অন (সত্য) কোথাও কল করুন এবং আপনার উইন্ডোটি প্রদর্শিত হচ্ছে যখন ফ্রেমওয়ার্কটি স্বয়ংক্রিয়ভাবে স্ক্রিনটি রাখার যত্ন নেবে।
হ্যাকবড

1

এটি অন স্টার্টে রাখুন

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep");
    wakeLock.acquire();

এবং এটি আপনার প্রকাশিত

    <uses-permission android:name="android.permission.WAKE_LOCK" />

ভুলে যাবেন না

wakeLock.release();

অনস্টপ এ


1
PARTIAL_WAKE_LOCKপর্দা বন্ধ যেতে দেয়।
মাইকেল

1

এটি এটি সমাধান করার সেরা উপায়

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

কেন এই প্রশ্নের উত্তর দেওয়ার জন্য FLAG_FULLSCREEN দরকার?
আব্দুল ওয়াসায়ে

0
android:keepScreenOn="true"

এটি হ্যান্ডেল করার সর্বোত্তম উপায় হ'ল যদি আমরা কোনও নির্দিষ্ট পর্দা সর্বদা জাগ্রত করতে চাই তবে অন্যথায় কখন এটি সক্ষম করতে এবং অক্ষম করতে হবে তা আমাদের নিজেরাই হ্যান্ডেল করতে হবে

https://developer.android.com/training/scheduling/wakelock.html


0
procedure SetSleep(aEnable:Boolean);
var
    vFlags: integer;
begin
    vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
        TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
        TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
        TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;

    if aEnable then
    begin
      CallInUIThread (   // uses FMX.Helpers.Android
      procedure
      begin
        TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
      end );
    end
    else
      CallInUIThread (
      procedure
      begin
        TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
      end );
end;

0

1.getWindow ()। AddFlags (উইন্ডো ম্যানেজ। লেআউটপ্যারামস.এফএলএজি_কেইপি_স্রেইন আপত্তি); নেটিভ অ্যান্ড্রয়েডের জন্য সেরা সমাধান।
২. যদি আপনি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির সাথে করতে চান তবে নীচের কোডটি ব্যবহার করুন।

@ReactMethod
    public void activate() {
        final Activity activity = getCurrentActivity();
        if (activity != null) {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                }
            });
        }

    }

-1

এটি একটি ওয়েক লক অর্জন করে করা যেতে পারে।

আমি নিজে এটি পরীক্ষা করিনি, তবে এখানে এটির একটি ছোট টিউটোরিয়াল is


10
না না না. ওয়েক লকগুলি সহজেই অপব্যবহার করা হয় এবং খুব সাবধানতার সাথে ব্যবহার না করা হলে ব্যবহারকারীর ব্যাটারি নিকাশ করতে পারে। ব্যবহার View#setKeepScreenOnবা এর এক্সএমএল লেআউট বৈশিষ্ট্য সমতুল্য,android:keepScreenOn="true"
এড্যাম্প করুন

5
@ অ্যাডাম্প: ওপিতে তার অ্যাপ্লিকেশনটি কোনও কার্যকলাপ বা পরিষেবা কিনা তা নির্দেশ করে নি indicate কোনও ক্রিয়াকলাপে আপনার উদ্ধৃত পদ্ধতিটি ব্যবহার করা উচিত। একটি সেবা একটি ব্যবহার করা উচিত WakeLock
কমন্সওয়্যার

ধন্যবাদ এটি কোনও পরিষেবা নয়। এটি চিত্র দর্শকের মতো এবং আমি চাই না যে স্ক্রিনটি ম্লান হয়ে যাবে।
ক্ল্যাম্প করুন

@ অ্যাডাম্প: আপনার উল্লেখটি android:keepScreenOn="true"আমার মতে ক্রিয়াকলাপগুলির একমাত্র বৈধ উত্তর। একেবারে প্রয়োজনীয় না হলে জাগ্রত থেকে দূরে থাকুন।
pauluss86

কেবল ক্রিয়াকলাপ নয়, কোনও উইন্ডো দেখায় এমন কোনও ধরণের ইউআই। সংশ্লিষ্ট উইন্ডো পতাকা ব্যবহারের গৃহীত উত্তরও সমানভাবে বৈধ।
এম্প্যাম্প 0.33
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.