2011-05-20 158 views
1

我正在开发一个应用程序,我需要在后台发送和接收数据包。但我发现当屏幕关闭时,cpu和网络也被禁用。所以我在Android Developers上发现,如果屏幕熄灭,我应该使用唤醒锁定和WiFi锁定让CPU继续工作。此解决方案适用于LG Optimus One等其他设备,但不适用于Samsung Galaxy Tab。有了这个设备,当屏幕关闭时,我不能再收到数据包(UDP),并且当按下电源按钮重新启用屏幕时,我重新开始接收数据包。 在我的代码我呼吁:三星Galaxy Tab中的唤醒锁

powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_W AKE_LOCK, "TAG"); 

然后

wakeLock.acquire(); 

我认为这是一个三星的错误,但我不知道这一点,如果有人可以给我一些暗示我会很感激。

P.S.我需要一些编程帮助...我已经知道,如果我修改一些手动设置以避免关闭屏幕,这将起作用。但我正在开发一个应用程序,我需要代码!

回答

0

你应该使用PARTIAL_WAKE_LOCK你的情况。

我不知道为什么SCREEN_DIM_WAKE_LOCK是不够的(没有找到任何证明这一点的文档),但PARTIAL_WAKE_LOCK在类似的情况下工作得很好。

作为另一种选择,您可以使用WifiLock。但是你需要聪明点,因为你的网络连接可能是2G或3G,而不是Wi-Fi。所以当你实际使用3G/2G /等时,你不应该持有Wi-Fi锁。

+0

你有没有试过Galaxy Tab?因为我试过这个,但是当屏幕关闭时,我只能发送和不接收。PARTIAL_WAKE_LOCK应该保持CPU活着,但在这种情况下,似乎当屏幕关闭这不起作用。 – flyhalf8610 2011-05-20 09:37:45

+0

是的,它适用于Galaxy Tab(我刚刚重新检查)。你为什么认为这是Galaxy Tab特有的? – inazaruk 2011-05-20 10:03:50

+0

因为我正在测试其他设备(LG Optimus One),它确实有效!此外,我正在检查,但与PARTIAL_WAKE_LOCK udp接收不能通过无线网络时,屏幕关闭..我认为这是一个三星的错误。像省电功能。 – flyhalf8610 2011-05-20 10:13:12

0

您可能还想检查高级WIFI设置。 在首选项 - WIFI设置中,您可以点击菜单键,点击高级图标,然后检查WIFI睡眠策略的值。其中一个选项是“屏幕关闭时”。

+0

在这个首选项中,我选中的选项是“从不”。另外我需要一个编程答案,因为我正在开发一个应用程序。 – flyhalf8610 2011-05-20 09:43:28