zoukankan      html  css  js  c++  java
  • Android相关小知识搜集

    adb devices得到????????????错误结果

    问题:

        执行adb devices后,得到如下结果:????????????        device

    相关背景:

        AOSP:Android 7.1.1

        HW:HiKey

    解决方法:

    1.使用lsusb获取vid、pid:

    2.在/etc/udev/rules.d/51-android.rules中加入对应的vid、pid配置:

    3.在进行了以上两步设置之后还是得到同样的结果,看样子还有其他原因。后来Google了一下,有讲到ro.serialno设置错误导致这个原因。

    在system/core/init/init.cpp中,ro.serialno为空,没有设置:

    另一个存在的问题是,在init.hikey.usb.rc中的serialnumber设置不正确。由于ro.serialno为空,造成serialnumber也为空。

    这两处修改任意地方都可以解决此问题:

    3.1 修改ro.serialno的值为0123456789。这种修改方法也能解决ro.serialno为空情况,但是所有平台都会使用这个serialnumber。

    3.2 不读取ro.serialno的值,固定写一个0123456789。这种修改方法只局限在HiKey平台中,但是不够优雅。

    从上可知,adb devices的串号还是通过读取serialnumber来获得的。

    有个注意点:这两处修改init和init.hikey.usb.rc都在boot.img中,需要烧录boot.img文件。

    Android下没有屏幕或者屏幕失效操作问题

    有时候在Debug或者使用的时候,没有按键或者没有屏幕,对设备的操作就会存在问题。

    一是,如何知道屏幕的显示内容;二是,如何去操作。之前有用过一个工具androidscreencast.jnlp,可以显示,模拟屏幕操作。

    但是其实在没有这个工具的情况下,只依赖于Android的现有命令也可以实现,就是没那么方便。

    1.发送坐标,显示屏幕内容。

     

    第一句话发送触摸屏点击;第二句为什么需要sleep 1秒钟呢,因为输入坐标立即抓取屏幕,并不能即可看到正确结果;第三句截取屏幕内容;第四句将图片拉到本地;第五句显示图片。

    adb shell "input touchscreen tap 349 742" && sleep 1 && adb shell "screencap -p /data/local/tmp/screen.png" && adb pull /data/local/tmp/screen.png . && xdg-open screen.png

    2.将屏幕图片按钮转换成坐标

    在图片编辑软件中查看需要点击的按钮的坐标,重复上面的步骤即可。

    3.基于input命令可以实现很多操作

    Usage: input [<source>] <command> [<arg>...]

    The sources are:
          dpad
          keyboard
          mouse
          touchpad
          gamepad
          touchnavigation
          joystick
          touchscreen
          stylus
          trackball

    The commands and default sources are:
          text <string> (Default: touchscreen)
          keyevent [--longpress] <key code number or name> ... (Default: keyboard)
          tap <x> <y> (Default: touchscreen)
          swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
          press (Default: trackball)
          roll <dx> <dy> (Default: trackball)

    比如发送一个返回按键:

    adb shell "input keyevent KEYCODE_BACK"

    Key名称和键值对应如下:

    KeyEvent Value      KEYCODE     Comment
    0       KEYCODE_UNKNOWN   
    1       KEYCODE_MENU     在SDK2.1的模拟器中命令失效,sendevent命令可行
    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       

    ?????:是否写个Python脚本,固定频率刷新图片,自动将pc鼠标转换成Android坐标?

    AndroidScreenCast

    https://github.com/arnoldlu/AndroidScreencast

    横竖屏切换

    有时候需要关闭横竖屏切换,或者需要设置特定的方向。但是在没有触摸屏或者重力感应器,或者没有屏幕的情况下比较麻烦。

    关闭自动旋转:

    adb shell content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0

    设置旋转方向:

    adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:${new_orientation}

    请将${new_orientation}用下面其中一个值来替换

    对于手机

    • 0, 竖屏
    • 1,顺时针旋转90°,横屏
    • 2,顺时针旋转180°,竖屏(与0方向相反)
    • 3,顺时针旋转270°,横屏(与1方向相反)

    对于HiKey

    • 0, 横屏
    • 1,顺时针旋转90°,竖屏
    • 2,顺时针旋转180°,横屏(与0方向相反)
    • 3,顺时针旋转270°,竖屏(与1方向相反)
  • 相关阅读:
    stack2
    xctf 实时数据监测
    note-service2
    stack pivot学习
    sctf_2019_easy_heap 利用off-by-null构造出double free来向任一地址写入(经典)
    ciscn_2019_s_1 unlink或者of-by-null
    starctf_2019_babyshell 绕过循环检测注入shellcode
    sublime 安装package control
    windows上安装nodejs,升级npm,安装webpack指南
    mysql 常见语句
  • 原文地址:https://www.cnblogs.com/arnoldlu/p/6207872.html
Copyright © 2011-2022 走看看