2012-11-19 48 views
0

手機正在睡覺時,我想要進行動畫活動(很像電話鈴聲動畫)。通過窗口標誌打開/關閉屏幕

我讀過有關使用該窗口管理器標誌打開屏幕的許多職位,所以我所做的就是將這段代碼到我的活動的onCreate()函數:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(
     WindowManager.LayoutParams.FLAG_FULLSCREEN | 
     WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
     WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, 

     WindowManager.LayoutParams.FLAG_FULLSCREEN | 
     WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
     WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
    ); 

    setContentView(R.layout.act_image_activity); 
    startAnimation(); 
} 

我的問題是:

  • 動畫從一小段延遲開始;當屏幕打開時,我可以看到鍵盤鎖(或鍵盤禁用時的主屏幕),然後我的活動開始。
  • 在調用我的活動的finish()方法後,手機不會進入馬上睡覺,而是重新開始睡眠定時器。

有人可以告訴我如何讓我的動畫活動在屏幕打開後立即顯示,並在屏幕完成後立即關閉屏幕?

+0

請檢查答案接受,如果它有幫助 – Talha

回答

0

但這reciever到您的清單

<receiver android:name="IntentReceiver" > 
<intent-filter> 
    <action android:name="android.intent.action.SCREEN_ON" ></action> 
    <action android:name="android.intent.action.SCREEN_OFF" ></action> 
</intent-filter> 
</receiver> 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_main); 

     registerReceiver(new BroadcastReceiver() {       
     public void onReceive(Context arg0, Intent arg1) { 
      Log.v("tag", "screen on"); 
      // You can catch screen on here and start your animation 
     } 
     }, new IntentFilter(Intent.ACTION_SCREEN_ON)); 

     registerReceiver(new BroadcastReceiver() { 
     public void onReceive(Context arg0, Intent arg1) { 
      Log.v("tag", "screen off"); 
      // You can catch screen off here and start your animation 
      } 
     }, new IntentFilter(Intent.ACTION_SCREEN_OFF)); 
    } 
0

至於初始延遲,看到鍵盤鎖的一部分,我不認爲有一種方法,以防止這一點。但是,您可以通過調用PowerManager.goToSleep來強制關閉屏幕。

+1

你不能關閉屏幕作爲一個普通的應用程序,因爲你沒有得到所需的權限:http://stackoverflow.com/questions/5710971/android-what -permissions,需要對呼叫PowerManager的-gotosleepn,把設備-I – zapl