0

I know this seems like an odd question, but I need to :

  1. grab info before sleep
  2. sleep
  3. do tasks
  4. wake up
  5. get assert results

What I have tried is to enable the sleep in the set up portion of the test, unfortunately it kills everything (which I know is supposed to happen by android's standards).

Thanks, Kelly

4

2 に答える 2

0

デバイスがある種の「スリープ」モードになっている場合、実際には何もできません。それがどのように聞こえるかから、あなたはウェイクロックを維持する必要があります。

http://developer.android.com/reference/android/os/PowerManager.WakeLock.html

ウェイクロックにはさまざまなレベルがあり、おそらく画面をオフにすることができるものが必要ですが、それでもコードを実行することができます。明らかに、これはバッテリーのパフォーマンスに影響を与えるため、デバイスが「スリープ」している間に何かを行う必要があり、完了したら必ずウェイクロックを解除してください。

于 2012-01-14T18:01:13.007 に答える
0

あはは!

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に変更することにしました。これが発生すると、即座にロックされます。これはなんてクールなの?:)とにかく、これが他の人に役立つことを願っています

乾杯、ケリー

于 2012-01-15T03:22:43.973 に答える