В один прекрасный момент мой лабрадор основательно пожевал Android смартфон Мегафон Логин (он же Huawei U8180 Ideos X1) сына. Хотя у него и развитая общая тормознутость, он обладает неплохой 3.2 МП камерой сзади и поэтому было решено сделать из него беспроводную WiFi вебкамеру.
Проблема оставалась одна, точнее три - полностью неработающий тачскрин, а также выключенный wifi и отсутствие программы Google Play (выпилил, чтоб ребенок ничего лишнего не поставил).
0. Подключаем телефон к компьютеру и запускаем ADB
Нам очень крупно повезло, т.к. режим разработчика на нем был подключен. Иначе пришлось бы посвятить еще одну статью перепрошивке смартфона с этим предустановленным режимом, а может быть ничего бы и не получилось.
Но режим оказался включен, и можно было подключить смартфон к ПК, установить драйвер ADB и законнектиться через ADB шелл. Хорошая статья по подключению и работе через ADB есть на 4pda.
1. Разблокируем экран
Результат нашей бурной деятельности невозможно было увидеть, т.к. экран был заблокирован, а без тачскрина что-либо сделать было проблематично. Я попытался разблокировать смартфон командами ADB, но с сожалению ничего не получалось. Поэтому в эклипсе была написана программа:
Создаем новый пустой проект в Eclipse, в AndroidManifest прописываем строчку:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
В основную активити добавляем три строчки:
KeyguardManager keyguardManager = (KeyguardManager)getSystemService( Activity.KEYGUARD_SERVICE );
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
Запускаем и вуаля, смартфон разблокирован!
2. Осваиваем управление через ADB
Еще полчаса ушло на освоение работой смартфона кейкодами.
Если мы хотим написать текст, пишем в консоли:
input text [текст]
Если мы хотим послать событие, пишем в консоли:
input keyevent [код события]
Их перечень: 0 --> "KEYCODE_UNKNOWN"
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"
Самые полезные команды это - 66 - enter, 82 - menu, 19,20,21,22 - стрелки (помогают перемещаться по настройкам).
Освоил список, когда настраивал WiFi для подключения на работе.
3.Устанавливаем необходимое
Теперь необходимо установить программу IP Webcam. Она на Google Play. У нее очень аскетичный интерфейс в меню, который позволяет прыгать по нему командами ADB, многие программы этого не дают делать.
Через ADB программа устанавливается так:
adb install *.apk
Чтобы запустить приложение, придется провести реверс-инжиниринг и узнать в AndroidManifest.xml как называется package и первая (LAUNCHER) активити этого приложения.
Есть набор утилит APK MultiTool для разбора дистрибутива программы.
Лаунчер этого приложения, как ни странно, называется Configuration:
<activity android:name="Configuration" android:label="@string/app_name" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Команды на запуск определенного приложения неплохо описаны здесь:
http://stackoverflow.com/questions/4567904/how-to-start-an-application-using-android-adb-tools
Запускаем командой
am start -n com.package.name/com.package.name.ActivityName
в нашем случае
am start -n com.pas.webcam/com.pas.webcam.Configuration
а дальше уже по отработанной технологии настраиваем его как нам надо.
Наверное всё