Android如何在使用webView时保持屏幕状态

问题描述:

首先,我是Android和Java编程的新手。这就是说我不确定我想做什么是可以做到的。我希望能够使用webView加载url并使用keep_screen_on来防止屏幕变暗。Android如何在使用webView时保持屏幕状态

以下是我正在使用的代码。我能够加载网页,但屏幕在一分钟左右后变暗。

任何帮助表示赞赏。

这是Java页面:

package com.mysite; 
import com.mysite.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.WindowManager; 
import android.webkit.WebView; 

public class MainActivity extends Activity { 
    public WebView myWebView = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_flag); 

     myWebView = new WebView(this);  
     myWebView.loadUrl("http://www.mysite.com"); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    } 
} 

这是我的清单页:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mysite" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.mysite.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

有这样做的3点可能的方式,二是优选的功能类似,它只是个人喜好你使用的。另一个更具侵略性,可用于其他场合,您希望系统的其他部分也保持清醒状态(如处理器)。

这里的方法:

通知你想要的画面留在

低于该活动的window manageronCreate保持在屏幕上使用的窗口管理器,你不必担心管理它将在活动生命周期期间保持不变。屏幕可能会变暗,但不会关闭。清单中不需要任何权限。

package com.mysite; 
import com.mysite.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.WindowManager; 
import android.webkit.WebView; 

public class MainActivity extends Activity { 
    public WebView myWebView = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_flag); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     myWebView = new WebView(this);  
     myWebView.loadUrl("http://www.mysite.com"); 

    } 
} 

WakeLock - 用于你绝对不希望Android系统关停

本次活动的关键下载或事物aquires一个唤醒锁定,以保持在屏幕上,而在本次活动。这需要清单中的许可。管理你的唤醒锁并且在完成时(onPause)总是释放它们是非常重要的。

public class MainActivity extends Activity { 
    private static final String TAG = "com.mysite.ScreenOnWakeLockActivity.WAKE_LOCK_TAG"; 
    private WakeLock wakeLock; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_flag); 

     PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
     wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG); 

     myWebView = new WebView(this);  
     myWebView.loadUrl("http://www.mysite.com"); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     wakeLock.acquire(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     wakeLock.release(); 
    } 
} 

声明屏幕停留在你的XML layout

这一活动保持在屏幕上,我们使用android:keepScreenOn=”true”不需要清单权限XML布局文件使用的标志。

/** 
* This activity keeps the screen on using a flag in the XML layout file we are using 'android:keepScreenOn="true"' 
* We don't use a wakelock so no manifest permissions are needed 
* 
* @author chirag.saga 
* 
*/ 
public class MainActivity extends Activity { 
    public WebView myWebView = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_flag); 

     myWebView = new WebView(this);  
     myWebView.loadUrl("http://www.mysite.com"); 
    } 
} 
+0

另请参见myWebView.setKeepScreenOn(true);可以使用。 – andrew 2013-03-09 00:39:17

+0

其中,手动操作'WakeLock'对于所需的行为来说是最糟糕的,因为您需要'WAKE_LOCK'权限,并且有更大的机会搞砸了事情。 – CommonsWare 2013-03-09 00:42:42