我想将设备发送到睡眠状态或关闭屏幕.我调查过并发现了这个主题:在Android上关闭屏幕
基本上,有三种方法可以做到,但我发现三者有问题:
a)选择1:
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
manager.goToSleep(int amountOfTime);
Run Code Online (Sandbox Code Playgroud)
问题:它导致FC.我已阅读我需要DEVICE_POWER权限,但无法为普通应用授予权限.
b)选择2:
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();
Run Code Online (Sandbox Code Playgroud)
问题:这对我不起作用.我不知道为什么.它不会给我一个FC,但它是无害的.
c)选择3:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)
问题:我可以让它工作但是当试图打开设备它会做一些奇怪的事情,比如不喜欢返回,或者如果我的应用程序在前面,按下按钮后自动进入睡眠状态.与普通解决方案相比,这看起来更像是提示或解决方法.
任何人都可以告诉我任何好的方法来发送设备进入睡眠或关闭屏幕,可以运行没有问题吗?对我来说这样一个简单的功能并不是一个好的方法来使用它(或者至少有详细记录)
如果在1分钟不活动后没有自动完成,我可以在android中以编程方式将屏幕设置为关闭.
这有可能在android中以编程方式执行吗?
我找到了这个主题: Android:如何以编程方式打开和关闭屏幕?
但1分钟后没有计时器.
我有一个应用程序,用于说4小时,但只有每5分钟用户需要输入或阅读屏幕.让手机进入睡眠状态并锁定屏幕有点烦人.所以我有两个选择:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);这不会锁定屏幕,但屏幕总是很亮,我想在没有活动时调暗它.仅仅是因为电池寿命延长,或者这4小时内没有那么重要?
一个唤醒锁SCREEN_DIM_WAKE_LOCK
也能满足我的需求,但我被告知要使用上面的选项1.
没有唤醒锁,我可以以某种方式实现想要吗?
有类似的帖子,但没有一个是我正在寻找的.我想更改特定活动的屏幕超时.我想尽可能避免使用WakeLock,我不想更改设备的系统范围超时延迟设置.
有没有办法做到这一点,无法手动跟踪用户活动和使用唤醒锁?
= ---- =
澄清:例如,如何设置屏幕不活动超时(在没有输入后屏幕关闭所需的时间)为3分钟的某些值?
可以通过设置系统设置来执行此操作,但这会影响整个设备(即使应用程序关闭后),因此这不是一个好的解决方案.
谢谢!
我在我的应用程序中启用了接近唤醒锁,当接近传感器检测到某些东西时,它会关闭屏幕.但是当屏幕唤醒时出现问题 - 它会进入锁屏,而不是我的应用程序.无论屏幕关闭的时间如何,都会发生这种情况(即使传感器在几秒钟后被清除).这是我使用的代码:
int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
mProximityWakeLock = pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, LOG_TAG);
if(!mProximityWakeLock.isHeld()){
mProximityWakeLock.acquire();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法纠正这种行为?
我无法使用此代码关闭屏幕.我使用PowerManager和wl.release()方法,但它不起作用.有人能告诉我一个例子吗?
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
Run Code Online (Sandbox Code Playgroud)
这是我的功能的一部分:
stateString = "nextone";
if(stateString=="nextone"){
wl.release();
}
Run Code Online (Sandbox Code Playgroud)
我还在清单中添加了权限但没有结果.
我用谷歌搜索,并且有很多处理偶数on_screen_of和on_screen_off的示例,但是我想实际打开和关闭屏幕。我进行的每次搜索都会引导我处理屏幕打开和关闭事件。
我想要一个按钮,单击该按钮时将关闭屏幕。
我该怎么办?我需要什么权限?还是我在谈论这个之前,请给我一些有用的链接
谢谢
有没有办法使用标准Android API使用Google TV Android应用打开或关闭电视[技术上让它进入睡眠状态]?
我知道我可以用IR或其他方式破解某些东西,但我真的只是喜欢我的应用程序执行与我的GTV遥控器上的电视电源按钮相同的功能.
我想在靠近脸部时关闭屏幕。我用它来关闭屏幕。
但我有一个错误:在这一行中找不到符号:
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
Run Code Online (Sandbox Code Playgroud)
和
params.f lags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import org.qtproject.qt5.android.bindings.QtActivity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import android.os.PowerManager;
import android.view.WindowManager;
public class ProximitySensor extends Activity implements SensorEventListener{
//SensorManager lets you access the device's sensors
//declare Variables
private SensorManager sensorManager;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//create instance of sensor manager and get system service …Run Code Online (Sandbox Code Playgroud) 我有一个活动,它的onPause必须做一些工作,但不是屏幕关闭时.我已经注册了接收器的ACTION_SCREEN_OFF意图,理论上,这和应用程序级别的静态标志应该做的但是......它不起作用,因为onPause在接收器可以获得其意图之前调用活动的回调.那就是:logcat*ting*在按下空闲按钮的同时,我可以看到第一个onPause跟踪和onReceive之后的跟踪.此时,设置静态标志并不是很重要......
是否有可能知道onPause屏幕关闭时的活动时间?
在此先感谢
L.