大象笔记

知者行之始,行者知之成

Android Fragment 实现对蓝牙设备的参数配置页面

新建 fragment 新建一个 Blank Fragment。会自动创建对应的 layout xml 文件,但是 binding 需要自己手写。 layout binding package com.sunzhongwei.ble.settings import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import com.sunzhongw ...

阅读全文...

Ubuntu 安装 Python 环境管理工具 Miniconda 3

注意,推荐 为了避免律师函警告,从 miniconda 切换到 miniforge。 救命稻草 Miniconda 不用 Miniconda 不行了,最近测试一个 python 的人工语音合成模块给 Android App 使用,安装依赖之后, 直接把 Rasa 的开发环境搞崩了。。。怎么重装都不行。 再也不敢这样粗放地管理 Python 依赖了,还是老老实实地用上环境隔离吧。 下载 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 链接来自于: https://docs.conda.io/e ...

阅读全文...

对话机器人 Rasa(十九):rasa 不同客户端类型区分处理 custom channel

使用场景 例如,用 Rasa 实现一个自动聊天机器人,要同时实现多端: 网页端 微信小程序端 Android / iOS 原生 App 端 Windows 端 每一端的回复内容会有些许差异,如: utter_greet 网页端:欢迎使用大象计算器,地球上最不强大的计算器 微信小程序端:欢迎使用大象计算器微信小程序,您也可以关注大象工具公众号接收各种骚扰信息 突然想到 Rasa channel 是否可以实现这个功能,于是查了一下官方文档,看起来很挺合适。 不同 channel 返回不同 response 参考: https://rasa.com/docs/rasa/connectors/ ...

阅读全文...

NordicSemiconductor/Android-BLE-Library 监听连接状态变化

监听的目的 Android App 界面显示当前的蓝牙连接状态:断开/连接中/已连接 在断开时,自动重连 如何监听连接状态 (已废弃) 在 NordicSemiconductor/Android-BLE-Library 官方文档中没有找到相关的说明。 只能在 github 中搜索 no.nordicsemi.android.ble.BleManager 的 kotlin 代码。 确实找到不少参考项目。 例如: https://github.com/fbiego/ESP32_BLE_OTA_Android/blob/d10f6546f4371dd811767b5b4958c2aa891697 ...

阅读全文...

Android BLE 蓝牙操作设备三方库 NordicSemiconductor/Android-BLE-Library

为何要使用三方库 起因是我写的 Android 低功耗蓝牙 App 有几个现存的问题: 写操作的并发问题导致写入失败,需要一个队列。iOS 内置了这个实现,甚至连微信小程序都实现了,但是 Android 官方没有实现,渣渣。 信号不稳定,蓝牙断开连接,需自动重连 未来需要连接多个蓝牙设备,但是我目前的架构不支持 如果设备信息进一步增多,就要涉及到数据包的拆分,组合 我去自己实现,非常耗费时间,在我看来都是非常基础的功能。不如找个三方稳定的实现。 NordicSemiconductor/Android-BLE-Library 介绍 https://github.com/NordicSemic ...

阅读全文...

修改开源项目管理系统 Redmine 代码

修改顶部菜单 实际上就是先搜索页面内的 class name, 然后根据模板代码中的变量名,搜索 ruby 代码。 例如,顶部菜单的代码文件 grep "top_menu" -r ./ ./lib/redmine/plugin.rb: # +name+ parameter can be: :top_menu, :account_menu, :application_menu or :project_menu ./lib/redmine/preparation.rb: MenuManager.map :top_menu do |menu| ./test/uni ...

阅读全文...

android gradle 依赖版本号统一管理

在项目级 build.gradle 文件中 在 ext 代码块中定义 room_version。 ext { kotlin_version = "1.6.20" nav_version = "2.4.1" room_version = '2.4.2' } 在应用级 build.gradle 文件中 在依赖项列表末尾添加以下依赖项。 implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compi ...

阅读全文...

同一台服务器上部署多套 Redmine 项目管理系统

需求 由于其他子公司也想使用 redmine 开源项目管理系统,然而数据又不想共享。 所以需要独立部署多套系统,在一台服务器上。 参考 主要部署细节参考第一次部署时整理的文档: 开源项目管理系统 Redmine 搭建 TODO [X] 设置新的二级域名 [X] 源码目录分离。防止有定制化开发的需求 [X] 新建数据库 [X] 确认没有 drop 数据表的操作 [X] 复制 nginx 配置 [X] certbot 生成 https 证书 [X] 使用默认账号密码 admin/admin 登录,修改成复杂的密码 [X] 修改默认权限配置 config/unicorn.rb 需要修改 unic ...

阅读全文...

他不去上班,他就 ...

大鸿两岁半了,脾气异常暴躁 🤬 上班 早上出门 姐姐:不想让爸爸去上班,在家玩多好 大鸿妹妹咆哮:他不去上班,他就死啦! ​ ​上班对我果然重要 /(ㄒoㄒ)/~~,续命,续命。。。 喝奶 大鸿 (老二,两岁半)在楼下玩耍。 一个老太问大鸿:你这么大了,怎么还喝妈妈的奶。。。 大鸿:用你管 !!! ...

阅读全文...

使用微软 Azure 接口做身份证或护照的 OCR 信息提取

接口文档地址 https://learn.microsoft.com/zh-cn/azure/ai-services/document-intelligence/concept-id-document?view=doc-intel-3.1.0&viewFallbackFrom=form-recog-3.0.0 python sdk https://learn.microsoft.com/zh-cn/azure/ai-services/document-intelligence/quickstarts/get-started-sdks-rest-api?view=doc-intel-3. ...

阅读全文...

The project is using an incompatible version (AGP x.x.x) of the Android Gradle plugin

今天在编译一个 github 上的 Android 项目时,报错 The project is using an incompatible version (AGP 8.1.0) of the Android Gradle plugin. Latest supported version is AGP 8.0.1 AGP 是什么 Android Gradle Plugin。 AGP(Android Gradle Plugin)是一个用于构建 Android 应用程序的 Gradle 插件。AGP 可以将 Android 项目中的源代码、资源和依赖项编译成可安装的 APK 文件,并提供了许多 ...

阅读全文...

Android Foreground Service 中,提示音循环播放及停止

需求背景 Android App 收到蓝牙推送的消息之后,播放提示音,且一直播放,直到收到停止的指令。 TODO [X] fragment 界面上增加两个按钮:开始,停止。方便测试 [X] 提取出播放和停止功能,封装成两个函数。便于测试 [X] 接收到停止指令后,关闭音频 [X] Foreground Service 中定义 LiveData,方便 fragment 点击按钮后操作。实际不需要,直接在 service 中定义成静态方法即可。 [X] 下载报警提示音 [X] 支持自定义音频文件。这个以后播放引导提示音频也能用到,只不过是只用一次 [X] 测试无误后,去掉开始按钮(隐藏),只保留 ...

阅读全文...