asysbang

 找回密码
 立即注册
查看: 2729|回复: 0
打印 上一主题 下一主题

基于adb调试的投屏(Android平台)

[复制链接]

513

主题

2

好友

6404

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-9-3 14:25:32 |只看该作者 |倒序浏览
#需求:
电脑控制手机,carlife等一些软件的基础需求
#分析:
目前的软件都需要adb调试,所以这个是突破口
#参考
百度carlife
#注意事项
1.需要设备端打开usb调试
2.设备端的连接方式不能是mtp,必须是“仅充电”
3.通过usb传输的最大数据是MAX_USBFS_BUFFER_SIZE = 16384(视频的关键帧会超过这个大小)
#过程
```
*  aoa通信流程
*  host首先检测到usb设备,然后查询是否支持AOA模式,以及支持的版本 (host端不一定是android设备)
*  如果支持的话,设置“MANUFACTURER_NAME”,“MODEL_NAME”,“VERSION”等信息
*  最后启动aoa模式
*
*
*  devices端的apk,根据manifest里面的配置,<usb-accessory manufacturer="asysbang" model="model" version="version" />
*  当3个参数都匹配之后会自动启动对应的activity
*  起来的activity可以获得对应的UsbAccessory

```

```
(假设只有一个android设备的情况下)
1.监听UsbManager.ACTION_USB_DEVICE_ATTACHED
2.申请device的权限 mUsbManager.requestPermission(mDevice,mPendingIntent);
3.在申请的回调广播里,和device交互
        UsbDeviceConnection udc = mUsbManager.openDevice(device);
        byte [] datas = new byte[2];
        int ret = udc.controlTransfer(UsbConstants.USB_DIR_IN | UsbConstants.USB_TYPE_VENDOR, 51, 0,0, datas, datas.length, 0)

```
##### requestType 一定要加上UsbConstants.USB_TYPE_VENDOR,否则得到的结果是不支持aoa模式


#待解决问题
1.aoa模式下数据传输的具体代码
2.外设端手机截图方法(目前看应该用的是)
        final MediaProjectionManager projectionManager = (MediaProjectionManager)
                getSystemService(Context.MEDIA_PROJECTION_SERVICE);
         Intent intent = projectionManager.createScreenCaptureIntent();
         startActivityForResult(intent, REQUEST_CODE);

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2024-10-6 16:26 , Processed in 0.047000 second(s), 19 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部