2013-03-25 65 views
0

我使用了下面的代碼,但沒有找到解決方案。Android - 計數電源按鈕點擊並開始活動

MyReceiver.java:

import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.util.Log; 
    import android.widget.Toast; 

    public class MyReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

    Log.v("onReceive", "Power button is pressed."); 

    Toast.makeText(context, "power button clicked", Toast.LENGTH_LONG) 
      .show(); 
    } 

} 

MainActivity.java:

import android.os.Bundle; 
    import android.app.Activity; 
    import android.view.Menu; 

    public class MainActivity extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.activity_main, menu); 
      return true; 
     } 
    } 

的AndroidManifest.xml:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name=".MyReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.SCREEN_OFF"></action> 
     <action android:name="android.intent.action.SCREEN_ON"></action> 
     <action android:name="android.intent.action.ACTION_POWER_CONNECTED"></action> 
     <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"></action> 
     <action android:name="android.intent.action.ACTION_SHUTDOWN"></action> 
    </intent-filter> 
</receiver> 
</application> 

但我沒有得到任何吐司消息點擊Power Button。請幫助我瞭解如何獲得點擊次數爲PowerButton的點擊次數,如果點擊次數等於5次,則轉到另一個actvity。請幫我達到這個目標?

+0

你看過你鏈接到問題的答案?你需要使用一項服務... – Tushar 2013-03-25 06:38:00

+0

@Tushar但那不行?如何使用服務? – 2013-03-25 06:40:12

回答

5

試試這個,

public class MyReceiver extends BroadcastReceiver { 
    static int countPowerOff=0; 
    private Activity activity=null; 
    public MyReceiver (Activity activity) 
    { 
    this.activity=activity; 
    } 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Log.v("onReceive", "Power button is pressed."); 

     Toast.makeText(context, "power button clicked", Toast.LENGTH_LONG) 
      .show(); 

    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) 
{ 
    countPowerOff++;  
} 
else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) 
{ 
     if(countPowerOff==5) 
     { 
      Intent i =new Intent(activity,NewActivity.class); 
      activity.startActivity(i); 
     } 
    } 

} 

而且,

public class MainActivity extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
      filter.addAction(Intent.ACTION_SCREEN_OFF); 
      MyReceiver mReceiver = new MyReceiver (this); 
      registerReceiver(mReceiver, filter); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.activity_main, menu); 
      return true; 
     } 
    } 
0

試試這個讓電源按鈕事件

@Override 

public boolean dispatchKeyEvent(KeyEvent event) { 
if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { 

    return true; 
} 

return super.dispatchKeyEvent(event); 
}