2013-03-08 3 views
3

첫 번째로 Android와 Java 프로그래밍이 처음입니다. 그게 내가하고 싶은 일을 할 수 있는지 확신 할 수 없다고 말했다. WebView를 사용하여 url을로드하고 keep_screen_on을 사용하여 화면이 흐려지는 것을 방지하고 싶습니다.안드로이드 WebView 사용 중에 화면을 유지하는 방법

아래 코드는 제가 사용하고있는 코드입니다. 웹 페이지를로드 할 수 있지만 1 분 정도 지나면 화면이 어두워집니다.

도움을 주시면 감사하겠습니다.

이 자바 페이지입니다 :

<?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

이 일의 3 가지 방법, 두 가지가 바람직하고, 기능이 비슷가 있습니다 그냥 개인적인 취향입니다 : 이것은 내 매니페스트 페이지

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); 
    } 
} 

입니다 당신이 사용하는. 다른 하나는 좀 더 공격적이며 시스템의 다른 부분이 깨어있는 상태로 유지되기를 원하는 다른 시나리오에서도 사용할 수 있습니다 (예 : 프로세서). 여기

는 방법이다 :

알려 화면이

아래이 활동에 남고 싶어 onCreate에서 window manager 창 관리자를 사용하여 화면을 유지, 당신에 대해 걱정할 필요가 없습니다 이를 관리하는 것은 활동 수명주기 동안 유지됩니다. 화면이 어둡지 만 꺼지지는 않습니다. 매니페스트에 사용 권한이 필요하지 않습니다.

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 - 당신은 확실히 안드로이드 시스템이

이 활동에 대한 종료하지 않으려는 중요한 다운로드 또는 일에 사용이 활동에 반면에 화면을 유지하기 위해 가동 잠금을 사들. 이 경우 매니페스트에 권한이 필요합니다. wakelocks를 관리하고 끝나면 항상 해제해야합니다 (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(); 
    } 
} 

화면이 활동은 우리가 더 매니페스트 권한이 필요하지 않습니다 android:keepScreenOn=”true”을 사용하는 XML 레이아웃 파일에 플래그를 사용하여 화면을 유지하여 XML layout

에 켜져 선언합니다.

/** 
* 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

+0

이 중 수동으로'WakeLock'을 조작하는 것은 원하는 동작에 대해 최악입니다. 왜냐하면'WAKE_LOCK' 권한이 필요하고 엉망이 될 가능성이 더 큽니다. – CommonsWare

관련 문제