/*
* Copyright (C) 2013 DroidDriver committers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.appium.droiddriver;
import android.graphics.Bitmap.CompressFormat;
import io.appium.droiddriver.actions.Action;
/**
* Interface for device-wide interaction.
*/
public interface UiDevice {
/**
* Returns whether the screen is on.
*/
boolean isScreenOn();
/** Wakes up device if the screen is off */
void wakeUp();
/** Puts device to sleep if the screen is on */
void sleep();
/** Simulates pressing "back" button */
void pressBack();
/**
* Executes a global action without the context of a certain UiElement.
*
* @param action The action to execute
* @return true if the action is successful
*/
boolean perform(Action action);
/**
* Takes a screenshot of current window and stores it in {@code path} as PNG.
* <p>
* If this is used in a test which extends
* {@link android.test.ActivityInstrumentationTestCase2}, call this before
* {@code tearDown()} because {@code tearDown()} finishes activities created
* by {@link android.test.ActivityInstrumentationTestCase2#getActivity()}.
*
* @param path the path of file to save screenshot
* @return true if screen shot is created successfully
*/
boolean takeScreenshot(String path);
/**
* Takes a screenshot of current window and stores it in {@code path}. Note
* some implementations may not capture everything on the screen, for example
* InstrumentationDriver may not see the IME soft keyboard or system content.
*
* @param path the path of file to save screenshot
* @param format The format of the compressed image
* @param quality Hint to the compressor, 0-100. 0 meaning compress for small
* size, 100 meaning compress for max quality. Some formats, like PNG
* which is lossless, will ignore the quality setting
* @return true if screen shot is created successfully
*/
boolean takeScreenshot(String path, CompressFormat format, int quality);
}