Ах, ха!
ОК, по крайней мере, для изучения состояния экрана. Вы хотите сделать следующее:
В эмуляторе перейдите в раздел «Настройки \ Приложения \ Разработка» и снимите флажок «Пробудиться»
На этом этапе заблокируйте ваш эмулятор. Вы должны увидеть экран блокировки.
Теперь запустите свой тест на пробуждение от блокировки.
Для меня я сделал следующее (который использует roboguice 1.1.2)
@MediumTest
public void test_And_Screen_Is_In_Sleep_It_Should_Not_Make_Screen_Bright() throws Exception
{
//currently test hates this even after I have assigned it the proper rights
//to quote Ted Striker: What a pisser! :)
//_power.get().goToSleep(0);
boolean screenOn = _power.get().isScreenOn();
assertFalse(screenOn);
if (!screenOn)
{
_wake.get();
boolean screenOn1 = _power.get().isScreenOn();
assertFalse(screenOn1);
}
if (_wake != null)
{
_wake.release();
}
}
У меня есть интерфейс под названием IWake, например:
public interface IWake
{
void get();
void release();
}
В реализации для IWake я просто настроил класс для выполнения всей тяжелой работы по приобретению (get ()) и выпуску (который также является release ())
Для принудительной блокировки тестирующего устройства мне пришла в голову отличная идея, поскольку вы (как правило) не можете использовать этот метод сна в PowerManager.
Сделай это!
В моем методе тестирования я сделал это для настройки:
@Override
public void setUp() throws Exception
{
super.setUp();
_pwr = (PowerManager) getInstrumentation().getContext().getSystemService(Context.POWER_SERVICE);
//setup timeout which is part of: android.provider.Settings.System
System.putInt(getInstrumentation().getContext().getContentResolver(), System.SCREEN_OFF_TIMEOUT, 0);
}
В принципе я решил изменить время ожидания на 0 в настройках. Поскольку это происходит, оно мгновенно блокируется. Как чертовски круто это? :) В любом случае, я надеюсь, что это помогает другим
Ура,
Келли