我想知道如何闲置多的时间里必须通过前:屏幕锁定,WiFi关机,手机睡眠之前的空闲时间?
- 屏幕锁(其实我知道那一个,它的配置中设置)
- 在Wi-Fi关闭?我可以在哪里更改此值?
- 手机进入睡眠模式?我可以在哪里更改此值?
更新:我不想锁定任何东西。我只想知道在没有锁定的情况下通常需要多长时间? OS代码中的哪个位置是指定的?
我想知道如何闲置多的时间里必须通过前:屏幕锁定,WiFi关机,手机睡眠之前的空闲时间?
更新:我不想锁定任何东西。我只想知道在没有锁定的情况下通常需要多长时间? OS代码中的哪个位置是指定的?
Wi-Fi关闭了吗?我可以在哪里更改此值?
我不知道你是否可以改变这个值,CommonsWare说这是不可能的。 但是,在我的手机(Froyo,2.2.1)上,如果按下Wifi设置上的菜单按钮,则会出现“高级”选项。在那里你可以设置Wifi不活动策略。我可以选择永不关闭,关闭屏幕或关闭屏幕,或只在未连接时关闭。
这有帮助吗?
好吧,这里是关于#2
信息在Wi-Fi关闭?我可以在哪里更改此值?
显然在android.provider.Settings中有一个无证的值,叫做wifi_idle_ms,它控制着这个值。我发现了一些信息here,该设置存储在安全表上通常位于/data/data/com.android.providers.settings/databases/settings.db中的db中。有关于如何在XDA上更改它的说明,并且共识似乎是默认值为15分钟或900000.
Wi-Fi关闭了吗?我可以在哪里更改此值?
你不行。它是操作系统的一部分,将受到收购WifiLocks
的影响。
手机进入睡眠模式?我可以在哪里更改此值?
你不行。它是操作系统的一部分,并且会受到已获得的WakeLocks
的影响。
假设没有WifiLocks或WakeLocks,默认周期是多少?我在哪里可以在OS代码中找到它? – Emmanuel 2011-06-01 16:04:43
@Emmanuel:“默认的期限是多少?” - 无论设备制造商选择什么,或者开放源代码中的任何值作为默认值。你的代码绝对肯定不应该取决于这个值。 “我在哪里可以在操作系统代码中找到它?” - 我不知道,对不起。 – CommonsWare 2011-06-01 16:08:48
不管怎么说... – Emmanuel 2011-06-01 16:17:07
我想无论是Wi-Fi或手机收到Broadcast
s和基于此。如果是的话,你可以尝试拦截这些广播之前的Wi-Fi和手机会收到它们,然后干脆取消Broadcast
,如:
public class ScreenStateBroadcastReceiver extends BroadcastReceiver
{
private static String TAG=ScreenStateBroadcastReceiver.class.getName();
@Override
public void onReceive(Context context, Intent intent)
{
//checking has screen been switched off?
if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction()))
{
Log.v(TAG, "Screen is going off");
this.abortBroadcast();
}
}
}
为了确保您的应用程序将先于其他操作系统组件接收Broadcast
- 你可以尝试把广播接收优先投入AndroidManifest水木清华这样的:
<receiver android:name=".ScreenStateBroadcastReceiver">
<intent-filter android:priority="10000">
<action android:name="android.intent.action.SCREEN_OFF"/>
</intent-filter>
</receiver>
免责声明:没试过,但我希望它会工作
我不认为你理解我的问题。我不是想阻止任何事情,我只想知道需要多长时间。如果我想防止东西,我会使用锁。 – Emmanuel 2011-06-01 16:06:08
这有点帮助。现在至少我知道超时#2可以链接到#1。谢谢。 – Emmanuel 2011-11-09 15:12:39