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 manager
在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");
}
}
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");
}
}
另请参见myWebView.setKeepScreenOn(true);可以使用。 – andrew 2013-03-09 00:39:17
其中,手动操作'WakeLock'对于所需的行为来说是最糟糕的,因为您需要'WAKE_LOCK'权限,并且有更大的机会搞砸了事情。 – CommonsWare 2013-03-09 00:42:42