Я хотел бы создать операцию StandBy для своего устройства, и до сих пор я создал действие, которое при вызове отключит мой дисплей.StandBy like activity
Код следующее:
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 генерируется, и, как следствие, андроид EthernetService отключает мое соединение. Кто-нибудь знает, как сохранить соединение активным?
Спасибо;)
Я не совсем уверен, что вы пытаетесь, но это было бы возможно поставить подключение в Службе, которая держит замок бодрствования? Если вы что-то загружаете, отбросьте блокировку слежения, чтобы устройство могло полностью заснуть. Если вы просто пытаетесь сохранить соединение открытым, это может быть довольно серьезная батарея. – DeeV
Моя проблема в том, что мне нужно просыпаться на своем устройстве (даже на экране) с сообщением, полученным от моего подключения, поэтому я не могу потерять соединение (я не против проблемы с батареей, чтобы сохранить мой экран). –
, если вы удерживаете PARTIAL_WAKE_LOCK, подключение к Интернету не должно быть отключено. –