2011-06-01 77 views
2

我想知道如何闲置多的时间里必须通过前:屏幕锁定,WiFi关机,手机睡眠之前的空闲时间?

  1. 屏幕锁(其实我知道那一个,它的配置中设置)
  2. 在Wi-Fi关闭?我可以在哪里更改此值?
  3. 手机进入睡眠模式?我可以在哪里更改此值?

更新:我不想锁定任何东西。我只想知道在没有锁定的情况下通常需要多长时间? OS代码中的哪个位置是指定的?

回答

2

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.

+0

这有点帮助。现在至少我知道超时#2可以链接到#1。谢谢。 – Emmanuel 2011-11-09 15:12:39

1

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

你不行。它是操作系统的一部分,将受到收购WifiLocks的影响。

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

你不行。它是操作系统的一部分,并且会受到已获得的WakeLocks的影响。

+0

假设没有WifiLocks或WakeLocks,默认周期是多少?我在哪里可以在OS代码中找到它? – Emmanuel 2011-06-01 16:04:43

+1

@Emmanuel:“默认的期限是多少?” - 无论设备制造商选择什么,或者开放源代码中的任何值作为默认值。你的代码绝对肯定不应该取决于这个值。 “我在哪里可以在操作系统代码中找到它?” - 我不知道,对不起。 – CommonsWare 2011-06-01 16:08:48

+0

不管怎么说... – Emmanuel 2011-06-01 16:17:07

0

我想无论是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> 

免责声明:没试过,但我希望它会工作

+0

我不认为你理解我的问题。我不是想阻止任何事情,我只想知道需要多长时间。如果我想防止东西,我会使用锁。 – Emmanuel 2011-06-01 16:06:08

相关问题