自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (2)
  • 收藏
  • 关注

原创 讯飞AIUI语音初体验

集成SDK      近期使用科大讯飞AIUI开发一款智能语音灯控项目,因此在这记录一下我的心得,写的不好忘各位大佬见谅,不喜勿喷呐,下面就像大家介绍一下我的使用心得,注册讯飞账号,添加项目这些个常规操作就不用多说了吧,直接进入正题:     AIUI主要的技能分为两种:开放技能和自定义技能,开放技能包含的内容有天气,计算,百科,笑话等通用技能,自定义技能则是开发者自己定义的Intent(...

2018-04-23 16:48:08 6683 4

原创 鸿蒙 BLE 蓝牙智能设备固件升级之DFU升级方式(Nordic芯片)

一:问题(1)开始升级,crc 校验不通过解码压缩包,发送 op code3 的时候,包校验不通过,直接卡死在 crc 校验不通过,这个是因为这个地方设置的有问题,在 writeInitData 里面的 writeInitPacket ,把写入方式修改为await this(2)写入包的时候,由于写入过快,会导致丢包,固件接收到的包总数有问题,会导致升级失败只需要在 BaseCustomDfuImpl 的 onCharacteristicWrite 里面添加发送包的延迟操作。二:工具类。

2025-09-06 16:04:08 1116 1

原创 详解 CustomDialogController 用法

虽然华为有对应的开发文档和 CustomDialogController 的详细使用说明,但是我还是记录一下这个的使用方法build() {Column() {Button('确定')})

2025-06-21 15:59:39 511

原创 鸿蒙 H5 拉起手机拨号

/ 判断链接是否为拨号链接。

2024-12-31 14:25:39 793

原创 鸿蒙权限请求工具类

前言:鸿蒙权限请求也是必不可少的,安卓如果在清单文件中申请了,就可以手动打开权限,但是鸿蒙却有一丢丢不一样,权限管控的很严格,如果你的应用不符合一些权限申请的范围,就会被告知为高危权限申请,不能上架的,所以鸿蒙申请权限要看你的应用类型去申请相对应的权限。// 打开系统设置的权限管理页(处理授权结果)// 提取 tokenID 标识。// 动态申请授权(首次弹窗申请)// 程序访问控制管理。二:以下是封装好的工具类。

2024-12-17 13:58:25 1300

原创 鸿蒙获取 APP 信息及手机信息

前言:获取 APP 版本信息可以通过 bundleManager.getBundleInfoForSelfSync(bundleFlags) 去获取,获取手机信息可以通过 @kit.BasicServicesKit 库去获取,以下是封装好的工具类。* 获取 Version。

2024-12-06 14:55:25 975

原创 鸿蒙定义自己的 Dialog

'确认' : this.confirmText)Button(this.cancelBtnTitle || '取消')confirmText: string = '确认'前言:鸿蒙定义自己的 BaseDialog。Text('内容')// 是否显示取消按钮。

2024-12-02 15:43:46 458 1

原创 鸿蒙 Slider 怎么实现 SeekBar 效果

前言:slider 是鸿蒙滑动组件,通常用于快速调节设置值,如音量调节、亮度调节等,大大提高了代码的开发效率,完全适配 seekBar 效果。一:下面是简单的实现了滑动 slider ,左边图片会跟随刻度的变化而变化。

2024-11-22 15:37:08 494

原创 鸿蒙实现 web 传值

前言:安卓和 IOS 加载 H5 的时候,都有传值给到 H5 或者接收 H5 值,鸿蒙也可传值和接收 H5 的内容,以下是鸿蒙传值给 H5 端的具体操作。methodList: ["test", "toString","goBack"], // 具体的方法。name: "objName", // H5 定义的传值方法名。object: this.testObj, // 传输的内容。一: 定义好 H5 和鸿蒙传值的方法名,两端必须保持方法名一致。//和 H5 定义的传输内容。// H5 页面返回。

2024-11-15 16:33:35 1142

原创 鸿蒙 APP 清除缓存

以上是工具类,下面的是 Bean 对象。前言:鸿蒙实现 APP 清除缓存功能。// el1加密分区。// el2加密分区。// 获取缓存数据大小。

2024-11-08 15:43:39 615

原创 鸿蒙封装自己的 TitleBar

前言: 安卓开发的时候会封装公共的自定义控件,鸿蒙开发的时候也不例外,这不,我就自定义了自己的 TitleBar 组件,完美匹配了安卓开发时候的套路,哈哈哈。1. TittleBar 包含左边按钮,中间文字,右边按钮,为了使布局更加灵活我使用的是 Stack 堆叠容器在最外层去包裹里面的控件。2.按钮的交互逻辑,包含:左边/右边 按钮返回,是否显示,是否可切换图标,以及按钮点击监听回调。//右边文字按钮业务。//左侧返回图标逻辑。

2024-10-31 14:00:28 483

原创 鸿蒙实现相机拍照及相册选择照片

1.如果你的应用不是存储类型或者相机拍照类型,你就需要用 @kit.CameraKit Api 实现相机拍照和相册选择照片功能,如果你不用这个的话,你使用 picker.PhotoViewPicker ,你就需要申请权限,那你提交应用审核的时候就会被拒,说你使用了敏感权限。//从相册中选 photoAccessHelper版。2.以下是自己封装的一个工具类,可直接导入使用。// 从沙箱中获取图片路径。// //存到应用缓存。

2024-10-25 14:17:09 1666

原创 安卓 11 文件储存

一. 安卓 10储存特性Android 10 所带来的关于存储上的变更遵循了以下三个基本原则更好的从属性:系统知道哪些文件属于哪些应用,这可以让用户更方便地管理他们的文件。当应用被卸载后,除非用户需要,否则应用之前所创建的文件也不应该保留在设备上; 保护应用数据:当一个应用将它所属的文件写入外部存储时,这些文件是不应该被其他应用所访问的; 保护用户数据:当用户下载了一些文件,比如带有敏感信息的邮件附件,这些文件应该对其他应用不可见二.强制执行分区储存在 Android11 上运行...

2021-10-26 11:33:45 2299

原创 百度语音唤醒

一:前期准工作(1)进入百度开放平台,注册账号,创建应用,拿到应用相对应的AppID,API密钥,密钥(2)配置相关信息<uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:na...

2020-05-27 19:59:20 2526 2

原创 Android 知识总结

一、AIDL理解此处延伸:简述BinderAIDL: 每一个进程都有自己的Dalvik VM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自己的操作,都在自己的那片狭小的空间里过完自己的一生。而aidl就类似与两个进程之间的桥梁,使得两个进程之间可以进行数据的传输,跨进程通信有多种选择,比如 BroadcastReceiver , Messenger 等,但是 BroadcastReceiver 占用的系统资源比较多,如果是频繁的跨进程通信的话显然是不可取的;Messenge

2020-05-15 14:46:52 315

原创 Kotlin 转换

1.转换为数组当我们声明一个集合,可以把这个集合根据调用集合类相应的高阶函数来转换成相应的数组。集合类提供了toIntArray()、toDoubleArray()、toFloatArray()、toBetArray()等高阶函数去处理。下面提供一个函数的源码,其他函数的源码处理逻辑是相同的,有兴趣的朋友可以去看看这个源码类。源码:public fun Collection&lt...

2020-04-23 16:02:56 1515

转载 App 全局智灰

一 、如何实现页面灰度化实现灰度化的思路应该从Paint出发,因为系统是通过Paint将内容绘制到界面上的,如果能找到Paint相关的设置方法,那就再也合适不过了。自定义View做得多的同学可能知道Paint中可以设置ColorMatrix,以下是其源码,从源码的注释我们可以看到如果将setSaturation的sat参数设置为0就代表灰度模式。OK,说干就干,我们自定义一个图片...

2020-04-18 17:33:26 574

原创 高德地图定位工具类

/** * 定位--当前所在的位置 */public class MyLocationUtils { private static MyLocationUtils instance; private AMapLocationClient locationClient = null; private AMapLocationClientOption location...

2020-04-12 19:24:40 613

原创 Unable to determine application id: com.android.tools.idea.run.ApkProvisionException:

Unable to determine application id: com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant:’在运行旧项目在 Adroid Stuido 3.6.q的时候,突然出现了如上的一个报错,Apk 不能安装到手机上,网上很多小伙伴都提...

2020-04-04 11:38:11 1726

原创 Kotlin 高阶函数

官方api其实已经将我们常用的快捷操作用高阶函数给封装好了,比如with,apply等操作符,所以剩下的就是接口调用了。不知道大家用Kotlin实现过OnClickListener接口没有,有3种写法:普通点击:view.setOnClickListener(object:View.OnClickListener{overridefunonClick(...

2020-03-27 11:34:02 363

转载 Kotlin之数组和集合

一.Kotlin数组 kotlin为数组增加了一个Array类,为元素是基本类型的数组增加了xxArray类(其中xx也就是Byte,Short, Int等基本类型)Kotlin创建数组大致有如下两种方式:1.使用arrayOf(), arrayOfNulls(),emptyArray()工具函数。2.使用Array(size: Int, init:(Int) -> T...

2020-03-19 17:12:52 657

原创 广告病毒排查

最急上架 app 到各个市场的时候,安装的时候出现了爆病毒错误,在一系列的排查之后,得出了一个结论,病毒广告是以什么样的方式存在你的 app 中的。该应用程序启动后隐藏图标,后台和 js 交互私自订阅付费网页,后台下载未知文件, 上传手机固件信息、收件箱信息,并通过 js 网页发送短信,获取电话号码等,会造成 用户隐私泄漏及资费消耗,建议卸载。上诉就是一个病毒存在原因,js 文件里面恶意...

2020-03-09 01:13:08 343

原创 2020 开年计划

回首 2019 年的年初计划,有实现的,也有没有实现的,2019年是一个不平凡的一年,喜怒哀乐,悲欢离合,百感交集,但是还是熬过来了,坚持下来了,也算是成功的一年的把,这里也算安慰自己,嘿嘿。2020 年的开端是艰难的,疫情的严重,上班的延期,让我在家呆了很久,在家呆着的日子,自身的小毛病也是漏洞百出,细节一词真的是被我“诠释”的淋漓尽致,所以还是要多注意细节,俗话也说的好,细节决定成败!...

2020-02-20 17:17:52 420

转载 Kotlin中?和!!的区别

先阐述两个概念:"?"加在变量名后,系统在任何情况不会报它的空指针异常。"!!"加在变量名后,如果对象为null,那么系统一定会报异常!当使用Android Studio把上面那段Java自动转换成KT代码写法后: val myList : ArrayList<String>? = null Log.d("TAG", "-->&...

2020-01-11 16:08:46 528

转载 8.0 service适配

改变启动service方法startForeground(1, notification);华为如果只写着一句 没有问题 但是原生和小米上会有问题,改用如下在被启动的Service创建服务后的五秒内调用startForground(1, new Notification()),如果不调用或调用时间超过5秒会抛出一个ANR。startForground 0 和1 传入有区别 ...

2020-01-06 16:38:30 362

转载 Kotlin let操作符

let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let函数另一个作用就是可以避免写一些判断null的操作。1、let函数的使用的一般结构object.let{it.todo()//在函数体内使用it替代object对象去访问其公有的属性和方法...}//另一种用途 判断object为null的操作object...

2019-12-21 11:00:41 13248 1

原创 Android依赖冲突

前言实际开发过程中不可避免的会使用到一些第三方,而我们引用的第三方可能会和我们使用的其他库产生冲突;或者由于其他原因需要对依赖进行剔除。依赖冲突的解决方法其实很简单,主要就为以下两个步骤:依赖分析,找到冲突的依赖。 剔除依赖或者强制使用某个版本的依赖。剔除依赖通过移除某个第三方中特定的依赖。使用exclude group:'group_name':module:'modul...

2019-09-27 14:55:27 642

原创 Android 获取音频焦点工具类

public class AudioFocusChangeUtil { private static AudioFocusChangeUtil instance; private AudioManager audioManager; public static AudioFocusChangeUtil getInstance(){ if (instan...

2019-09-27 09:37:41 625

原创 aar二次打包

一. 需求来源项目中使用到aar , 而当前使用的aar文件中jni文件夹中的so包只包含armeabi-v7a 和 arm64-v8a,但公司项目中使用到别的第三方的so包只兼容了armeabi, 项目中的gradule配置为: abiFilters ‘armeabi’, 为保持一致性, 需要给当前使用的aar进行二次打包 ( 方案: 再jni文件中新建一个armeabi文件夹, 拷贝v7a...

2019-09-23 14:01:12 442

转载 Android WiFi热点开发

创建热点1、根据加密类型、密码、是否隐藏等参数来创建热点 static WifiConfiguration createWifiConfig(String SSID, @WifiSecurityType int wifiCipherType, String password, boolean hiddenSSID) { WifiConfiguration wifiCon...

2019-09-07 10:49:56 1732

原创 Kotlin学习笔记之 操作符重载

操作符方法对应表表达式 翻译为 +a a.unaryPlus() -a a.unaryMinus() !a a.not() a++ a.inc() a-- a.dec() a + b a.plus(b) a - b a.minus(b) a * b a.times(b) a / b a.d...

2019-08-27 16:55:12 196

转载 Splash 闪屏页流程与功能分析

闪屏流程分析要说到闪屏,几乎已经是所有 App 的标配了。但是各家对于闪屏的理解和应用方式各不相同。比如 Google 自己并不建议在闪屏页中设置过长的停留时间,而只是作为冷启动过程的一种变相缓冲,以就是仅在背景上设置一个 APP Logo 来避免屏幕留白。但在中国,几乎所有的流量还不错的 App 都会在闪屏页中加入广告,或者自己应用中某个主题活动的宣传,在增强品牌效应。这其中又有不同的使用流...

2019-08-25 21:25:25 807

原创 有心贪得无厌,无心万念俱灰

人大抵都贪心不足,轻易握在掌中的,常不觉欢喜,总对得不到的趋之若鹜,到头来,得不到的还是得不到,待杜鹃啼血,百转千回,直把那万般风景都看透了,再蓦然回首,方惊觉,原握掌中的已不在灯火阑珊处。 朱颜辞镜花辞树,到底人间留不住。 生而为人,就要活的有理想,有信念,有胆识,有文略。然后在现实的生活中,处处都是荆棘,到处遍满倒刺,会折磨你的耐心,折磨你的意志,年中了,回顾半年时光...

2019-08-07 10:54:35 276

原创 Android Studio 编译器插件

一:插件的介绍Google 在2013年5月的I/O开发者大会推出了基于IntelliJ IDEA Java IDE上的Android Studio。AndroidStudio是一个功能齐全的开发工具,还提供了第三方插件的支持。让开发人员更快速更好的开发程序。二:插件的安装in Android Studio: go to File → Settings → Plugins → B...

2019-07-17 11:51:30 575

原创 Android 动画库

目录一:Lottie二:Spruce Android Animation Library三:InfiniteCards一:Lottie简介:Lottie是一个可以播放由AE打包的json动画文件的开源库,使用它,你可以简单实现播放利用AE制作的动画。(其实Lottie的本质就是解析.json文件并通过Canvas方式进行绘制动画)Start: 2.6 k支持类型:...

2019-07-13 09:56:13 2148 1

原创 Android 启动速度优化

一:影响启动速度的原因高耗时任务数据库初始化,第三方框架初始化,大文件读取,MultiDex 加载等,导致 CPU 阻赛。类过于复杂Java 对象的创建也是需要一定的时间的,如果一个类结构比较复杂, New 一个对象将消耗较高的资源,特别是一些简单的单例的初始化,需要特别注意其中的结构。主题及 Activity 配置有一些 APP 是带有 Sphash 页的,有的是则是直接...

2019-06-14 15:22:45 297

原创 Android 版本适配:9.0

一:老旧项目在 9.0手机上老弹出 Dialog解决办法:private void closeAndroidPDialog(){ try { Class aClass = Class.forName("android.content.pm.PackageParser$Package"); Constructor declaredConstructo...

2019-06-10 17:05:32 973

原创 android studio 3.0 以上版本出现 NDK 报 mips64el-linux-android-strip 找不到

由于升级了 Android Studio,以前的老旧项目编译的时候出现了各种问题,编译 NDK 的时候出现了找不到mips64el-linux-android-strip,或者找不到类似的文件,这个时候你不需要慌乱,如果你的是 Window 电脑,找到 NDK 的安装目录,步骤如下:1. Studio 查看 NDK 的安装目录2. 在我的电脑中找到相对于的文件夹即可如果...

2019-06-05 18:20:34 492

原创 Android 中 Serialazabe 和 Parcelabel 的使用和区别

一:为什么要序列化1. 序列化的目的是: 保存对象,将对象数据保存在文件,磁盘或者是数据库中2.将序列化之后的对象在进程间传输3.在使用 Intent 传输数据的时候,数据类型较为复杂的需要进行序列化。如果实现 Serializable 接口,直接实现 Serializable 接口即可二:使用Serializable 只要实现Serializable 接口就可以了;Pa...

2019-06-04 09:45:38 312

原创 升级Android studio 3.2遇到的问题

1:Process 'command 'C:\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 2解决办法:gradle.properties文件中,如果使用的是2.14.1的版本,更改为绿框中的配置项目的build.gradle文件中修改build tools版本,我是改成3.1.4,正好可用,但是...

2019-04-12 17:51:36 293

dfu 鸿蒙升级库源码,可直接使用

通用 dfu 芯片 ota 升级,可以直接导入项目档 lib 使用

2025-09-06

百度唤醒封装方法以及 jar 包.zip

百度唤醒封装方法,以及百度唤醒 jar 架包,直接倒入项目就有使用,结合博客里面的代码直接使用即可。里面包含一整套的唤醒功能以及识别功能

2020-05-27

Archive.zip好东西啊

支持全部的 NDK 文件,还有怎么操作都详细的写出来了

2019-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除