- 博客(119)
- 资源 (52)
- 问答 (1)
- 收藏
- 关注
原创 java.nio.file.InvalidPathException: Illegal char <:> at index 48异常问题解决
摘要:文章分析了Android开发中出现的InvalidPathException异常问题,指出该问题通常发生在资源文件合并阶段。建议通过检查values目录下的colors、strings等文件内容,重点排查属性命名冲突问题。作者特别强调自定义属性命名应添加库名前缀以避免重复,并提供了DownloadProgress属性定义的示例代码。这类问题通常源于不同库之间的属性命名冲突,通过规范化命名可有效解决。
2025-11-24 09:03:58
249
原创 Android 接入deepseek
本文介绍了如何在Android Studio中接入DeepSeek AI工具,包括注册账号、创建API key等前期准备。详细说明了功能实现步骤:添加网络权限、构建输入输出界面布局、配置请求数据格式和依赖库。重点讲解了通过OkHttp发起API请求,处理JSON返回数据的关键代码实现,并提供了流式返回和普通返回两种方式的处理建议。最后展示了如何将AI响应结果显示在UI上,帮助开发者快速集成DeepSeek到自己的Android应用中。
2025-09-03 22:50:31
568
原创 Android 16k页面大小适配
Android 15开始支持16KB页面大小,相比传统4KB页面可提升应用启动速度3%-30%、电池续航4.5%、相机启动4.5%-6.6%和系统启动8%。开发者需升级NDK至r28+,在CMake中设置16KB页面对齐参数(0x4000)。通过Android Studio可下载16KB模拟器镜像进行测试,未适配应用在16KB模式下会校验失败。该功能目前默认关闭,作为开发者选项供提前适配准备。
2025-09-02 22:16:34
3352
原创 android 禁用在当前activity下禁用侧边滑动关闭
摘要:该代码片段通过重写onKeyUp和dispatchTouchEvent方法,实现了对Android返回键的拦截控制。当检测到滑动操作(ACTION_MOVE)时,标记isSlideMove为true;在按下返回键时,若存在滑动操作则拦截事件,否则正常关闭Activity。这种机制可用于区分纯返回操作和滑动后的返回操作,实现更精细的界面交互控制。
2025-08-06 10:17:36
229
原创 Missing classes detected while running R8解决
摘要:遇到R8编译错误提示缺少类文件,特别是java.lang.invoke.StringConcatFactory类。解决方法是将build/outputs/mapping/debug/missing_rules.txt中的规则复制到proguard-rules.pro配置文件中。该问题出现在蓝牙操作类初始化时,导致10多处引用失败。通过添加缺失类或保留规则即可解决此编译错误。
2025-07-15 10:55:51
579
原创 android studio debug调试出现 IOException异常
摘要:解决Android调试端口无法打开的问题,出现"Unable to open debugger port"错误时,可以进入app设置,选择Debugger选项,将Debug type更改为Java Only模式。这个方法适用于Android Studio调试时遇到的端口连接问题,能有效解决Java调试器连接失败的状况。操作简单快捷,无需修改复杂配置即可恢复调试功能。
2025-05-29 09:32:36
723
原创 Android Binder机制
1.Binder是Android中的一个类,它继承了IBinder接口。2. 从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在linux中没有3. 从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager,etc)和相应ManagerService的桥梁。
2025-02-22 11:42:46
2382
原创 android 差值器的使用
1、系统插值器主要有下面几种AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速 AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速 AnticipateInterpolator 开始的时候向后甩一点然后向前 AnticipateOvershootInterpolator 开始的时...
2025-02-22 10:30:17
323
1
原创 Android Handler的机制跟源码分析
不断循环执行 Looper.loop() ,从 MessageQueue 中读取 Message ,按分发机制将消息分发出去给目标处理(将 Message 发到 Handler.dispatchMessage 方法去处理)。上面讲到了新建Message推荐使用 obtain() ,因为可以有效的复用消息,其中里面复用的就是 sPool 变量,它是在Message回收的时候进行赋值的。在应用启动时,会执行 main() 方法, main() 会创建一个 Looper 对象,然后开启一个死循环,目的是不断从。
2025-02-11 21:20:42
893
原创 android 用户空间切换流程
在Android开发中,创建和切换用户是一个重要的功能,特别是在需要多用户支持的应用中,下面讲述一下用户切换的流程。
2024-12-23 10:00:10
1309
原创 Android 音视频编解码器 MediaCodec
在Android中是使用MediaCodec类进行编解码。MediaCodec是什么呢?MediaCodec是Android提供的用于对音视频进行编码(压缩)和解码(解压缩)的类,它通过访问底层的codec来实现编解码的功能,比如你要把摄像头的视频yuv数据编码为h264/h265,pcm编码为aac,h264/h265解码为yuv,aac解码为pcm等等。MediaCodec是Android 4.1 API16引入的,在Android 5.0 API21加入了异步模式。
2024-12-19 16:29:47
572
原创 MediaPlayer 源码分析
MediaPlayer有create(),prepare(),prepareAsync(),setDataSource(),start(),pause(),release()等方法,MediaPlayer代码路径是在frameworks/base/media/java/android/media/MediaPlayer.java,MediaPlayer继承PlayerBase,并且实现了SubtitleController.Listener, VolumeAutomation和AudioRouting接口。
2024-12-12 17:58:43
259
原创 android MediaPlayer音效可视化--Visualizer
Visualizer 是使应用程序能够检索当前播放音频的一部分以进行可视化。它不是录音接口,仅返回部分低质量的音频内容。但是,为了保护某些音频数据的隐私,使用 Visualizer 需要 android.permission.RECORD_AUDIO权限。捕获的长度可以通过分别调用和方法来检索或指定。捕获大小必须是返回范围内的 2 的幂。
2024-11-25 19:45:18
570
原创 android 使用实现音效--Equalizer
这里只是介绍10段音效,五段同理,可以用seekbar实现10段频率音效,然后去调节每个,再记录不同的值,可以参考酷狗音乐等的音效去设置差不多的值,然后记录下来,再设置进去即可。这里调了两个音效,实际可以发挥自己想象力跟音乐细胞创作无限音效。
2024-11-19 23:52:23
2771
原创 android 使用MediaPlayer实现音乐播放
多媒体框架支持播放各种常见媒体类型,因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用API。MediaPlayer初始化只需要直接创建即可,添加播放完成跟错误监听。一般我们初始化还可以首次将上次播放的音乐跟播放进度设置进去,mMediaPlayer?.setDataSource(music.data)是设置播放音乐数据,mMediaPlayer?
2024-11-19 20:19:54
1087
原创 android 使用MediaPlayer实现音乐播放--获取音乐数据
前面已经添加了权限,有权限后可以去数据库读取音乐文件,一般可以获取全部音乐、专辑、歌手、流派等。数据类MusicData。1. 获取全部音乐数据。2. 获取流派音乐数据。
2024-11-19 13:04:43
566
原创 android 使用MediaPlayer实现音乐播放--权限请求
随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步改变。用户如果不同意权限可以跳转到设置找到应用去同意添加权限,用户有可能会拒绝权限请求,最好在界面添加可以继续请求的按钮或者直接跳转到设置里面让用户找到应用去添加需要的权限。处理权限请求结果,如果全部权限都已同意可以去做初始化,一般我们做权限请求最好每个功能点需要用到的权限一个个去请求会更友好。权限,系统只会显示一个系统权限对话框。
2024-11-19 09:47:58
1065
原创 android 使用MediaPlayer实现音乐播放--基础介绍
你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用。, 因为它 当您的 activity 未与产品互动时,就应该继续保留该 activity 并无意义。当然,当 activity 恢复或重启时,您需要 请创建一个新的。MediaPlayer适合播放大的实时性要求不高的音频,其主要方法有: static MediaPlayer create(Context context,int resid)因此,您应始终采取额外的预防措施,
2024-11-18 23:06:42
761
原创 dokka实现
1、app项目下的build.gradle 的dependencies下添加。3、将库下面的build.gradle改成build.gradle.kts。2、settings.gradle 的repositories添加。4、将build.gradle.kts的plugins添加。5、修改build.gradle.k。
2023-04-19 20:50:46
624
原创 android 实现自定Seekbar
可实现左边跟中间滑动显示Seekbarpackage com.android.myapplication;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;
2022-04-25 22:47:42
2788
原创 android 解决android studio编译慢问题
1、我们编译代码的时候经常会出现build超级慢,有时候可能得等十几二十分钟,因为我们用了谷歌的加载导致会很慢(maven { url "https://maven.google.com/"}),这句一定不能加,可以加阿里云的,这样我们编译速度会快非常多倍,下面是配置文件,对着加进去就可以了。buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/pub.
2020-12-28 10:31:32
1427
原创 android Activity转场动画makeSceneTransitionAnimation
1、activity转场动画实现有很多,这里主要记录ActivityOptions实现转场动画。1、makeSceneTransitionAnimation实现,网上很多说要添加下面这句代码<item name="android:windowContentTransitions">true</item>或者Activity中添加requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);,但是实际不添加也可以2、
2020-08-10 22:29:25
2793
原创 Android recyclerView实现二级横向显示
1、效果图2、主要实现比较简单,首先data数据类package com.example.mytestproject.recycle;import java.io.Serializable;import java.util.List;public class RecyclerItem implements Serializable { private int icon; private String name; private List<Integer&
2020-07-15 23:05:14
2594
原创 Android 实现涂鸦笔效果
1、主要可以通过手指绘制各种图案、还可以清除回撤等效果,实现比较简单。2、主要实现代码,功能实现比较简单。package com.example.mytestproject;import android.content.Context;import android.graphics.BlurMaskFilter;import android.graphics.Canvas;import android.graphics.Color;import android.graphi.
2020-07-08 22:28:53
1990
2
原创 android 状态栏和虚拟按键栏字体背景颜色设置
1、设置顶部状态栏字体颜色为白色红底public static void setStatusBarColor(Activity context, boolean useThemeStatusBarColor) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上 ...
2019-06-17 22:08:28
1317
原创 android ViewPager+fragment切换动画实现
1、viewPager的fragment切换动画主要实现ViewPager.PageTransformer接口,然后修改下面几个参数实现各种不同的动画切换效果的。setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) 透明度 setTranslationX(float translationX) X轴平移 setTranslationY(fl...
2019-01-23 22:24:15
1551
原创 android 耳机按钮控制音乐播放
1、一般我们耳机上有按钮可以实现音量加减控制中间还有一个按钮也可以监听到它的点击事件。还有就是可以监听到耳机的插拔事件。2、首先实现耳机插拔事件的监听,注册一个插拔事件的静态action<action android:name="android.media.AUDIO_BECOMING_NOISY" />3、注册一个用于监听耳机点击事件的监听<action a...
2018-08-07 23:08:11
2145
原创 android Aes加密解密和Des加密解密
1、Aes加密,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。package com.example.nsc.dataencryptproject;import android.util.Log;import jav...
2018-04-02 18:57:22
734
原创 android jni使用
1、配置添加ndk,然后配置一下环境变量2、配置build.gradle,在defaultConfig中添加//配置ndk信息ndk{ moduleName "JniTest" abiFilters "armeabi","armeabi-v7a","x86"}//配置so文件存放位置sourceSets.main { jni.srcDirs = [] jniLibs.src...
2018-03-31 09:14:59
348
原创 android ContentProvider使用
1、contentProvider可用于进程间的通信,即应用间数据的共享。 2、contentProvider 的数据类型有null、Interger、real(浮点数)、text(字符串)、blob(大数据) 3、contentProvider使用使用首先创建一个数据库,里面可以有多个参数,具体,可自行定义 package com.example.nsc.biglarge;
2017-12-19 18:47:00
425
原创 android 仿微信图片选择器
1、要实现首先在build.gradle中添加下面依赖库compile 'com.github.bumptech.glide:glide:3.5.2' compile 'com.android.support:recyclerview-v7:25.0.+'2、需要添加下面三个权限 3、先实现图片选择的activity,这里只使用了recycleView实现图
2017-11-01 22:15:22
739
原创 android Messenger跨进程通信
1、android messager可以实现不同进程之间数据的传递。通过点击进去看messenger类可以看到,我们可以创建一个service用于处理和客户端的连接请求,然后通过handler中创建一个messener对象,实现对service数据传递。/** * Create a new Messenger pointing to the given Handler. Any Mes
2017-09-26 22:15:07
444
原创 android 实现圆形头像
1、首先看一下实现效果2、首先新建一个自定义view实现ImageView,详细可看注释package com.example.a550211.xfermode;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import
2017-09-25 17:16:39
2853
1
原创 android 相机使用(拍照、录像、图片查看、静态人脸识别、延时拍照)
相机是我们最常用的手机应用之一,这里只是实现几个简单的功能、拍照、延时拍照、录像、图片查看等。2、这里主要使用surfaceView实现,首先打开摄像头实现预览,在surfaceCreated中添加/** * 启动预览 */ private void startPreview() { if (mCamera != null || !mIsSurf
2017-09-08 22:39:13
1734
原创 android 实现监听短信接收并将当前位置发送出去
1、获取定位地址,这里使用高德定位,从官网下载定位的jar包AMap_Location_V3.50_20170731.jar包然后在build.gradlecompile files('libs/AMap_Location_V3.5.0_20170731.jar')然后在权限文件中添加需要的权限和申请的key<manifest xmlns:android="http://schemas.an
2017-08-31 19:15:03
2210
1
转载 android 8.0新功能
Skip to content Developers设计 开发 分发navigationAndroidOreoAPI 概览行为变更向 Android 8.0 迁移应用示例后台执行限
2017-08-24 17:08:23
8901
简单好用的上拉加载下拉刷新 BaseRecyclerViewAdapterHelper
2016-12-27
Android Messenger使用
2017-09-26
volley框架使用
2016-12-30
imageLoader框架使用
2017-01-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅