Android如何在使用webView时保持屏幕开启

时间:2013-03-08 23:54:51

标签: java android

首先,我是Android和Java编程的新手。这就是说我不确定我能做什么。我希望能够使用webView加载网址并使用keep_screen_on来防止屏幕变暗。

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

感谢任何帮助。

这是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>

1 个答案:

答案 0 :(得分:3)

有三种可能的方法可以做到这一点,两种更好,功能相似,只是你使用的个人偏好。另一个更具攻击性,可用于其他需要系统其他部分保持清醒的场景(如处理器)。

以下是方法:

通知您希望屏幕保持在window manager的{​​{1}}

下面的此活动使屏幕保持使用窗口管理器,您不必担心管理它,它将在活动生命周期的持续时间内保持打开状态。屏幕可能暗淡但不会关闭。您的清单中不需要任何权限。

onCreate

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"); } } - 用于关键下载或您绝对不希望Android系统关闭的内容

此活动获取唤醒锁,以便在此活动中保持屏幕开启。这需要您的清单中的权限。管理唤醒锁并在完成后始终释放它们非常重要(在onPause中)。

WakeLock

声明屏幕保持在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布局文件中的标记XML layout不需要任何清单权限。

android:keepScreenOn=”true”