All Android phones are not created equal. Android phones have many different manufacturers, e.g., Motorola, HTC, Samsung, and many different models within each manufacturer, e.g., Galaxy series. Each model has its own capbabilities, e.g., touchscreen, accelerometer, physical keyboard. For each phone, the mapping of hardware input devices to software event devices is different. RERAN uses this mapping to send the individual events captured in the recording back into the software event devices. The mapping, in turn, allows RERAN to ignore certain event devices during replay.
Ignoring certain event devices can be beneficial during testing. For example, developers can isolate bugs in their app if it will also create less overhead by ignoring event devices that are constantly reporting data, e.g., the light sensor, and are not vital to the app's functionality.
The phone's hardware to software device mapping can be viewed using the getevent tool in the Android SDK.
./adb shell getevent
The first set of output displays the mapping of the hardware input devices of the phone. An example output is below:
add device 1: /dev/input/event7 name: "sensors" add device 2: /dev/input/event6 name: "lm3530_led" add device 3: /dev/input/event5 name: "proximity" add device 4: /dev/input/event4 name: "sholes-keypad" add device 5: /dev/input/event3 name: "qtouch-touchscreen" add device 6: /dev/input/event2 name: "cpcap-key" add device 7: /dev/input/event1 name: "accelerometer" add device 8: /dev/input/event0 name: "compass"
The above phone has 8 input devices listed. Usually, the devices are obvious, e.g., qtouch-touchscreen is the touchscreen, but not always e.g., lm3530_led is the light sensor. Each phone will have its own mapping and may have different devices and device ordering.
Selective replay can be used by providing the event number mapping you want to keep during the replay. For example, below we use the "-e" flag of the Translate program to specify the events we want to keep in the above phone, namely, 2,3,4,5,6,8. This will ignore events 1 and 7, the "sensors" device and the "accelerometer" device, respectively. The ignored events will not be replayed.
java -jar translate.jar recordedEvents.txt translatedEvents.txt -e 2,3,4,5,6,8
For questions or feedback:
androidreran (at) gmail (dot) com