首页 > 系统相关 >9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)

时间:2022-09-28 12:09:52浏览次数:93  
标签:shell mediatek App adb ubuntu Android com 图形化 android


问题描述:希望本人希望在ubuntu 环境下,对Android系统文件系统及APK进行操作和PC端处理;

问题目的:这样操作的好处,统一命令行操作,可以与ubuntu系统进行命令上交互;

先附上一张图(ubuntu&window),其远程控制Android界面的显示应用的名字及简单介绍~~

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_android

1、首先在Android系统(这里使用的oppo手机)打开 ====》开发者,其操作为:点击====》设置====》版本号(版本信息) 点击三次,就进入开发者模式,然后打开====》开发者选项&&====》打开USB调试选项;

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_android_02

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_android_03

2、然后将Android系统的设备(或者Android手机设备)的串口连接上PC的USB端口,同时在ubuntu 环境下安装

sudo apt-get install qt4-qmake libqt4-dev libqtcore4 libqtgui4 android-tools-adb

下载seven-square;

 地址:​​https://github.com/yangh/sevensquare.git​

链接:https://pan.baidu.com/s/1R2SrT_gJtV9mdn1G1acK4w 密码:nk0x

解压之后,进入文件夹执行以下命令~~

 cd sevensquare/
make
./build/seven-square

然后就可以在PC端操作Andriod系统设备,如打开摄像头,获取图像等;

当然也可以使用图表提供的其它apk;( 使用airDroid软件授权,显示的Android页面及其应用, 但是似乎airDroid 显示的应用并不全面~~~)

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_ide_04

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_ide_05

完成了Android的界面在Ubuntu上投射~~~

第二步,希望PC端和Android进行数据交换(类似ssh一样),可以跳过直接看第三步,使用adb shell

3、首先在Android 终端,安装SSHDroid(链接:https://pan.baidu.com/s/15uzapXN6dkH47D2VTn71PQ 密码:9w8o)

之所以使用SSHDroid的目地在于他可以控制开机自动启动,在无wifi情况下,插上网线,就可以完成远程使用网口进行操控Android(在获知IP情况下才可以~~~)

在wifi开启的情况下,启动SSHDroid终端(在seven-square端完成即可~~),查看到IP地址及端口号~~

 

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_ubuntu_06

4、然后在ubuntu 终端输入链接命令:

ubuntu@ubuntu:~$ ssh -p 2222 [email protected]
SSHDroid
Use 'root' as username
Default password is 'admin'
[email protected]'s password:
u0_a1118@R9s:/data/data/berserker.android.apps.sshdroid/home $

就完成了对Android系统设备的图形化界面访问和文件系统访问;

同时:希望在linux终端界面使用使用命令控制Andriod的应用,如打开应用 关闭应用;

5、若在SSHDroid链接的终端情况下:

-----@------:/data/app # pm list package                                                               <
package:com.mediatek.gba
package:com.mediatek.ims
package:com.mediatek.ppl
package:org.simalliance.openmobileapi.uicc2terminal
package:com.android.providers.telephony
package:com.mediatek.camera
package:com.android.providers.media
package:com.mediatek.fwk.plugin
package:com.mediatek.FactoryTest
package:com.mediatek.schpwronoff
package:org.simalliance.openmobileapi.service
package:com.android.galaxy4
package:com.android.externalstorage
package:com.android.htmlviewer
package:com.android.mms.service
package:com.android.providers.downloads
package:com.mediatek.engineermode
package:com.mediatek.omacp
package:com.android.providers.applications
package:com.mediatek.wfo.impl
package:com.trechina.smartphonecamera
package:com.android.defcontainer
package:com.android.providers.downloads.ui
package:com.android.pacprocessor
package:com.android.certinstaller
package:com.android.carrierconfig
package:com.sand.airdroid
package:android
package:com.trechina.monitor
package:com.android.launcher3
package:com.android.backupconfirm
package:com.android.provision
package:com.android.statementservice
package:com.android.wallpaper.holospiral
package:com.android.phasebeam
package:com.mediatek.providers.drm
package:com.koushikdutta.vysor
package:com.android.providers.settings
package:com.mediatek.miravision.ui
package:berserker.android.apps.sshdroid
package:com.android.sharedstoragebackup
package:com.mediatek.batterywarning
package:com.android.printspooler
package:org.simalliance.openmobileapi.uicc1terminal
package:com.mediatek.datatransfer
package:android.androidVNC
package:com.android.webview
package:com.android.inputdevices
package:com.mediatek
package:com.android.onetimeinitializer
package:com.android.server.telecom
package:com.android.keychain
package:com.shenyaocn.android.WebCam
package:com.android.gallery3d
package:com.mediatek.hetcomm
package:com.android.calllogbackup
package:com.android.packageinstaller
package:com.svox.pico
package:com.android.proxyhandler
package:com.android.inputmethod.latin
package:com.android.managedprovisioning
package:com.mediatek.calendarimporter
package:com.mediatek.atci.service
package:com.android.dreams.phototable
package:com.mediatek.thermalmanager
package:com.android.noisefield
package:com.sonelli.juicessh
package:com.mtk.telephony
package:com.android.wallpaper.livepicker
package:com.baidu.map.location
package:com.dtinfo.tools
package:com.android.settings
package:com.google.android.inputmethod.pinyin
package:com.webkey
package:com.android.wallpaper
package:com.android.vpndialogs
package:com.android.phone
package:com.android.shell
package:com.android.providers.userdictionary
package:org.simalliance.openmobileapi.eseterminal
package:com.android.location.fused
package:com.android.systemui
package:com.android.exchange
package:com.android.bluetoothmidiservice
package:com.mediatek.filemanager
package:com.mediatek.mtklogger
package:com.android.bluetooth
package:com.trechina.smartphonecameraupdate
package:com.android.captiveportallogin

然后找到相机的开发包名字,并执行;

130|-----@--------:/data/data/berserker.android.apps.sshdroid/home # dumpsys package com.mediatek.camera  
activity Resolver Table:
Non-Data Actions:
android.media.action.IMAGE_CAPTURE:
61ae802 com.mediatek.camera/com.android.camera.CaptureActivity
android.media.action.IMAGE_CAPTURE_SECURE:
879e903 com.mediatek.camera/com.android.camera.SecureCameraActivity
android.intent.action.MAIN:
c290ec4 com.mediatek.camera/com.android.camera.CameraActivity
f9331ad com.mediatek.camera/com.android.camera.CameraLauncher
android.media.action.STILL_IMAGE_CAMERA:
c290ec4 com.mediatek.camera/com.android.camera.CameraActivity
android.media.action.STILL_IMAGE_CAMERA_SECURE:
879e903 com.mediatek.camera/com.android.camera.SecureCameraActivity
android.media.action.VIDEO_CAPTURE:
7768a62 com.mediatek.camera/com.android.camera.VideoCamera
android.media.action.VIDEO_CAMERA:
7768a62 com.mediatek.camera/com.android.camera.VideoCamera

Receiver Resolver Table:
Non-Data Actions:
android.intent.action.BOOT_COMPLETED:
f4f1363 com.mediatek.camera/com.android.camera.DisableCameraReceiver

最后就可以启动相机了~~~

root@AiCamera:/data/data/berserker.android.apps.sshdroid/home # am start -n com.mediatek.camera/com.android.camera.CaptureActivity

Starting: Intent { cmp=com.mediatek.camera/com.android.camera.CaptureActivity }

然后相机就完美的通过命令启动了~~~

第三步:其实Android系统中的adb shell 可以完成第二步的所有事情,如安装apk、链接等(可自行搜索);

同理adb shell 命令也可以完成操作(在ubuntu 终端操作)

adb shell ifconfig // 查看Android Ip地址
adb shell install name.apk //安装apk软件
adb shell pm list package //安装包列表
adb shell dumpsys package com.mediatek.camera //寻找相机活动名
adb shell dumpsys package com.shenyaocn.android.WebCam // 寻找IP摄像头
adb shell am start -n com.mediatek.camera/com.android.camera.CaptureActivity //打开相机
adb shell am start -n com.shenyaocn.android.WebCam/.Activities.WebCamActivity //打开IP相机

例如:比如本人需要使用的IP camera app;

 因为需要控制具体的app的应用操作;首先需要知道应用的控件的位置坐标,  需要在"开发者选项"->"指针位置"即可,然后定位需要操作的控件坐标;(在seven-square端完成即可~~)

1、首先回到Home主界面;

adb shell input keyevent 3

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_android_07

 

2、打开APP应用 IP Camera;搜索包名字(详细见第二步)

adb shell am start -n com.shenyaocn.android.WebCam/.Activities.WebCamActivity

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_ubuntu_08

根据预先打开的指针坐标值,触摸屏幕发现其打开摄像头的软按钮的坐标为 1000 1000(需要在Android系统的界面上获得,seven-square终端不支持获取) 

 

9、Ubuntu控制Android系统设备(Android手机)应用(图形化界面和访问文件系统及启动App)_android_09

adb shell input tap  1000 1000

然后完美的控制APP应用~~~~

ubuntu@ubuntu:~$ adb shell input tap  1000 1000 // 打开IP摄像头
ubuntu@ubuntu:~$ adb shell input tap 1515 584 // 确定打开
ubuntu@ubuntu:~$ adb shell input tap 33 62 // 退出IP摄像头
ubuntu@ubuntu:~$ adb shell input tap 1515 584 // 确定退出
ubuntu@ubuntu:~$ adb shell input tap 1097 412 //关闭烦人的广告

0ppo R9 对于IP Camera 操作~~~

ubuntu@ubuntu:~$ adb shell input tap  606 1847 //.打开IP摄像机
ubuntu@ubuntu:~$ adb shell input tap 889 1164 // 确认打开IP相机
ubuntu@ubuntu:~$ adb shell input tap 87 142 //退出IP相机
ubuntu@ubuntu:~$ adb shell input tap 889 1164 //确认退出IP相机
ubuntu@ubuntu:~$ adb shell input tap 928 654 //关闭广告

然后我基于本人机型OPPO R9 写了一个Opencv 远程调用代码;在通过串口进行初始化之后,然后就可以远程调用

# -*- coding: UTF-8 -*-
import os
import cv2
# 实验机型为OPPR9 触摸键的坐标选择对应该机型,同时禁止屏幕自动翻转~~~
os.system("adb shell input keyevent 3") #复位键
os.system("adb shell am start -n com.shenyaocn.android.WebCam/.Activities.WebCamActivity")
#os.system("adb shell input tap 928 654") # 关闭广告 因为使用的软件总产生广告,可多操作一次,
os.system("adb shell input tap 606 1847") # 打开Ip摄像机a
os.system ("adb shell input tap 877 1360") #防止误操作
os.system ("adb shell ifconfig |grep Mask >.Android_IP_Adress")
fp = open(".Android_IP_Adress", "r")
sample = fp.readlines()
Android_ip=sample[0].split()[1].split("addr:")[1]
os.remove(".Android_IP_Adress")
Port=":8081"
Service="http://"
Admin_passwd="admin:admin@"
url = Service+Admin_passwd+Android_ip+Port
print url
cap = cv2.VideoCapture(url)
while True:
ret,frame = cap.read()
frame=cv2.flip(frame,0)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
#os.system("adb shell input tap 884 1159") #退出IP摄像机
#os.system("adb shell input tap 87 142") #退出IP摄像机
#os.system("adb shell input tap 889 1164") #确认退出摄像机
#os.system("adb shell input tap 928 654") # 关闭广告

当Android 存在以太网口时,首先需要串口获取到以太网口的ip地址

adb shell getprop dhcp.eth0.ipaddress
或者

adb shell getprop

注意:使用下列命令并不显示以太网的地址信息~~~

adb shell ifconfig |grep Mask

然后可以拔掉串口,转而使用ssh 链接即可~~~

具体的adb 命令请参考:​​https://github.com/mzlogin/awesome-adb​

标签:shell,mediatek,App,adb,ubuntu,Android,com,图形化,android
From: https://blog.51cto.com/u_12504263/5719124

相关文章