Как сохранить экран в своем приложении?

Для моего Android-приложения я никогда не хочу, чтобы телефон блокировал или подсветка выключилась

Ответ 1

Используйте PowerManager.WakeLock класс inorder для выполнения этого. См. Следующий код:

import android.os.PowerManager;

public class MyActivity extends Activity {

    protected PowerManager.WakeLock mWakeLock;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(final Bundle icicle) {
        setContentView(R.layout.main);

        /* This code together with the one in onDestroy() 
         * will make the screen be always on until this Activity gets destroyed. */
        final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
        this.mWakeLock.acquire();
    }

    @Override
    public void onDestroy() {
        this.mWakeLock.release();
        super.onDestroy();
    }
}

Используйте разрешение follwing в файле манифеста:

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

Надеюсь, что это решит вашу проблему...:)

Ответ 2

Добавьте одну строку кода после setContentView() в onCreate()

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_flag);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

Ответ 3

Здесь уже много ответов! Я отвечаю на этот вопрос дополнительными и надежными решениями:

Использование PowerManager.WakeLock не является настолько надежным решением, поскольку приложение требует дополнительных разрешений.

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

Кроме того, если он случайно сохраняет блокировку следа, он может оставить экран включенным.

Поэтому я не рекомендую использовать решение PowerManager.WakeLock. Вместо этого используйте любое из следующих решений:

Сначала:

Мы можем использовать getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); в onCreate()

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

Второй:

мы можем использовать keepScreenOn

1. с использованием setKeepScreenOn() в java-коде:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        View v = getLayoutInflater().inflate(R.layout.driver_home, null);// or any View (incase generated programmatically ) 
        v.setKeepScreenOn(true);
        setContentView(v);
       }

Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2. Добавление keepScreenOn в макет xml

<?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" >

Docs http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

Примечания (некоторые полезные пункты):

  • Не важно, что keepScreenOn следует использовать в основном/корневом/родильном представлении. Он может использоваться с любым дочерним представлением и будет работать так же, как и в родительском представлении.
  • Единственное, что имеет значение, - видимость видимости должна быть видимой. В противном случае это не сработает!

Ответ 4

Не использовать блокировку пробуждения.

It requires permission and other stuff and may cause error if you forget to set it in right time.

Самый простой способ - использовать приведенный ниже код, если вы хотите сохранить экран.

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

Одно дополнение к ответу, если вы хотите удалить или завершить keep_Screen_on

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

вы также можете увидеть здесь..

И the best and easiest way.. Использование android:keepScreenOn="true" в макете корня вашей активности делает то же самое без дополнительного кода. Но он останется в состоянии Keep_Scree_on.

Он может быть различным по вашему требованию См. здесь

Ответ 5

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

getWindow - это метод, определенный для действий, и вам не потребуется сначала искать View.

Ответ 7

Вы можете просто использовать setKeepScreenOn() из класса View.

Ответ 8

Добавление android:keepScreenOn="true" в XML активности (-ов), которую вы хотите сохранить на экране, является наилучшим вариантом. Добавьте эту строку в основную компоновку активности (-ов).

Что-то вроде этого

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

...

</LinearLayout>

Ответ 9

Вам нужно использовать Power Manager, чтобы получить блокировку слежения в вашем приложении.

Скорее всего вас интересует FULL_WAKE_LOCK:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
wl.acquire();
....
wl.release();

Ответ 10

В этот момент метод

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
        this.mWakeLock.acquire();

устарел.

Вы должны использовать getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); и getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Ответ 11

Попробуйте Это мы можем сделать это несколькими способами в этих

Solution1:

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

Solution2:

в файле activity_main.xml просто добавьте

 <android:KeepScreenOn="true"/>

Мой совет: пожалуйста, не используйте WakeLock, если вы используете это, вы будете определять дополнительное разрешение и в основном эта вещь, полезная в среде разработки процессора.

и обязательно выключите экран при закрытии активности

вы можете сделать это таким образом

 pubic void onDestry(){
    getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    }

Ответ 12

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

должен иметь, если вы хотите установить его как

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

Ответ 13

Не нужно добавлять разрешения и делать трюки. Просто используйте ниже текст в своем основном макете.

  android:keepScreenOn="true"