安卓版API指令文档及功能介绍 - xuebaodev/wawaji GitHub Wiki

安卓板或Linux工业主板指令完全兼容串口版的协议,提供基本功能完全的串口透传转发。其中运行的app会处理本文档的命令使其更易用。

[指令]保存本机IP地址到娃娃机主板-以方便在小液晶屏上查看--服务器端不可以发这个指令。这是内部app的事情

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0d),0x39,num1,num2,num3,num4, [校验位1]}

[指令]保存用户ID号到娃娃机主板-以方便在小液晶屏上查看此机器所属用户--服务器端不可以发这个指令。这是内部app的事情

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x19),0x3a,num1,num2,num3,num4, num5,num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16, [校验位1]}

[指令]保存MAC到娃娃机主板-以方便在小液晶屏上查看--服务器端不可以发这个指令。这是内部app的事情

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x15),0x3f,num1,num2,num3,num4,num5,num6, num7,num8,num9,num10,num11,num12,[校验位1]}

Num1到num12是娃娃机接收到的mac地址

[20180529已废弃][指令]保存配置服务器IP地址到娃娃机主板--20180204修改为配置服务器IP

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0f),0x40, num1, num2, num3, num4, num5,num6,[校验位1]}

[20180529已废弃]从娃娃机读取配置服务器IP和端口--20180204修改为返回码是0x42

[指令]Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x09),0x3C,[校验位1]} [返回]Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0f),0x42, num1, num2, num3, num4, num5,num6, [校验位1]} Num1到num4为娃娃机接收到的IP地址,num5*256+num6为端口号

[20180529已废弃][通知]娃娃机主板发送配置服务器IP和端口给安卓板

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0f),0x42, num1, num2, num3, num4, num5,num6, [校验位1]} 应用场景:当用户通过娃娃机设置了配置服务器IP地址时。安卓版收到此命令,保存并重连接到新的配置服务器。 ----20180204 之所以是配置服务器IP,是因为,安卓版可以通过配置服务器去配置其他参数包括应用服务器。

[通知]服务器发送重启命令给安卓板----20180204 add

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x09),0x88, [校验位1]} 应用场景:当服务器检测到某个摄像头没有流的时候,可以发送此命令要求安卓板重启以便摄像头正常工作。这通常是因为拔插了摄像头,或者摄像头线路因为频繁移动导致老化折断,接触不良导致断流。这时候,必须重启安卓版才有可能解决问题,如果是线路接触不良,则不可以解决。这种问题适用于偶发的摄像头掉线。

[通知]运行中,摄像头掉线时,安卓版会发出此命令到应用服务器,通知它,摄像头有故障需要重启。

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0f),0x89, [frontCamstate], [backCamstate], [op], 00, 00, 00, [校验位1]}

  • frontCamstate: 00 正常 01 运行中掉线 02 一开始就不存在
  • backCamstate: 同上
  • op: 0= 重启。 1= 只报告,不重启。 应用场景: 运行过程中,有可能会因为当前系统获取的时间太慢,而推流已经开始,然后设置时间以后会导致预览停止。或者因为摄像头的线路老化忽然断开与安卓板的连接,这时候,安卓板需要通知服务器发生了视频流无法观看的情况,并且,安卓板会试图通过重启解决问题。 当这个问题发生时,安卓板会发送这个命令码通知服务器:有摄像头无法正常预览,安卓板即将重启。重启的行为在满足此条件时发生:
  • 1.娃娃机空闲,立即重启。
  • 2.娃娃机有人正在使用,则屏蔽掉所有开局指令,等待该局结束后重启。
  • 3.查询娃娃机状态无反应, 3秒后重启。 当服务器收到此命令后,必须将此娃娃机置为故障,等待重启的状态,此时,不能再接受玩家新的开局命令,通知本房间的所有玩家,娃娃机故障,并且,开局超时,和心跳超时,不能视为错误。娃娃机重启后,会自动重新连接服务器。

另外 服务器端 做个监控 当一台机器频繁因此原因重启 则要上报给运营人员 表示该机器肯定有硬件故障(一般是USB摄像头线出问题) 设置的条件可以是 比如 最近10个小时内 因此原因重启超过了 15次

[命令]安卓板处于双摄像头只推一路模式时,接收到0x90则会切换到另一路摄像头的数据推送到原来的地址。

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x09),0x90, [校验位1]}

[通知]安卓板处于双摄像头只推一路模式时,接收到0x90则会切换到另一路摄像头的数据推送到原来的地址。并且返回0x91报告它当前正在推流的摄像头

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0A),0x91, index, [校验位1]}

  • index :1表示第一路摄像头 2表示第二路摄像头

[通知]当等待20秒没有收到服务器过来的数据时,娃娃机会主动发送0x92查询当前网络连接的状态。

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x09),0x92, [校验位1]} 所以各位做服务器端的大佬,请在接收到娃娃机心跳指令时,也返回给它一个心跳包,可以是照原样返回,避免长时无通信触发0x92查询。当收到0x92查询时,必须发送0x92回应,3秒内收不到0x92回应,则娃娃机会强制关闭当前的socket并启用重连机制。

[命令]可以在机器长时空闲或无玩家观看时,服务器发送0x93过来使推流停止或降低码率。降低带宽占用。当有玩家进入观看或玩游戏时,可以发送0x93设置高清视频质量或重新启用推流。

Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0C),0x93, onOff,bitRate_l,bitRate_h [校验位1]}

  • onOff 0 不推 1 推流
  • bitRate_l,bitRate_h 码率= bitRate_l + bitRate_h * 256 0 使用原来配置 非0 应用新码率 (一定要大于20,推荐50起)

娃娃机回应 Buff[]={0XFE,pid/255,pid%255,~ Buff[0],~ Buff[1],~ Buff[2],(Length=0x0D),0x93, onOff,bitRate_l,bitRate_h,result [校验位1]}

  • onOff 0 不推 1 推流
  • bitRate_l,bitRate_h 码率= bitRate_l + bitRate_h * 256 机器当前使用的码率
  • result 是否应用成功 收到指令可以立马返回成功 当失败时 可以重新发送一条结果失败的指令
  • 特别注意:此处的码率单位是K。 比如传F4 01 即 1*256 + 244 = 500 .即 500K。

================================== 板型1(如下图) 板型1

功能特性与说明

  • 1.安卓板系统默认开放远程adb端口5555,可直接使用
  • 2.安卓串口是 /dev/ttyS1
  • 3.绑定前后摄像头顺序,USB上面的口是前置摄像头,下面的口是后置USB摄像头
  • 4.前置摄像头的除了索引不一样,其他的都跟后置摄像头一样(不用镜像)
  • 5.静默安装接口 关于静默安装,我们在系统中添加了广播,要安装时你们程序发送广播,广播参数是要安装apk的路径,系统接收后开始安装,安装完成后系统自动重启,示例代码如下。
Intent intent=new Intent();
intent.setAction("ACTION_UPDATE_START");
intent.putExtra("path","/storage/usbhost1/game.apk");
sendBroadcast(intent,null);

  • 6.重启命令
Intent intent=new Intent();
intent.setAction("ACTION_RK_REBOOT");
sendBroadcast(intent,null);

  • 7.默认的VGA显示输出分辨率为1280*720.可以在设置-显示里面调。