2014-11-04 5 views
2

사용자가 통화중인 동안 터치 이벤트를 사용하거나 사용하지 않도록 설정해야하는 발신 화면에서 작업하고 있습니다.Android 기기에서 화면 터치 사용 안함

protected void sleepScreen(boolean on){ 
    if(on == true) { 
     WindowManager.LayoutParams params = getWindow().getAttributes(); 
     params.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; 
     getWindow().setAttributes(params); 
    } else { 
     WindowManager.LayoutParams params = getWindow().getAttributes(); 
     params.flags |= WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON; 
     getWindow().setAttributes(params); 
    } 

} 

FLAG_NOT_TOUCHABLE 잘 비활성화 터치 이벤트를 작동합니다

public void onSensorChanged(SensorEvent sensorEvent) { 
    if(sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
     if(sensorEvent.values[0] == 0) { //Sleep 
      sleepScreen(true); 
     } else { //Wake 
      sleepScreen(false); 
     } 
    } 
} 

아래는 내 sleepScreen() 방법 :이 나는 onSensorChanged() 메소드를 내 활동 SensorEventListener를 구현하고 무시를 들어

. 그러나 터치 이벤트를 다시 사용하도록 설정할 수는 없습니다.

Pls help!

답변

2

STEP 1 :

public void onSensorChanged(SensorEvent sensorEvent) { if (sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY) { if (sensorEvent.values[0] == 0) { //Sleep sleepScreen(true); } else { //Wake sleepScreen(false); } } } 

STEP 3 SensorEventListener

를 구현하는 방법을 재정의 :
이것을 포함가 된 setContentView()

int powerValue = 0x00000020; 

    try { 
     powerValue = PowerManager.class.getClass().getField("PROXIMITY_SCREEN_OFF_WAKE_LOCK").getInt(null); 
    } catch (Throwable ignored) { 
    } 

    mPowerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName()); 

2 단계를 호출하기 전에에서 onCreate이 추가 화면 잠금을 비활성화하는 방법

01 23,

4 단계 :의 AndroidManifest.xml

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
에 웨이크 잠금 권한을 추가