From 7b9daa6f5e8f622c055231a8baef3214df99846c Mon Sep 17 00:00:00 2001 From: Runt <qingingrunt2010@qq.com> Date: Wed, 11 May 2022 13:02:09 +0000 Subject: [PATCH] 发送歌词功能 优化 --- app/src/main/java/com/auto/lyric/service/AutoInputService.java | 40 ++++++++++++++++++++++------------------ 1 files changed, 22 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/auto/lyric/service/AutoInputService.java b/app/src/main/java/com/auto/lyric/service/AutoInputService.java index e5bb979..c68f2c6 100644 --- a/app/src/main/java/com/auto/lyric/service/AutoInputService.java +++ b/app/src/main/java/com/auto/lyric/service/AutoInputService.java @@ -4,6 +4,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -28,25 +29,26 @@ @Override public void onReceive(Context context, Intent intent) { int action = intent.getIntExtra("action", 0); + ClipboardManager cmb = (ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); Log.e(TAG, "onReceive action: " + action); switch (action){ case ACTION_SEND: //List<AccessibilityNodeInfo> nodeInfos = getRootInActiveWindow().findAccessibilityNodeInfosByViewId("com.ss.android.ugc.aweme:id/llp"); AccessibilityNodeInfo sendNode = getViewByDesc(getRootInActiveWindow(),"发送"); - Log.e(TAG, "ACTION_SEND nodeInfos: " + sendNode); + Log.e(TAG, "ACTION_SEND "+cmb.getText()+" nodeInfos: " + sendNode); if(sendNode != null){ Log.e(TAG, "ACTION_SEND nodeInfos: " + sendNode.getClassName()); sendNode.performAction(AccessibilityNodeInfo.ACTION_CLICK); }else{ - printView(getRootInActiveWindow()," "); + //printView(getRootInActiveWindow()," "); Toast.makeText(getBaseContext(),"未找到控件",Toast.LENGTH_SHORT).show(); } break; case ACTION_PASTE: try{ List<AccessibilityNodeInfo> list = getRootInActiveWindow().findAccessibilityNodeInfosByText("说点什么..."); - Log.e(TAG, "ACTION_PASTE nodeInfos: " + list.size()); - printView(getRootInActiveWindow()," "); + Log.e(TAG, "ACTION_PASTE "+cmb.getText()+" nodeInfos: " + list.size()); + //printView(getRootInActiveWindow()," "); AccessibilityNodeInfo editNode = getView(getRootInActiveWindow(),"android.widget.EditText"); if(editNode != null){ Log.e(TAG, "ACTION_PASTE nodeInfos: " + editNode.getClassName()); @@ -81,13 +83,13 @@ switch (eventType) { case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED://界面变化事件 Log.e(TAG, "TYPE_WINDOW_CONTENT_CHANGED " ); - if(event.getClassName().toString().equals("androidx.viewpager.widget.ViewPager")){ + if(event.getClassName().toString().equals("androidx.viewpager.widget.ViewPager") && flag){ clickEdit(); } break; case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED://界面变化事件 Log.e(TAG, "TYPE_WINDOW_STATE_CHANGED " ); - if(source != null && event.getClassName().toString().equals("com.ss.android.ugc.aweme.live.LivePlayActivity")){ + if(source != null && event.getClassName().toString().equals("com.ss.android.ugc.aweme.live.LivePlayActivity") && flag){ clickEdit(); } @@ -138,7 +140,7 @@ Log.e(TAG,"执行点击 "+list.get(0).getPaneTitle()); } }else if(flag){ - Toast.makeText(getBaseContext(),"未找到控件",Toast.LENGTH_SHORT).show(); + //Toast.makeText(getBaseContext(),"未找到控件",Toast.LENGTH_SHORT).show(); } } @@ -173,20 +175,22 @@ @SuppressLint("NewApi") private AccessibilityNodeInfo getViewByDesc(AccessibilityNodeInfo node, String desc){ - Log.e(TAG,desc +" getViewByDesc id:"+node.getViewIdResourceName() +" class:"+node.getClassName()+" text:"+node.getText()+" "+node.getContentDescription()); - Log.e(TAG,"getViewByDesc node:"+node); - if(node.getChildCount() > 0){ - for(int i = 0 ; i < node.getChildCount() ; i ++){ - if(node.getChild(i) != null) { - AccessibilityNodeInfo nodeInfo = getViewByDesc(node.getChild(i), desc); - if(nodeInfo != null){ - return nodeInfo; + try{ + Log.e(TAG,desc +" getViewByDesc id:"+node.getViewIdResourceName() +" class:"+node.getClassName()+" text:"+node.getText()+" "+node.getContentDescription()); + Log.e(TAG,"getViewByDesc node:"+node); + if(node.getChildCount() > 0){ + for(int i = 0 ; i < node.getChildCount() ; i ++){ + if(node.getChild(i) != null) { + AccessibilityNodeInfo nodeInfo = getViewByDesc(node.getChild(i), desc); + if(nodeInfo != null){ + return nodeInfo; + } } } + }else if(node != null && node.getContentDescription() != null && node.getContentDescription().equals(desc)){ + return node; } - }else if(node != null && node.getContentDescription() != null && node.getContentDescription().equals(desc)){ - return node; - } + }catch (Exception e){} return null; } private void printWindow(AccessibilityWindowInfo window, String space){ -- Gitblit v1.9.1