あはは!
OK、少なくとも画面の状態を確認するために。次のことを行います。
エミュレーターで、設定\アプリケーション\開発領域に移動し、「起きている」のチェックを外します
この時点で、エミュレーターをロックします。ロック画面が表示されるはずです。
次に、wake lock のテストを実行します。
私にとっては、次のことを行いました(これは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( これも 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に変更することにしました。これが発生すると、即座にロックされます。これはなんてクールなの?:)とにかく、これが他の人に役立つことを願っています
乾杯、ケリー