【ops设备,cast+投屏不能反向控制】
问题
cast+投屏不能反向控制,在大屏端点击,手机侧没有相应反应。
问题根因
RK3588屏幕的分辨率是1920*1080,app给cast_engine_service 传的是3840 *2160。
定位过程
下面rk3588和6780大屏的日志都是点击同一个地方产生的日志,对比rk388和6780日志,发现最后计算出来的coordX和coordY的值不一样。检查2个设备屏幕的分辨率,发现rk3588的是1920*1080,6780大屏的是3840 *2160。
rk3588日志如下:
06-2914:22:54.68322402245I C04601/Cast-RemoteControlPacketizer:[TranslanteCoordinate:619]:tttt coords originalCoordX:765,originalCoordY:88coordX=765,coordY=88screenWidth=3840screenHeight=21606780(可以反向控制)设备的日志:
06-2914:47:23.17352345234I C04601/Cast-RemoteControlPacketizer:[TranslanteCoordinate:619]:coords originalCoordX:1527,originalCoordY:172coordX=1527,coordY=172screenWidth=3840screenHeight=2160修改办法
临时规避方法:写死大屏的实际分辨率,代码如下所示,最终办法需要修改cast+投屏的app,获取到正确的屏幕分辨率。
voidRemoteControlPacketizer::TranslanteCoordinate(int&coordX,int&coordY)const{if(format_.screenWidth<=0||format_.screenHeight<=0){return;}intoriginalCoordX=coordX;intoriginalCoordY=coordY;//coordX = originalCoordX * format_.videoWidth / format_.screenWidth;//coordY = originalCoordY * format_.videoHeight / format_.screenHeight;coordX=originalCoordX*format_.videoWidth/1920;coordY=originalCoordY*format_.videoHeight/1080;CLOGI("ttttcoords originalCoordX: %{private}d, originalCoordY: %{private}d coordX = %{private}d, ""coordY = %{private}d screenWidth=%{public}d screenHeight=%{public}d",originalCoordX,originalCoordY,coordX,coordY,format_.screenWidth,format_.screenHeight);}