...

понедельник, 27 января 2014 г.

Что делать, если к вам попал Android со сломанным сенсорным дисплеем

image

В один прекрасный день ко мне в руки попал Nexus 4. В наших краях это редкость, поэтому хотелось бы использовать его как основной телефон. К сожалению, тач у него разбит. Одна из болячек всех современных смартфонов. Ну, решено было восстанавливать. Купил тач на ebay. Теперь ждать слоупочту россии месяцок-другой. Захотелось узнать о девайсе побольше, поработать с ним, пока посылка едет. Заодно проверить, всё ли работает. А то, может, камера или динамики тоже покрошились. В данной статье рассмотрим захват управления девайсом, если сломан тач.


Сведения



image

В ходе испытания будут использованы nexus 4, usb кабель, ubuntu как ось для работы, информация из интернета и мозги.

Первым делом хочется отметить — телефон полностью в стоковом состоянии. Предыдущий владелец сделал полный сброс всех данных. После включения появляется экран Welcome с выбором языка. Управление устройством никак нельзя осуществить без дальнейшего вмешательства.


Напомню, у nexus 4 нету OTG, поэтому мышь подключить к нему нельзя без специального кабеля с внешним питанием. Такого у меня нету, можно заказать на том же ebay, но опять ждать.


Фигачим



Первым делом я поставил CMW.

Устанавливаем программы для работы с андроидами:

sudo apt-get install android-tools-adb


Это и fastboot, и adb.


Поставить рекавери можно через fastboot:



fastboot flash recovery recovery.img




Естественно, выбрана notouch версия. Кстати, я еще разблокировал бутлоадер (команда fastboot oem unlock). Поменял прошивку на последнюю сразу. Уже и не помню, зачем. Для других телефонов нужно искать свои инструкции. У каких-то устройств можно поставить через встроенный рекавери, у каких-то есть специальные программы для прошивки.

Загружаемся в CWM. Ищем пункт mounts and storage и монтируем system (или потом сделать это через adb — mount -o remount,rw /system). Пригодится.

В консоле на компьютере пишем



adb devices

Выдает циферки и recovery. То, что и нужно!


Отлично. В наши задачи входит: скипнуть welcome экран и включить usb отладку.

Для этого скачиваем build.prop в текущую папку



adb pull /system/build.prop ./




Открываем скачанный файл и заменяем строку:

ro.setupwizard.enterprise_mode=1




на

ro.setupwizard.enterprise_mode=0
ro.setupwizard.mode=DISABLED
persist.service.adb.enable=1
persist.service.debuggable=1
persist.sys.usb.config=mtp,adb


Если считаете нужным, можете подправить еще какие другие строки. Я вроде отключал экран блокировки для удобства, но сейчас уже лень искать какая строка отвечает. Если не сложно, уточните в комментах.


Сохраняем и загружаем обратно.



adb push ./build.prop /system/




Пропишем последние строки и в default.prop. На всякий случай.

adb shell
echo "persist.service.adb.enable=1" >> default.prop
echo "persist.service.debuggable=1" >> default.prop
echo "persist.sys.usb.config=mtp,adb" >> default.prop




Попробуем перезагрузиться

image

Эран сбросился.

Однако adb devices показывает offline.


Убиваем adb командой



adb kill-server

Делаем запрос adb devices


Всё еще offline. Кажется, приплыли. Но нет! Дело в ключах.


Ищем в домашней дирректории папку /.android


Там должен был сгенерироваться файл adbkey.pub. Его нужно закинуть на девайс.


Перезагружаемся в рекавери, монтируем data, выполняем



cd ~/.android
adb push ./adbkey.pub /data/misc/adb/adb_keys




Перезагружаемся снова. Смотрим adb devices — всё есть!

Далее я, например, прописал кнопкам на нампаде команды adb shell input keyevent XX

image


Список кодов

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»



Хотя можно просто поставить VNC сервер (нужен рут).


Я поставил через adb



adb install vncfwq_1386321119498.apk
adb shell am start -n http://ift.tt/L1hM2b




С нумпада поставил настройки, включить получилось командой тыка в зону off — adb shell input tap 400 300 (это координаты тыка)

Ну и чтобы не лезть в настройки вайфай



adb forward tcp:5901 tcp:5901




Запускаем vnc клиент, вводим localhost:5901 и делаем всё, что душе угодно.

image

На этом всё. Прочного вам стекла, уважаемые!


PS: думаю, всё тоже можно сделать с разбитым дисплеем. Нужно только делать скриншоты. Вроде как мануал.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий