ฉันจะบังคับให้หน้าจอยังคงทำงานอยู่และไม่ปิดในขณะที่แอปกำลังทำงานได้อย่างไร
ฉันจะบังคับให้หน้าจอยังคงทำงานอยู่และไม่ปิดในขณะที่แอปกำลังทำงานได้อย่างไร
คำตอบ:
สิ่งนี้ต้องการให้คุณให้สิทธิ์แอปของคุณเพิ่มเติมและง่ายมากที่จะแนะนำจุดบกพร่องที่คุณเผลอกด Wake Lock ไว้โดยไม่ได้ตั้งใจและเปิดหน้าจอทิ้งไว้
มันไกลและดีกว่ามากที่จะใช้แฟล็กหน้าต่างFLAG_KEEP_SCREEN_ONซึ่งคุณสามารถเปิดใช้งานบนหน้าต่างกิจกรรมของคุณในonCreate()ลักษณะนี้:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
วิธีนี้จะช่วยให้แน่ใจว่าหน้าจอยังคงเปิดอยู่ในขณะที่หน้าต่างของคุณอยู่เบื้องหน้าและในขณะที่อยู่เบื้องหน้าเท่านั้น ช่วยลดความยุ่งยากในกรณีการใช้งานทั่วไปนี้อย่างมากโดยไม่ต้องมีการเล่นกลใด ๆ ที่คุณต้องทำเมื่อแอปของคุณเปลี่ยนสถานะ
คำถามนี้มีคำตอบที่ยอดเยี่ยมอยู่แล้วโดย @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%3akeepScreenOn
หมายเหตุ (บางจุดที่เป็นประโยชน์):
1.มันไม่สำคัญว่าkeepScreenOnควรใช้Main/Root/Parent View มันสามารถใช้กับchild viewจะทำงานใด ๆเช่นเดียวกับที่ใช้ในParent view
2.สิ่งเดียวที่สำคัญคือView's Visibility must be visibleคนอื่นฉลาดจะไม่ทำงาน!
v.setKeepScreenOn(true);ดูเหมือนจะเป็นวิธีเดียวที่จะทำได้สำหรับส่วนโต้ตอบแบบเต็มหน้าจอ
อีกวิธีหนึ่งคือการเพิ่มandroid:keepScreenOn="true"( เอกสารประกอบ ) ไปยังมุมมองที่ต้องเปิดหน้าจอไว้
ช่วยให้สามารถควบคุมได้ละเอียดขึ้นเล็กน้อยในแง่ของมุมมองที่ยังคงอยู่และมุมมองใดไม่อยู่ คุณสามารถอ้างอิงการตั้งค่าจากไฟล์ทรัพยากรด้วยวิธีนี้