Для моего 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
.
Ответ 6
Взгляните на это обсуждение Экран принудительного включения
hackbod имеет отличный ответ.
Ответ 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"