分类下相关文章
2023-05-26 · 阅读 2510 · 字数 523
为了将一个 Android App 由 Room 迁移到 SQLDelight 方案,首先需要了解既有 app 的表结构。 使用 Android Studio 自带的 App Inspection 将 Room 创建的 SQLite 数据库导出为 db 文件, 如 item_database.db。 打开 db 文件 使用 sqlite3 命令连上数据库文件,查看具体表的建表语句 sqlite3 item_database.db 注意是 sqlite3,而不是 sqlite. 否则会报错: > sqlite item_database.db Unable to open databa ...
2023-05-17 · 阅读 13001 · 字数 244
今天在编译一个 2021 年写的一个 Jetpack Compose 应用时,报错: Unsupported class file major version 61 Android Studio 版本 Android Studio Flamingo 2022.2.1 Patch 1 报错原因 新版本的 AS 默认使用的是 Java 17 LTS,而这个历史项目的 Gradle 版本很低,不支持高版本的 Java。 具体原因是: Java 17 (major version 61) 编译的 class 文件,如果在 Java 16 及以下环境下运行,就会报错 Unsupported cla ...
2023-05-17 · 阅读 2392 · 字数 1290
这个周末无论是去公司团结的路上,还是一家去永旺吃饭的间隙,我都在纠结这个事情。也是用这些零碎的时间片段在手机上整理了这篇笔记。 纠结的原因 计划将一个一年前用 jetpack compose 写的练手 android app 重构一下。没想到在没有任何推广,维护的情况下,积累了一些用户。 重构的原因是,有一些用户反馈的需求,我想实现一下。但是使用的 jetpack compose 版本太旧了,毕竟 compose 还处于飞速发展解决,一年一个新样子,甚至今年都成了 android studio 的默认模板。今年用新版本的 as 编译,一堆错误,甚至提示 kotlin 的版本都过低。导致没法继续 ...
2025-03-20 · 阅读 16331 · 字数 502
从 Android Studio Dolphin 2021.3.1 之后,国内源的切换配置就从 build.gradle 文件改到了 settings.gradle 文件。 修改之后,执行一下 Sync 就可以了。 但是如果遇到国内源没有的依赖,就需要取消前面的几个 google maven 源的注释。因为依赖是按照配置源的顺序来查找的,会优先从排在前面的源去下载。 具体配置 2025-03-20 验证通过,下载很快 pluginManagement { repositories { // 注释默认仓库以加速构建 // google() ...
2023-05-11 · 阅读 4080 · 字数 341
今天将 Android Studio 升级到了最新版本 Android Studio Flamingo 2022.2.1 Patch 1。 但是新建项目的时候发现找不到 Jetpack Compose 的模板选项了,印象中之前版本是明确标注了哪些模板是基于 Compose 的。 后来在 Android Studio 的官方更新说明里找到了: https://developer.android.com/studio/releases?hl=zh-cn#updates-to-npw-nmw Android Studio Flamingo Canary 6 添加了用于创建项目或模块的新模板。默认情 ...
2023-05-06 · 阅读 1636 · 字数 573
起因是,我想保存一个 golang 代码源文件到 Android 手机上,方便在等车的时候继续阅读代码。但是我发现 Android 系统上居然没有一个类似纯文本编辑器的 app,小米系统内置的阅读器排版混乱,且无法编辑,默认诱导去下载 WPS。所以我想实现一个简单的纯文本编辑器,方便打开各类源码文件。 以下是 ChatGPT 给出的提示,暂未测试,存档一下。 文件类型与编辑器关联 在 Kotlin 中,可以使用以下代码来关联文件类型和编辑器: val mimeType = "application/pdf" //要关联的文件类型 val packageName = &quo ...
2023-03-16 · 阅读 4323 · 字数 197
在调试 android 音频 app 过程中,发现日志疯狂刷新,完全看不到有用的日志信息。而最新的 logcat 没有过滤日志级别的界面选项,查了一下原来需要手动敲规则,这也太激进了。。。 按照日志级别过滤 例如分别按照 error / warn 来过滤日志: package:mine level:error package:mine level:warn mine 代表当前调试的 app。 实际上可以按照 package, tag, level 这三个来过滤。 Logcat 中 A 代表什么 W:warn, E:error。 Valid levels are: VERBOSE, DE ...
2023-03-15 · 阅读 3339 · 字数 675
由于要实现切换到 Android 系统桌面时,蓝牙对讲功能依然可以使用,所以把主要的语音通信逻辑都放到了前台服务中,即 Foreground Service 中。但是,需要在打开对应的 Activity / Fragment 时,可以同步 Service 中的状态,及语音波形显示。这时就需要一种方式,能及时将 Service 中的变量状态发生变化时,及时通知 Activity / Fragment。 查了几种方案,最终选择了 LiveData。 LocalBroadcastManager 即,单个应用内部的广播。 LocalBroadcastManager.sendBroadcast 方法会将 ...
2023-05-06 · 阅读 30308 · 字数 314
在开发一个运行在华为平板上的蓝牙对讲 APP,最初没有测试平板设备之前,我是基于小米 Android 12 的手机测试的。 华为平板到手之后,被其系统版本号搞蒙了。。。 系统设置里,显示的是 HarmonyOS 版本,版本号是 2.0.0。 网上查了一下,这个版本号实用了多年。。。 点击升级,可以看到还有更小的版本号: 升级前的版本:2.0.0.260 升级后的版本:2.0.0.275 为了确定兼容性,我想了解一下鸿蒙系统与 Android 版本的对应关系。 鸿蒙与 Android 的关系 网上说,Harmony OS 2.0 基于 Andriod 开源项目 (AOSP, Android ...
2023-03-03 · 阅读 3724 · 字数 202
在 Android Studio 里写代码非常的不适应,还是想能用上 VIM 的快捷键。 发现有一个非常成熟的 VIM 插件 IdeaVim: https://github.com/JetBrains/ideavim 不但 Android Studio 中可以使用,在 Idea 系列 IDE 中都可以使用。 安装 File - Settings - Plugins 搜索 IdeaVim 配置 安装插件后,重启 Android Studio 会看到右下角多了个 VIM 的图标。 点开可以: 启用/禁用 IdeaVim 插件 编辑配置文件 ideavimrc 配置默认快捷键 go to de ...
2024-05-20 · 阅读 2031 · 字数 404
Android App 中想实现保存默认的蓝牙设备 Mac 地址,本质上就是一个 key / value 键值对的存储及读取过程。 可以使用 SharedPreferences 来实现。 SharedPreferences 指向了一个存储键值对的 XML 文件,并提供了读写接口。 共享级别 activity 级:getPreferences(), 即单个 activity 内共享的存储 app 级:即全局共享。getSharedPreferences(), 但是这个要加上两个参数,第一个是文件名,第二个是模式,用 MODE_PRIVATE 即可(本app内可见) app 级:还有一个是 ge ...
2023-03-14 · 阅读 3411 · 字数 806
在调试一段 Android 蓝牙连接的代码时,不太明白为何建立蓝牙连接在 Foreground Service 中执行。 Service 与 Activity 的区别 Service 没有 UI 界面,类似一个后台服务 Activity 需要关联一个 UI 界面 Activity is a GUI and service is non-gui thread which can run in the background. service 可以在后台运行,适合执行耗时操作。 A Service is an application component that can perform l ...
2023-02-20 · 阅读 1771 · 字数 892
基于 STM32 WB 蓝牙模块的开源 SDK 实现蓝牙对讲功能时,总是无法建立连接。 而使用官方 APP ST BLE Sensor 或者我自己不用 SDK 实现的 App 都可以正常建立连接。 最终发现是前台服务,及 Android 12 的兼容性问题引起的。做了下修改就可以正常运行了。 连接异常 我的状态异常: Lost connection with the node BVL-WB1 而官方 APP 是在正常连接中显示: 连接到 对应的翻译文件: <string name="progressDialogConnTitle">Connecting. ...
2023-02-16 · 阅读 1930 · 字数 90
今天在 Ctrl C / Ctrl V 代码时,发现一个再常见不过的 Resouce 引用代码报错。 出错代码: inflate(getContext(), R.layout.view_connection_status, this); 错误信息: Cannot resolve symbol 'R' R 还需要引入么? 测试了一下,发现确实,如果是在 sub package 中使用 R,需要 import root package 的 R。 package com.sunzhongwei.someapp.newpackage; import com.sunzhongwei.someap ...
2023-02-13 · 阅读 11917 · 字数 619
报错信息 在 Android 12 系统上真机执行 BLE 蓝牙设备扫描时,APP 直接崩溃,Logcat 中报错: java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission for android.content.AttributionSource@9e60bb10: GattService registerScanner ... at com.st.BlueSTSDK.Manager.startBleScan_post21(Manager.java:283) at com.st.BlueS ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust 提示词 |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |