2012-06-07 3 views
1

저는 다소 이상한 문제가 있습니다. 최근에 나는 다음 코드를 사용하여 내 응용 프로그램에서 가동 잠금을 사용하려고 :Wakelock은 USB 케이블로만 연결됩니다.

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); 
    screenLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 
    button = (Button)findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      System.out.println("Clicked"); 
      try { 
       Thread.sleep(5000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      if (!locked) 
       setKeepScreenOn(WakeupLightActivity.this, true); 
      else setKeepScreenOn(WakeupLightActivity.this, false); 
      System.out.println("Screen will stay on"); 
     } 
    }); 
} 

public void setKeepScreenOn(Activity activity, boolean keepScreenOn) { 
    if(keepScreenOn) {      
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);   
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     this.screenLock.acquire(); 
    } 
    else {         
     activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);    
     activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     this.screenLock.release(); 
    } 
} 

가동 잠금 완벽하게 작동 : 5 초 (내 전화 및 잠금) 버튼을 누르면 화면이 켜집니다. 그러나이 테스트는 USB 케이블을 사용하여 디버깅을 위해 휴대 전화를 랩톱에 연결하는 동안 수행되었습니다.

이제 이상한 부분이 있습니다. 휴대 전화를 USB 케이블에 연결하지 않으면 wakelock이 화면을 켜지 않습니다. 내가 사용하고있는 장치는 HTC의 욕구입니다. 나는 실제로 동일한 HTC 욕망에서 그것을 테스트했다. 다음으로 HTC Desire HD에서 시험해 보았습니다. 그리고 짐작 : 그것은 완벽하게 다시 일했습니다! 나는이 문제에 대해 정말로 혼란스럽고 문제가 단순히 내 전화 유형의 결함인지, 아니면 내 코드에서 뭔가 잘못하고 있는지 궁금해합니다. 그것에 대해 할 수있는 일이 있습니까? 오작동하는 전화 유형을 가진 잠재 고객이 내 앱을 구입 한 후에도 동일한 문제가 발생할 경우 엄청난 어색함이 있습니다.

벽 플러그에 연결된 케이블로 휴대 전화를 충전하는 동안 응용 프로그램을 사용해 보았습니다. 이것은 내 전화기가 전혀 연결되지 않은 것과 같은 문제를 일으 킵니다. 두 HTC Desires 모두 동일한 Android 버전 (2.2.2)을 실행합니다.

답변

2

명백히이 모든 것은 단순히 잘못된 플래그를 사용했기 때문에 발생했습니다. WakeLock을 다음과 같은 플래그로 생성하여 문제를 해결했습니다 :

PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP 
관련 문제