标签: android-wake-lock

启动服务时AlarmManager的唤醒锁定

Android的AlarmManager Javadoc说明

When an alarm goes off, the Intent that had been registered for it is broadcast by the system,

AlarmServiceAndroid提供的API演示中有一个(包com.example.android.apis.app),它演示了正在使用的AlarmService.

在其中我们有以下内容(为清晰起见编辑):

PendingIntent mAlarmSender = PendingIntent.getService(AlarmService.this,
            0, new Intent(AlarmService.this, AlarmService_Service.class), 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 30*1000, mAlarmSender);
Run Code Online (Sandbox Code Playgroud)

因此,在这个例子中,它不会执行,PendingIntent mAlarmSender = PendingIntent.getBroadcast(...);而是执行getServiceJavadoc从未提及的内容.

我问这个的原因是因为CPU唤醒锁的影响.Javadoc表示,一旦广播接收器onReceive()返回,AlarmManger的唤醒锁将被释放.

我想知道的是,如果您使用示例中的警报,唤醒锁定的含义是什么?Javadoc似乎没有解决这个问题.如果有什么似乎暗示你必须在设置警报时使用广播技术.

android alarmmanager android-wake-lock

8
推荐指数
1
解决办法
3182
查看次数

WiFi锁不起作用,如何防止wifi省电?

我做了一个应用程序,将手机变成网络摄像头,并使用手机连接将图像发送到互联网网络空间.

我正在使用广告活动,将警报管理器设置为每隔5或15分钟执行一次服务.要执行服务的整个执行,我会执行唤醒锁定,但在服务完成时会丢失.

所有这一切都适用于移动连接,但不同于wifi.

我已经设置wifi选项的政策"永远不会"为wifi睡眠.但过了一段时间(并不总是一样),手机似乎进入省电模式:wifi图标尚未处于状态栏,但手机无法连接.即使我使用浏览器...所以我必须断开连接并手动重新连接.logcat中的消息:notify conn break (IOEx), close connection 即使电话插上电源!!!

为什么?(1)

尝试使用由启动服务的活动形成的另一个应用程序,该服务始终使用唤醒锁定运行.所以我已经添加了wifi锁以确保连接,但是这种方法有时会运行而另一些则没有.总是一样的notify conn break (IOEx), close connection原因?(2)

最后一个实验是从第一个应用程序(警报管理器)派生出来的,并确保wifi不会进入睡眠/省电模式(女巫一个?)我已经在执行代码后将手机转为飞行模式当循环开始时我将其关闭(连接).这项工作可以使用两天,但有时它只能工作(每隔一小时或两小时,而不是每5分钟,或有时一整天都不工作,然后无任何理由重启......).那么,为什么飞机模式有时不会重新建立先前的无线连接?(还有一些时候呢?)(3)

这款手机是原装2.2的三星Galaxy ACE,总是可以充电.

android wifi wifimanager android-wake-lock

8
推荐指数
1
解决办法
3416
查看次数

我的华为杀死了我的wakelock安卓应用

我尝试开发使用手机加速度计的Android应用程序.它可以在除华为手机之外的任何地方工作(在P9上测试).我选中了"继续使用黑屏运行"选项并使用省电模式保护应用程序(电池选项).

我看不到解决方案,所以我问你:-)这是我的活动:

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private MyService mService;
private boolean mIsRunning;
private MyService.ICallback mCallback = new MyService.ICallback() {
    public void changed() {
        Log.i(TAG, "CHANGED");
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
protected void onResume() {
    super.onResume();
    if(!mIsRunning) {
        startStepService();
    }
    bindStepService();
}

@Override
protected void onPause() {
    super.onPause();
    if(mIsRunning && mService != null) {
        unbindStepService();
    }
}

private ServiceConnection mConnection = new ServiceConnection() {
    public …
Run Code Online (Sandbox Code Playgroud)

android kill android-wake-lock huawei

7
推荐指数
1
解决办法
1048
查看次数

在Android上以编程方式禁用屏幕开/关磁传感器

Nexus系列的几款Android设备都有一个磁性传感器,它不能android.hardware.Sensor.TYPE_MAGNETIC_FIELD专门用于使用内置小磁铁的手机壳自动打开/关闭屏幕.

在我的应用程序中,我正在使用磁铁检测,android.hardware.Sensor.TYPE_MAGNETIC_FIELDSensorManager检测用户触摸手机内部有一些磁铁的情况.

代码工作没有问题,问题是在这些设备上非常容易意外触发屏幕ON/OFF传感器,关闭屏幕.

我试过了:

  • android:keepScreenOn="true" 关于XML
  • 使用权限android.permission.WAKE_LOCK并通过获取唤醒锁定PowerManager.

两者都没有成功.

我的活动恢复时有没有办法暂时禁用此传感器?

android android-wake-lock

7
推荐指数
1
解决办法
1962
查看次数

android.app.job.JobScheduler而不是WakefulBroadcastReceiver用法

如此所述,WakefulBroadcastReceiver不推荐使用通常的类.

因此,现在无法创建像以前的SDK版本那样的计划任务.谷歌说,我必须使用

https://developer.android.com/reference/android/app/job/JobScheduler.html

但是怎么样?

那么,现在背景计划任务最有用的解决方案是什么?

AlarmManager不再有用吗?

我的应用程序每天唤醒几次并使用AlarmManager更新通知.我不确定我要改变什么.我要实施什么?旧API和新API?或者只是最新的解决方案?

android android-wake-lock

7
推荐指数
1
解决办法
2086
查看次数

在Android 1.5服务中使用唤醒锁

您好我正在尝试使用服务来控制唤醒锁,以便我可以在应用程序运行时永久保持屏幕不亮.我创建唤醒锁并在onCreate()中激活它并在onDestroy()中释放它但是我得到错误"wl无法解析".谁能解释我怎么能克服这个?代码如下:

public class WakeLockService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }  
    @Override
    public void onCreate() {
        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
        wl.acquire();
    }
    @Override
    public void onDestroy() {
        wl.release();
    }
}
Run Code Online (Sandbox Code Playgroud)

java android android-service android-wake-lock android-1.5-cupcake

6
推荐指数
2
解决办法
8887
查看次数

Android - 唤醒锁无法正常获取,应用程序需要继续在待机状态下运行

在我的应用程序中,在主要活动的onCreate()方法中,我正在创建唤醒锁定,以便在手机进入待机/屏幕关闭时CPU将继续运行.

同样在onCreate方法中,我有意创建一个使用加速度计的服务.当应用程序打开并监控加速度计值时,此服务需要持续运行(我知道这对电池不利,但我需要它来做).这是我目前的代码,服务开始很好.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Howaya");
        wl.acquire();

        if (appStart == true)  
        { 
            Intent AccelService = new Intent(this, Accelerometer.class);
            AccelService.putExtra("unreg", false);
            startService(AccelService);
        }
        appStart = false;
  }
Run Code Online (Sandbox Code Playgroud)

我的清单中设置了以下权限 -

<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)

我尝试过不同的锁 - 昏暗的屏幕和全亮度也无济于事.我在logcat上的输出在这里 -

F/PowerManager(15628): android.util.Log$TerribleFailure: WakeLock finalized while still held: Howaya
F/PowerManager(15628):  at android.util.Log.wtf(Log.java:260)
F/PowerManager(15628):  at android.util.Log.wtf(Log.java:239)
F/PowerManager(15628):  at android.os.PowerManager$WakeLock.finalize(PowerManager.java:329)
F/PowerManager(15628):  at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

我见过有人说部分唤醒锁没有像他们应该做的那样工作,比如这个链接谷歌待机错误页面,但这个是去年发布和关闭所以我不知道是这样的,请问有人可以帮忙吗?关于最后一点我也有HTC Desire,谢谢.

android accelerometer standby android-wake-lock wakelock

6
推荐指数
2
解决办法
6195
查看次数

检查是否通过用户交互或屏幕调暗来调用onStop

我有一个媒体播放器,只要用户关闭应用程序就停止播放,可以通过按主页按钮,使用后退按钮或只是打开另一个应用程序.为了得到这种行为,我onStop()在我的主要活动中添加了一个告诉我MediaPlayer(在服务中)停止播放音乐的活动.

但是,我希望音乐在屏幕变暗时继续播放,无论是使用电源按钮关闭屏幕,还是仅通过屏幕自动调光.

现在,当屏幕变暗时,播放器也会停止播放,这意味着onStop()方法也会被调用.

如何检查onStop()是否被屏幕调用调用?

我已经PARTIAL_WAKELOCK在我的MediaPlayer对象上应用了一个,据我所知,应该可以让玩家在屏幕关闭后继续运行.

我是否还需要在主要活动中添加部分唤醒锁?


刚刚应用了PARTIAL_WAKELOCK我的主要活动,以及我的媒体播放器.此时,屏幕不再自动关闭,当用户按下电源按钮时,音乐仍然停止.

显然,这不符合我的想法.

有没有办法实现我正在寻找的行为?

android media-player android-wake-lock

6
推荐指数
1
解决办法
1187
查看次数

在Android中禁用屏幕锁定(电源)按钮

我希望当我的应用程序运行电源按钮时(按下锁定屏幕和屏幕变黑),应该禁用.这样用户就无法锁定屏幕.

我在三星Galaxy S手机的默认相机应用程序中注意到了这一点.这与我试图做同样的事情是一样的.我还有一个相机相关的应用程序.

android android-camera android-wake-lock

6
推荐指数
1
解决办法
1万
查看次数

在Android 7.0及更低版本上,禁用锁定屏幕不得在30秒后触发待机屏幕

我编写了一种方法来禁用Android锁定屏幕,并使屏幕从待机状态(用于拨号)打开。此方法可正常工作30秒,但随后会触发待机屏幕,该屏幕短暂闪烁。这会触发onPause,onStop,onResume。这不应该发生。哪个标志不正确?实施必须从最新的Android版本开始,直到API 19。

此错误仅在<8.0以下的Android设备上发生。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    disableLockScreen(this)
    setContentView(R.layout.activity_main)
    Log.i("AppLifecycleTest", "onCreate")
}

override fun onResume() {
    super.onResume()
    Log.i("AppLifecycleTest", "onResume")
}

override fun onPause() {
    super.onPause()
    Log.i("AppLifecycleTest", "onPause")
}

override fun onStop() {
    super.onStop()
    Log.i("AppLifecycleTest", "onStop")
}

override fun onDestroy() {
    super.onDestroy()
    Log.i("AppLifecycleTest", "onDestroy")
}

@Suppress("DEPRECATION")
private fun disableLockScreen(activity: Activity) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
        activity.setShowWhenLocked(true)
        activity.setTurnScreenOn(true)
    }
    val lock =
        (activity.getSystemService(Activity.KEYGUARD_SERVICE) as KeyguardManager).newKeyguardLock(Context.KEYGUARD_SERVICE)
    val powerManager = activity.getSystemService(Context.POWER_SERVICE) as PowerManager
    val wake = powerManager.newWakeLock(
        PowerManager.FULL_WAKE_LOCK or
                PowerManager.ACQUIRE_CAUSES_WAKEUP or …
Run Code Online (Sandbox Code Playgroud)

android android-wake-lock kotlin

6
推荐指数
1
解决办法
112
查看次数