Android蓝牙设备

Android蓝牙设备 [蓝牙设备特征UUID] 对于蓝牙HID输入设备直接拦截事件 原本设备JOPREE是在打开相机时控制拍照,未打开相机时增加音量 APP内直接拦截增加音量事件,不用管理蓝牙设备连接 直接连接手机即可 Activity内 override fun dispatchKeyEvent(event: KeyEvent): Boolean { val deviceName = event.device?.name if (deviceName != null && deviceName.contains("DEVICE_NAME", ignoreCase = true)) { if (event.action == KeyEvent.ACTION_DOWN) { mySubmitButton.performClick() return true } } return super.dispatchKeyEvent(event) }

2025年09月26日

Android原生侧滑

完整的 BaseActivity 原生侧滑返回方案文档,基于 AndroidX + Kotlin + 原生手势返回,可直接在项目中使用。文档包含 概念说明、实现代码、配置说明和调整方法。 BaseActivity 原生侧滑返回完整文档 1️⃣ 功能概述 实现 从屏幕左边缘滑动返回上一页 完全原生,不依赖第三方库 支持 AndroidX 可在 BaseActivity 中统一配置,所有继承的 Activity 自动生效 可自定义触发区域宽度(edgeSize)和滑动阈值(swipeThreshold) 支持 退出动画(使用 finishAfterTransition + Window ExitTransition) 2️⃣ 核心原理 手势检测:通过 onTouchEvent 监听用户触摸事件 滑动判断条件: 用户从屏幕左边缘滑动 水平滑动距离大于阈值 水平位移大于垂直位移(避免误触上下滑动) 触发返回: 调用 finishAfterTransition() 完成页面退出 可结合 Window ExitTransition 实现平滑滑出动画 3️⃣ BaseActivity 示例代码 open class BaseActivity : AppCompatActivity() { // 左边缘触发滑动区域(dp) private val edgeSizeDp = 20 private val swipeThresholdDp = 100 private var startX = 0f private var startY = 0f private var edgeSize = 0 private var swipeThreshold = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 将 dp 转 px,保证不同屏幕一致 val density = resources.displayMetrics.density edgeSize = (edgeSizeDp * density + 0.5f).toInt() swipeThreshold = (swipeThresholdDp * density + 0.5f).toInt() // 设置窗口退出动画(从右向左滑出) window.enterTransition = null window.exitTransition = android.transition.Slide(Gravity.END).apply { duration = 200 } } override fun onTouchEvent(event: MotionEvent): Boolean { when (event.action) { MotionEvent.ACTION_DOWN -> { startX = event.rawX startY = event.rawY } MotionEvent.ACTION_UP -> { val endX = event.rawX val endY = event.rawY val deltaX = endX - startX val deltaY = endY - startY // 条件:左边缘滑动 + 水平位移大于阈值 + 水平大于垂直位移 if (startX < edgeSize && deltaX > swipeThreshold && Math.abs(deltaX) > Math.abs(deltaY)) { finishAfterTransition() return true } } } return super.onTouchEvent(event) } } 4️⃣ 配置说明 参数 类型 默认值 作用 edgeSizeDp Int (dp) 20 左边缘触发滑动返回的宽度 swipeThresholdDp Int (dp) 100 滑动超过该距离才触发返回 window.exitTransition Transition Slide(Gravity.END) 页面退出动画,配合 finishAfterTransition() 使用 调整依据: ...

2025年09月26日