Articles of android wake lock

在Android 5.1中每秒调度一次闹钟

我想在我的应用程序中每秒运行一次报警服务。它在5.1版本以下工作正常。 但在5.1设备中不会触发。 我正在使用commonsware清醒的意图服务。logcat消息是说“ 可疑短间隔1000毫秒;扩展到60秒 ”。 我怎样才能轮询5.1的每一秒? 有人可以build议我怎么做到这一点? 更多的解释: 我的用例是我需要每隔30分钟进行一次操作。 AFAIK对于这个使用报警pipe理器是有效的方式,但在这里 1)我需要向用户显示倒数计时器。 (定时器任务,倒数计时器,ScheduledExecutorService对此非常有用) 2)即使应用程序在后台,我也需要每隔30分钟(通过通知)通知用户(警报服务就足够了) 但在这里,我的问题是当应用程序在后台,当你从最近刷出应用程序(即应用程序进程被终止)没有任何服务或定时器,处理程序,执行器服务将无法正常工作。 在这种情况下,如何在完成30分钟后通知用户。 如果我以错误的方式思考,请引导我。 谢谢, 切塔尼亚

WiFi锁不起作用,如何防止wifi功率节省?

我做了一个应用程序,将手机变成networking摄像头,并使用手机连接将图像发送到互联网networking空间。 我正在使用广告活动,每5或15分钟设置一个“闹钟pipe理器”执行一项服务。 要执行服务的整个执行,我会执行一次唤醒locking,但是当服务完成时会中断。 所有这一切都与移动连接完美的工作,但不与wifi一样。 我已经在无线networking睡眠设置在WiFi选项策略“从不”。 但经过一段时间(并不总是相同的)手机似乎进入省电模式:WiFi图标尚未在状态栏,但手机无法连接。 即使是我使用浏览器…所以我必须断开连接并手动重新连接。 logcat中的消息: notify conn break (IOEx), close connection即使手机插上电源!!! 为什么? (1) 做一个由启动服务的活动组成的另一个应用程序,它总是以一个唤醒锁来运行。 所以我已经添加了wifilocking以确保连接,而且这种方法有时运行,而其他一些不是。 总是一样的notify conn break (IOEx), close connection为什么? (2) 最后一个实验是从第一个应用程序(报警pipe理器)派生出来的,并确保wifi没有进入睡眠/省电模式(一个??)我已经在执行代码后以飞行模式打开电话并在循环开始时closures(连接)。 这项工作可以两天,但有时只是在工作后(每个小时或两个,而不是每个5分钟,或有时不工作一整天,然后重新启动没有任何理由..)。 那么,为什么飞机模式有时不会重新build立起无线连接呢? (还有一些时候呢?)(3) 这款手机是原装2.2版的三星Galaxy ACE,并一直插上充电。

AlarmManager启动服务时的唤醒locking

Android的AlarmManager Javadoc状态 When an alarm goes off, the Intent that had been registered for it is broadcast by the system, 在Android提供的API演示中有一个AlarmService (package 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); 所以在这个例子中,它不会执行PendingIntent mAlarmSender = PendingIntent.getBroadcast(…); 相反,它做了一个Javadoc永远不会提及的getService 。 我询问这个​​问题的原因是由于CPU唤醒锁的影响。 Javadoc说,一旦广播接收器的onReceive()返回,AlarmManger的唤醒锁就会被释放。 我想知道的是,如果你使用像例子中的闹钟,唤醒锁的含义是什么? Javadoc似乎没有解决这个问题。 如果有任何事情,似乎意味着您在设置闹钟时必须使用广播技术。

Android:前台服务与wakeLock

我对Android相对来说比较陌生,所以我所要求的可能看起来很明显(虽然我已经阅读了所有类似题目的问题,并已经进行了大量的search)。 我需要长时间连续监测加速度计。 已经提出了两种方法: 1)获取在加速度传感器被监视的整个时间保持的部分唤醒锁; 和 2)监视前台服务中的加速度计。 第一种方法似乎使用了大量的电池寿命。 第二种方法应该导致只有很less人遇害的服务,但是我不确定“很less”意味着什么。 应该采用哪种方法,我应该考虑哪些方法?

如何在没有SyncAdapter的情况下在Android上实现帐户?

我正在为使用内置帐户系统(使用AccountManager API)的Android应用程序实现login系统。 在Android 2.2+上一切都很好,但在Android 2.1上,不包括SyncAdapter会导致在帐户设置屏幕上重新启动(请参阅http://code.google.com/p/android/issues/detail?id=5009和AccountManager没有SyncAdapter? ) 为了解决这个问题,我实现了一个存根SyncAdapter,它只是从IBinder onBind(Intent intent)返回null ,并将相关的东西添加到清单。 这解决了Android 2.1的重启问题。 然而,它引入了一个进一步的问题:添加帐户后,Android系统稍后会启动帐户同步。 尽pipe没有发生错误(事实上,我的SyncAdapter什么都不做,除非通过返回null ,否则无法导致错误),同步图标保持停留在顶部的通知栏中。 这会导致Android同步系统保持永久性唤醒locking ,防止设备进入hibernate状态。 帐户不会在帐户设置屏幕(在“数据和同步”标题下)中列出任何可同步的组件,并且始终在帐户列表中显示同步状态的“同步处于closures状态”(即使同步图标在通知栏)。 禁用帐户同步不会消除该问题。 删除帐户可以停止问题。 我的猜测是我不应该返回null。 我应该返回一个ThreadedSyncAdapter的基本实现吗? 获得一个帐户系统没有相关的同步在2.1和2.2 +正常工作的任何帮助非常感谢。

Android – 我怎样才能从困难的睡眠中唤醒手机拍照?

我想要在几小时内定期从Android设备的相机拍摄照片,以创build延时video效果。 我设置了一个AlarmManager.RTC_WAKEUP标志设置为每几分钟启动一个服务的报警pipe理器。 该服务持有一个部分唤醒锁,做一些工作,然后通过启动活动的闹钟pipe理器调用广播接收器。 活动创build(或恢复),打开自己的唤醒锁,并设置相机预览表面。 一旦表面被设置,SurfaceHolder监听器的surfaceChanged()方法被调用,最终拍摄一张照片。 如果设备清醒,一切都如预期的完美。 但是,如果设备处于睡眠状态,一旦Activity的onResume()方法结束,活动立即暂停。 相机的预览表面永远不会完成初始化,也不会拍摄任何照片。 所以我的问题是: 有没有办法以编程方式唤醒电话? 我甚至尝试使用: PowerManager powerManager = (PowerManager)this.getSystemService(Context.POWER_SERVICE); powerManager.userActivity(SystemClock.currentThreadTimeMillis(),false); 但是,如果它睡着了,它不会唤醒电话。 有没有办法拍照而不使用预览表面视图? 有没有办法拍摄不依赖于asynchronouscallback的图片? 我可以把所有的活动onResume()方法的代码拍照吗? 有没有办法让Activity的onResume()方法运行足够长时间,以便相机的预览有足够的时间来初始化和调用所有的监听器? 我正确使用wakelocks,并且我已经在清单文件中正确设置了所有权限。 我的活动不保持足够长的时间,以使asynchronous侦听器正常工作。 而为了解决这个问题,我正在努力保持Android 1.6兼容的一切,因为这是我唯一可以访问的testing设备。 这是令人沮丧的东西!

Android:唤醒和解锁手机

我想弄清楚如何使用服务唤醒和解锁手机。 我一直在指这个post,但是,我不明白为什么它不工作。 这是我到目前为止的代码: public class WakephoneActivity extends Activity { BroadcastReceiver mReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Log.v(TAG, "Screen OFF onReceive()"); screenOFFHandler.sendEmptyMessageDelayed(0, 2000); } }; } private Handler screenOFFHandler = new Handler() { @Override public void handleMessage(Message msg) { […]

如何使android设备始终处于唤醒模式?

设备成功后, 现在,我需要使设备始终处于唤醒状态,即始终可见的用户界面,没有黑屏或任何白日梦屏幕。 要做到这一点,我认为我必须完成以下任务: 没有locking屏幕 – closures 睡眠设置为“从不” 白日梦设置为“closures” 我发现的全是应用层,也就是说有一些应用可以完成上面的任务。 但是,由于我的手机是根植的,我想用系统文件来实现,即使其他一些应用程序试图改变上面的function,他们也不应该这样做。

三星“应用程序优化”function可在3天后杀死后台应用程序

我们目前正在开发一个Android应用程序,这是一个健身追踪器应用程序。 它在后台不断运行,在大多数设备上都能正常运行,但是我们一直在使用某些三星设备完全停止运行。 经过一番调查,似乎一些三星设备有一个完全自定义的“应用程序优化”function( http://forums.androidcentral.com/samsung-galaxy-s6/599408-app-optimisation-after-updating.html ),其中基本上是一个(非常)原始版本的瞌睡function,存在于后来的Android版本,基本上只是谋杀应用程序,如果他们没有使用三天。 由于这个应用程序或多或less只是在进行日志logging,并没有打开这个活动,这对我们来说是一个很大的问题,因为这个function已经在很多三星设备上预先启用了。 这个问题是通过使用前台服务解决的,但这是一个解决scheme的大锤,需要用户持续的通知来干扰用户,而且我们确实不需要应用程序在前台 – 我们正常的电源Android的pipe理。 三星应用程序优化function明确指出,如果三天内未使用应用程序,它将“优化”应用程序。 有没有人有三星认为是“使用”的见解,我可以以某种方式触发? 副作用:在我看来,这是一个糟糕的实现function,使得Android上的开发更具敌意。 除了我们的用例之外,任何Messenger应用程序都会中断。 如果不是因为Facebook Messenger和Whatsapp硬连接到应用程序免费的事实,用户会发疯,因为它会打破他们的经验。

Android蓝牙和WakeLock关系

我正在研究在后台运行的Android应用程序,并支持蓝牙配件。 我想不断地在后台监听蓝牙设备,尝试打开一个电话sockets。 我的问题是,是否有可能实现这一点,而不是不断保持一个部分唤醒锁,因为这显然会有严重的电池后果。 所以我想知道的是蓝牙在手机上睡着了什么效果。 有一个开放的蓝牙sockets,手机保持清醒状态吗? 如果设备尝试连接,蓝牙芯片是否会自动唤醒Android? 我试图做一些testing来回答这些问题,但是很难将发生的事情与唤醒locking在一起; 此外,我不知道我是否可以依靠我观察到的行为,或者如果它在其他设备上发生变化。