package com.robotium.solo; import junit.framework.Assert; import android.app.Instrumentation; import android.view.KeyEvent; /** * Contains send key event methods. Examples are: * sendKeyCode(), goBack() * * @author Renas Reda, renas.reda@robotium.com * */ class Sender { private final Instrumentation inst; private final Sleeper sleeper; /** * Constructs this object. * * @param inst the {@code Instrumentation} instance * @param sleeper the {@code Sleeper} instance */ Sender(Instrumentation inst, Sleeper sleeper) { this.inst = inst; this.sleeper = sleeper; } /** * Tells Robotium to send a key code: Right, Left, Up, Down, Enter or other. * * @param keycode the key code to be sent. Use {@link KeyEvent#KEYCODE_ENTER}, {@link KeyEvent#KEYCODE_MENU}, {@link KeyEvent#KEYCODE_DEL}, {@link KeyEvent#KEYCODE_DPAD_RIGHT} and so on */ public void sendKeyCode(int keycode) { sleeper.sleep(); try{ inst.sendCharacterSync(keycode); }catch(SecurityException e){ Assert.fail("Can not complete action! ("+(e != null ? e.getClass().getName()+": "+e.getMessage() : "null")+")"); } } /** * Simulates pressing the hardware back key. */ public void goBack() { sleeper.sleep(); try { inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); sleeper.sleep(); } catch (Throwable ignored) {} } }