屏幕锁定,wifi关机,手机睡眠前的空闲时间段?

时间:2011-06-01 15:20:20

标签: android

我想知道不活动的时间之前必须通过:

  1. 屏幕锁定(实际上我知道那个,它可以在设置中配置)
  2. Wi-Fi关闭?我在哪里可以更改此值?
  3. 手机进入睡眠模式?我在哪里可以更改此值?
  4. 更新:我不想锁定任何东西。我只想知道没有锁定时通常需要多长时间?在OS代码中指定了哪个?

3 个答案:

答案 0 :(得分:2)

  

Wi-Fi关闭?我在哪里可以更改此值?

我不知道你是否可以改变这个值,CommonsWare说这是不可能的。 但是在我的手机上(Froyo,2.2.1),如果按Wifi Settings上的菜单按钮,则会出现“高级”选项。在那里你可以设置Wifi不活动策略。我可以选择永不关闭它,在屏幕关闭时关闭它,或者只在没有连接时关闭它。

这对你有帮助吗?

好的,这是关于#2的信息

  

Wi-Fi关闭?我在哪里可以更改此值?

显然在android.provider.Settings中有一个未记录的值,称为wifi_idle_ms来控制它。我找到了一些信息here,该设置存储在一个数据库中,该数据库通常位于安全表上的/data/data/com.android.providers.settings/databases/settings.db中。有关如何在XDA上更改它的说明,而且似乎是默认值为15分钟或900000。

答案 1 :(得分:1)

  

Wi-Fi关闭?我在哪里可以更改此值?

你做不到。它是操作系统的一部分,将受到获得的WifiLocks的存在的影响。

  

手机进入睡眠模式?我在哪里可以更改此值?

你做不到。它是操作系统的一部分,将受到获得的WakeLocks的存在的影响。

答案 2 :(得分:0)

我认为无论是Wi-Fi还是手机都会收到Broadcast并基于此行事。如果是这样,您可以尝试在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>

免责声明:从未尝试过,但我希望它能够正常运作