我做了一个应用程序,将手机转换为网络摄像头,并使用手机连接将图像发送到互联网网络空间。
我正在使用广告活动,将警报管理器设置为每隔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,并且始终可以充电。
答案 0 :(得分:5)
要防止设备进入“省电模式”,请尝试使用WIFI_MODE_FULL_HIGH_PERF类型的wifi锁定
它直到android 3.1才公开
但你仍然可以通过硬编码使用它,WIFI_MODE_FULL_HIGH_PERF的值是3(int)。
我在3.1之前的设备上尝试过它。它就像一个魅力!祝你好运!