标签Mobile应用于标记有关移动计算问题的问题。移动计算是人机交互的一种形式,通过该形式,计算机在正常使用期间被运输。例如智能手机和平板电脑。
我从模板(HTML/CSS)创建了一个网站,我主要是在我的电脑上用 chrome/firefox/IE 测试它,但现在我只是在我的 iPhone 上测试该页面,它看起来不对。 链接:www.anibalautomoti...
当我在登录表单上时,我会收到一条自动完成的帐户建议。但是当我选择它时,文本字段未填充。 奇怪的是,当我进入密码菜单并选择相同的帐户时......
似乎我作为元添加的所有内容都适用于该网站的移动版本,它实际上被忽略并完全缩放(当我在移动设备上访问我的网站时)到我在 CSS 中的实际大小。 ...
Android CountDownTimer 按顺序调用。等待一个完成并开始另一个
我正在尝试使用 Java 在我的 Android 应用程序中创建一系列 CountDownTimers,其中每个计时器仅在前一个计时器完成后才启动。该序列需要重复设定的轮数...
我正在开发一个 WordPress 页面,该页面在桌面上可以正常显示,但在移动屏幕上会遇到布局问题。具体来说,我页面中间的按钮溢出了容器,使其......
如何使用 Android 中的辅助功能服务访问弹出窗口中的元素
我一直在开发一个辅助服务来访问应用程序的元素数据,例如文本、描述、资源 ID 等,使用以下辅助功能配置: 我一直在开发辅助功能服务,以使用以下辅助功能配置来访问应用程序的元素数据,例如文本、描述、资源 ID 等: <accessibility-service android:accessibilityEventTypes="typeViewClicked|typeViewLongClicked|typeViewScrolled" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagIncludeNotImportantViews|flagRetrieveInteractiveWindows|flagReportViewIds" android:canRetrieveWindowContent="true" xmlns:android="http://schemas.android.com/apk/res/android"/> 通过此设置,我可以在与应用程序中的元素交互时捕获事件。但是,当弹出窗口打开并且我尝试与弹出窗口中的按钮(例如搜索按钮、星号消息、回复按钮)进行交互时, onAccessibilityEvent() 函数中不会触发任何事件。 (弹出窗口如所附屏幕截图所示)。 我还尝试通过将 android:accessibilityFlags 更改为来修改配置: android:accessibilityFlags="flagRequestTouchExplorationMode|flagIncludeNotImportantViews|flagRetrieveInteractiveWindows|flagReportViewIds" 但是,我仍然只收到屏幕的根元素。我知道此功能是可能的,因为像 TalkBack 这样的服务可以轻松处理此类交互。为了实现所需的功能我可能会缺少什么? bottomSheet 代码: <?xml version="1.0" encoding="utf-8"?> <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="2dp"> <!--image view for displaying course image--> <ImageView android:id="@+id/idIVCourse" android:layout_width="100dp" android:layout_height="100dp" android:layout_margin="10dp" /> <!--text view for displaying course name--> <TextView android:id="@+id/idTVCourseName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_toEndOf="@id/idIVCourse" android:layout_toRightOf="@id/idIVCourse" android:text="DSA Self Paced Course" android:textColor="@color/black" android:textSize="18sp" android:textStyle="bold" /> <!--text view for displaying course tracks--> <TextView android:id="@+id/idTVCourseTracks" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/idTVCourseName" android:layout_marginTop="10dp" android:layout_toEndOf="@id/idIVCourse" android:layout_toRightOf="@id/idIVCourse" android:text="Course Tracks : 30" android:textColor="@color/black" android:textSize="15sp" /> <!--text view for displaying course duration--> <TextView android:id="@+id/idTVCourseDuration" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/idTVCourseTracks" android:layout_marginTop="10dp" android:layout_toEndOf="@id/idIVCourse" android:layout_toRightOf="@id/idIVCourse" android:text="Course Duration : 4 Months" android:textColor="@color/black" android:textSize="15sp" /> <!--button for dismissing our dialog--> <Button android:id="@+id/idBtnDismiss" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/idIVCourse" android:layout_margin="10dp" android:text="Dismiss dialog" android:textAllCaps="false" /> </RelativeLayout> </androidx.cardview.widget.CardView> 从活动中打开底页的代码: val openBottomSheetButton: Button = findViewById(R.id.open_bottom_sheet_button) openBottomSheetButton.setOnClickListener { val dialog = BottomSheetDialog(this) val view = layoutInflater.inflate(R.layout.bottomsheet, null) val btnClose = view.findViewById<Button>(R.id.idBtnDismiss) btnClose.setOnClickListener { dialog.dismiss() } dialog.setCancelable(false) dialog.setContentView(view) dialog.show() } 编辑 然后我回去回顾了这个问题,最重要的部分: 我尝试与弹出窗口中的按钮(例如搜索按钮、星标消息、回复按钮)进行交互... onAccessibilityEvent() 函数中没有触发任何事件 我的答案表明我们绝对可以与弹出按钮进行交互,但是一旦打开弹出窗口,它就不会处理事件注册表,例如TYPE_VIEW_CLICKED 我确实检查过,我们能够检索 WINDOW_STATE_CHANGE 上的所有内容: private fun AccessibilityNodeInfo.forAllChildren(depth:Int = 0, fn:(AccessibilityNodeInfo, Int) -> Unit) { for (index in 0..<this.childCount){ this.getChild(index)?.let { fn(it, depth) it.forAllChildren(depth+1, fn) } } } // inside onAccessibilityEvent if (event?.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { rootInActiveWindow.forAllChildren { node, depth -> Log("${" ".repeat(depth * 2)} ${node.viewIdResourceName} ${node.text}") } } 但是一旦点击视图我们就看不到了: // inside onAccessibilityEvent if (event?.eventType == AccessibilityEvent.TYPE_VIEW_CLICKED) { Log("onAccessibilityEvent CLICKED ${event.className ?: " "}") } 我稍后会花更多时间来解决这个问题,但这是一个问题,我们可能需要在问题跟踪器上提出错误 原答案 我花了一些时间对此进行了更多研究,说实话我仍然有点困惑,但我已经成功创建了一个小型演示。请理解,我仍然不知道我们为什么要这样做的实际意义。我希望至少进行一次讨论,这样我们才能找到答案。这里的评论根本不够。 我目前与此问题相关的问题: 这对残疾人有何帮助? 这是否与辅助技术(例如对讲、语音访问等)结合使用? 但我不想继续提问,而是想根据我所掌握的信息尝试一下。现在这就是我所做的: 使用尽可能多的代码编写一个打开底部工作表的自定义视图应用程序 编写跟踪用户移动的自定义辅助功能服务,如果显示底部工作表,看看是否可以找到关闭按钮并单击它 accessibility_service_config.xml <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/accessibility_service_description" android:accessibilityEventTypes="typeAllMask" android:accessibilityFlags="flagIncludeNotImportantViews|flagRetrieveInteractiveWindows|flagReportViewIds" android:accessibilityFeedbackType="feedbackGeneric" android:notificationTimeout="100" android:canRetrieveWindowContent="true" /> SampleAccessibilityService.kt class SampleAccessibilityService: AccessibilityService() { override fun onInterrupt() { Log("onInterrupt") } override fun onAccessibilityEvent(event: AccessibilityEvent?) { Log("---------------------------------------------------------") Log("onAccessibilityEvent CLASS ${event?.className ?: " "} -- ${BottomSheetDialog::class.java.name}") Log("onAccessibilityEvent EVENT ${event?.eventType ?: " "}") Log("onAccessibilityEvent TEXT ${event?.text ?: " "}") if (event?.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED && event.className == BottomSheetDialog::class.java.name) { rootInActiveWindow.findAccessibilityNodeInfosByText("Dismiss dialog").forEach { node -> Log(" onAccessibilityEvent CLICKING A NODE") node.performAction(AccessibilityNodeInfo.ACTION_CLICK) } } } override fun onServiceConnected() { Log("onServiceConnected") serviceInfo.apply { // I have found you have to do this in the config and onServiceConnected. Mine are actually mismatched but the service worked fine. ¯\_(ツ)_/¯ eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED or AccessibilityEvent.TYPE_VIEW_FOCUSED notificationTimeout = 100 } } } object Log { operator fun invoke(text: String) { android.util.Log.d("SAMPLEALLYSERVICE","SAMPLEALLYSERVICE: $text") } } 当我从“设置”菜单启用此服务时: Settings -> Accessibility -> Sample Accessibility Service -> Use Sample Accessibility Service 打开我的测试应用程序 打开底页 我可以看到它立即关闭了。 我真的希望这能为您带来一些启发 - 您必须在辅助功能服务中使用事件触发器才能知道某些方面发生了变化,例如 TYPE_WINDOW_STATE_CHANGED - 然后我通过文本而不是 ID 查找节点,因为 ID 是将会变得不那么流行(Jetpack Compose),我可以通过可访问性节点发送交互命令: node.performAction(AccessibilityNodeInfo.ACTION_CLICK)
Android 应用程序提供免费的美国手机号码,用于从 php 网站接收确认链接
我正在开发一个PHP网站,该网站要求用户提供他们的美国手机号码。 PHP 网站将向该号码发送确认链接,以验证该号码进行注册。任何手机都可以...
Shell 应用程序中 MAUI 选项卡的 OnClicked 事件
我有一个 MAUI Shell 应用程序,正在使用 TabBar 进行开发。我创建了一个标题,它将显示在多个选项卡上并将用户引导至通知页面。 如果用户单击标题
Xcode 14.3 错误:为 iOS 模拟器构建,但链接到为 iOS 架构 arm64 构建的目标文件
我在构建我的 React Native 应用程序时遇到问题,该应用程序使用 Xcode 14.3 正确构建。我收到以下错误代码: “在 /Users/dan/Desktop/Work/Elbvillage/myfairleads_app 中...
React Native 插件未从index.js 中的本机事件发射器接收事件,但在演示应用程序中工作
我正在开发一个 React Native 插件,其项目结构包括演示目录中的一个测试应用程序,用于测试插件功能。 我在尝试处理事件时出现问题
Flutter resizeToAvoidBottomInset: false 不工作
当我使用文本字段并且键盘向上滑动时,我的对话框不断向上滑动。我在脚手架中将 resizeToAvoidBottomInset 设置为 false,但它不起作用。我做了一些测试应用程序,看看它是否......
我正在构建一个响应式布局,默认情况下首先从移动设备(1 列)开始,然后在横向和纵向模式下为平板电脑设置断点,最后是桌面。 对于我的平板电脑(1 列)
我的页面是这样的 服务器 => Nodejs API 客户端 => 反应 移动 => React Native 在移动设备上,我应该像使用 React 那样向 Nodejs 发出请求吗?我不需要做任何类型的chan...
我的页面是这样的 服务器 => Nodejs API 客户端 => 反应 移动 => React Native 在移动设备上,我应该像使用 React 那样向 Nodejs 发出请求吗?我不需要做任何类型的改变...
如何使用Flutter在iPhone上实现UWB功能来传输消息?
我想使用Flutter在iPhone上实现UWB(超宽带)功能来传输消息。然而,我面临一些困难,需要指导如何继续。 我试着寻找我...
当我从网络转到移动设备时,Flutter_ScreenUtil 无法工作
我正在尝试使用包 Flutter_ScreenUtil 5.9.3。我在 Windows 11 机器上进行开发,并一直在 Chrome 上进行调试。当我使用移动设备时,所有东西的尺寸似乎都非常错误。 我...
“user-scalable=no”或不“user-scalable=no”
我读过不同的帖子,但从未得出明确的结论,在案例 A 或案例 B 上使用 user-scalable=no 有什么区别、优点和缺点? 我要做一个响应式
如何在 Google MLKit 中检查模糊图像和光照曝光(太暗或太亮)?
我在 Android 和 iOS 的应用程序中使用 GoogleMLKit 人脸检测。 在将图像发送到...之前,我需要检查 GoogleMLKit 检测到面部时捕获的“帧”是否模糊/太暗/太亮
在 WordPress 2024 主题上 - 我的移动菜单导航无法打开。 https://07i.c46.myftpupload.com/ 在控制台中我收到以下 JS 错误: 获取 https://07ic46.p3cdn1.secureserver.net/wp-includes/j...
在 UITableView 中使用文本字段时如何避免记录重影值
quantityTextfields 正在获取幽灵值(用户未在文本字段中放入的值)即使仅更改一个文本字段,我认为这是因为 TableView 单元格的重用方式,但是...