使用辅助功能擦洗SeekBar

我正在尝试使用accessibility Services清理第三方应用程序的搜索栏。这就是我用来擦洗的东西。

 val arguments = Bundle()
 arguments.putFloat(accessibilityNodeInfo.actION_ARGUMENT_PROGRESS_VALUE,50.0.toFloat())
 seekBarNode?.performaction(accessibilityNodeInfo.accessibilityaction.actION_SET_PROGRESS.id,arguments)

由于我正在整理视频, SeekBar位置会更改,但内容不会更改

有人知道这里的问题吗?还是可以使用无障碍服务来擦洗第三方SeekBar的其他选择?

我还读过GestureDescription来进行滑动。但是我不知道如何使用它来执行SeekBar清理。

gshj2003 回答:使用辅助功能擦洗SeekBar

尝试使用fun AccessibilityService.tapCenterOfNode(node: AccessibilityNodeInfo,onDone: (Boolean) -> Any){ this.dispatchPath( drawPath = pathOnPoint(node.centerInScreen()),pathDuration = 10,onDone = { success -> Log.d("dispatch","success? $success") } ) } fun AccessibilityService.dispatchPath(drawPath: Path,pathDuration: Long,onDone: (Boolean) -> Any) { val stroke = GestureDescription.StrokeDescription(drawPath,pathDuration) val gesture = GestureDescription.Builder().addStroke(stroke).build() this.dispatchGesture(gesture,object : AccessibilityService.GestureResultCallback() { override fun onCompleted(gestureDescription: GestureDescription) { super.onCompleted(gestureDescription) onDone(true) } override fun onCancelled(gestureDescription: GestureDescription) { super.onCancelled(gestureDescription) onDone(false) } },null) } fun AccessibilityNodeInfo.centerInScreen(): Pair<Float,Float> = Pair(this.getBoundsInScreen().exactCenterX(),this.getBoundsInScreen().exactCenterY()) fun AccessibilityNodeInfo.getBoundsInScreen(): Rect { val rect = Rect() getBoundsInScreen(rect) return rect } fun pathOnPoint(point: Pair<Float,Float>) = Path().apply { val (x,y) = point moveTo(x,y) lineTo(x,y) } 单击搜索栏的中心:

   consumeRecord.keyBy("gameType")
                .timeWindowAll(Time.seconds(5))
                .reduce((d1,d2) -> {
                    d1.setRealPumpAmount(d1.getRealPumpAmount() + d2.getRealPumpAmount());
                    d1.setPumpAmount(d1.getPumpAmount() + d2.getPumpAmount());
                    return d1;
                })
                .addSink(new SinkFunction<ReportPump>() {
                    @Override
                    public void invoke(ReportPump value,Context context) throws Exception {
                        // save to mysql
                    }
                });
本文链接:https://www.f2er.com/2503325.html

大家都在问