Chciałbym utworzyć działanie StandBy dla mojego urządzenia i do tej pory stworzyłem działanie, które po wywołaniu wyłącza mój wyświetlacz.StandBy lubię działalność
Kod jest następujący:
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();
}
}
Jak powiedziałem to kod umożliwi mi wyłączyć ekran, a ja jestem w stanie włączyć ekran dwukrotne kliknięcie przycisku zasilania (Nie wiem, dlaczego mam dwa razy kliknij przycisk, ale jest to problem dodatkowy).
Głównym problemem jest to, że po wyłączeniu wyświetlacza generowana jest akcja ACTION_SCREEN_OFF, co powoduje, że android EthernetService wyłącza moje połączenie. Czy ktoś wie, jak utrzymywać połączenie aktywne?
Dzięki;)
Nie jestem do końca pewien, co chcesz, ale byłoby to możliwe, aby umieścić połączenia w usłudze, która posiada blokadę wybudzającą? Jeśli coś pobierasz, upuść blokadę wybudzania, aby urządzenie mogło zrobić pełny sen. Jeśli próbujesz utrzymać połączenie otwarte, może to być dość poważny zlew baterii. – DeeV
Moim problemem jest to, że muszę obudzić moje urządzenie (nawet ekran) z wiadomością otrzymaną z mojego połączenia, więc nie mogę stracić połączenia (nie mam nic przeciwko problemowi z baterią, jedyną potrzebą snu z ekranu jest aby zaoszczędzić czas wyświetlania). –
jeśli posiadasz PARTIAL_WAKE_LOCK, połączenia internetowego nie należy wyłączać. –