Android 全系统唤醒锁定和释放取决于电源连接
我正在尝试开发一个简单的android应用程序,当设备插入时,即通过dock,屏幕会获得唤醒锁,这样屏幕就不会关闭,无论他们的应用程序是什么,当拔下插头时,唤醒锁就会释放 目前我没有任何服务运行,因为我认为它是不需要的。它接收连接电源和断开电源的广播意图。当电源连接时,它似乎成功地获取了唤醒锁,但当电源断开时,它试图释放唤醒锁,但却引发了空指针异常。我猜这是因为应用程序不一定在运行,也没有服务,所以变量不会被保留 下面是我正在使用的接收广播的代码Android 全系统唤醒锁定和释放取决于电源连接,android,android-wake-lock,Android,Android Wake Lock,我正在尝试开发一个简单的android应用程序,当设备插入时,即通过dock,屏幕会获得唤醒锁,这样屏幕就不会关闭,无论他们的应用程序是什么,当拔下插头时,唤醒锁就会释放 目前我没有任何服务运行,因为我认为它是不需要的。它接收连接电源和断开电源的广播意图。当电源连接时,它似乎成功地获取了唤醒锁,但当电源断开时,它试图释放唤醒锁,但却引发了空指针异常。我猜这是因为应用程序不一定在运行,也没有服务,所以变量不会被保留 下面是我正在使用的接收广播的代码 public class BroadcastRe
public class BroadcastReceiveDetection extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
ManageScreenLight manageScreenLight = new ManageScreenLight(context);
String action = intent.getAction();
if (action == Intent.ACTION_POWER_CONNECTED)
{
manageScreenLight.receivedPowerConnected();
}
else if (action == Intent.ACTION_POWER_DISCONNECTED)
{
try {
manageScreenLight.receivedPowerDisconnected();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
下面是获取和释放唤醒锁的代码
Context context;
PowerManager.WakeLock wakeLock;
public ManageScreenLight(Context context)
{
this.context = context;
}
public void receivedPowerConnected()
{
Toast.makeText(context, "Power connected", Toast.LENGTH_LONG).show();
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "ScreenStay");
wakeLock.acquire();
}
public void receivedPowerDisconnected() throws IOException
{
try
{
Toast.makeText(context, "Power disconnected", Toast.LENGTH_LONG).show();
wakeLock.release();
}
catch (Exception ex)
{
Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
}
}
有没有一种方法可以做到这一点?我想,在获得唤醒锁时,需要有一个正在运行的服务,一旦电源断开,释放并停止服务
谢谢你能提供的帮助 根据文档,应用程序被终止时,onReceive()
似乎不会被调用,这是有道理的。如果Android只是为了调用onReceive()
而关闭了你的应用程序,它就不会启动你的应用程序。如果要继续接收/响应这些事件,则需要使用服务