我想爲我的設備創建一個StandBy活動,到目前爲止我創建了一個活動,當被調用時會關閉我的顯示。Standby像活動
的代碼如下:
public class MainActivity extends Activity {
private SensorManager mSensorManager;
private PowerManager mPowerManager;
private WindowManager mWindowManager;
private WakeLock mWakeLock;
private Button button;
private TextView textView;
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
// Get an instance of the SensorManager
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// Get an instance of the PowerManager
mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
// Get an instance of the WindowManager
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.getDefaultDisplay();
setContentView(R.layout.activity_main);
// textView = (TextView)findViewById(R.id.textView1);
button = (Button) findViewById(R.id.testText);
button.setOnClickListener(mButtonStopListener);
mWakeLock = mPowerManager.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
// mWakeLock.acquire();
final WindowManager.LayoutParams params = getWindow()
.getAttributes();
params.screenBrightness = 0;
getWindow().setAttributes(params);
} catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("onCreate", e.getMessage());
}
} // END onCreate
View.OnClickListener mButtonStopListener = new OnClickListener() {
@Override
public void onClick(final View v) {
try {
if (mWakeLock.isHeld()) {
mWakeLock.release();
System.err.println("mWakeLock.release() onTouch");
}
} catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("onPause", e.getMessage());
}
}
};
@Override
protected void onResume() {
super.onResume();
try {
if (mWakeLock.isHeld()) {
System.err.println("mWakeLock.release() onResume");
mWakeLock.release();
} else {
System.err.println("mWakeLock.acquire() onResume");
mWakeLock.acquire();
}
} catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("onResume", e.getMessage());
}
}
@Override
protected void onPause() {
super.onPause();
}
}
正如我所說的這段代碼使我能夠關閉屏幕,我能夠把屏幕兩次單擊電源按鈕(我不知道爲什麼我有兩次點擊按鈕,但這是次要問題)。
主要問題是,當顯示器關閉動作ACTION_SCREEN_OFF生成,並因此android的以太網服務禁用我的連接。任何人都知道如何保持連接活動?
謝謝;)
我不太確定你想要什麼,但它有可能把你的連接在一個持有喚醒鎖的服務中?如果你正在下載一些東西,那麼放下喚醒鎖,這樣設備就可以完全睡眠。如果你只是想保持連接打開,那麼它可能是一個非常嚴重的電池接收器。 – DeeV 2014-12-05 17:54:10
我的問題是,我需要從我的連接中收到一條消息來喚醒我的設備(甚至屏幕),所以我不能斷開連接(我不介意關於電池問題,唯一需要屏幕休眠的是以節省我的顯示器壽命)。 – 2014-12-08 22:41:35
如果您持有PARTIAL_WAKE_LOCK,則不應禁用互聯網連接。 – 2014-12-09 10:02:29