![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 70
weixin_小栓
打工人
展开
-
编译MediaPipe自分割GPU模块为aar包,实现抠图替换背景
实现背景替换功能,目前搜到的MediaPipe解决方案都不是GPU方式(自己手机测试,非GPU背景替换时的性能参数CPU使用20%左右、内存120M左右、FPS20左右、Detect time:30-50m),下边是编译GPU方式(GPU方式可以大大减少CPU负担,自测发现CPU使用10%左右)实现的AAR,为了方便编译,我这边使用windows下的子系统wsl。...原创 2022-08-12 14:05:06 · 950 阅读 · 2 评论 -
java.lang.IllegalStateException: Only fullscreen activities can request orientation
文章目录1,问题2,原因3,解决1,问题升级target version28后出现java.lang.IllegalStateException: Only fullscreen activities can request orientation / Only fullscreen opaque activities can request orientation2,原因安卓源码全局搜索该报错信息发现:版本26的源码是这样晒的, if (ActivityInfo.isFixedOrien原创 2021-11-24 09:23:37 · 378 阅读 · 0 评论 -
挖空屏、水滴屏等动态隐藏显示状态栏和导航栏
也没什么特别的,主要是可能在高版本上出现页面跳动或闪烁,直接上代码, private void setSystemUIVisible(boolean visible){ Window window = mWindow; if(window == null){ return; } WindowManager.LayoutParams attr = window.getAttributes(); i原创 2021-11-12 16:00:33 · 314 阅读 · 0 评论 -
ViewPager设置android:layout_height=“wrap_content“失效的根本原因和解决方案
文章目录准备知识:1,原因分析(源码里找原因)2,解决方法方法一、直接在xml中给ViewPager设置layout_witdh=100dp(具体的某个值)方法二、重写ViewPager的onMeasure,在里面修改它的measureSpec准备知识:1,xml布局文件:在LayoutInflater里的parser解析,就和普通的标签文件解析一样,通过反射实例化view并获得attrs.2,LayoutParams:LayoutInflater.inflate时如果root!=null会去根据xm原创 2021-08-20 10:32:08 · 2183 阅读 · 0 评论 -
安卓动态加载资源的实现方案
文章目录准备知识:在项目中可能会遇到需要在应用内动态或静态添加皮肤或多国文字切换等资源类修改需求准备知识:安卓的资源打包会生成一个resources.arsc文件,将生成的apk拖到android studio可以看到里面的内容(如下图):主要两个方案:一、...原创 2021-08-10 11:25:26 · 718 阅读 · 0 评论 -
Android 平台 Native 代码的崩溃捕获机制及实现
好东西分享一下,出自:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w一、背景在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。所以一个合格的异常捕获组件也要能达到以下目的:支持在crash时进行更多扩展操作,如:打印logcat和应用日志上报crash次数对不同的crash做不同的恢复措施可以针对业务不断改进和适应二、现有的方案其实转载 2021-07-07 17:52:56 · 1110 阅读 · 0 评论 -
android native crash 分析和解决
文章目录常见错误:1,日志及其解释:2,使用工具定位问题代码2.1,ndk-stack2.2,addr2line.exe2.3,objdump.exe常见错误:初始化错误数组/迭代器/指针访问越界访问无效/空指针对象内存泄露参数错误堆栈溢出类型转换错误等1,日志及其解释:日志收集,默认已经有了哈,如果是自己测试收集日志可以直接:adb logcat -b crash > logs.txt06-30 18:19:07.867 F/DEBUG (32224): *** ***原创 2021-07-05 13:25:45 · 1123 阅读 · 8 评论 -
lame源码android studio下编译
1,下载lame源码下载地址:https://lame.sourceforge.io/download.php2,原创 2021-06-28 17:07:01 · 382 阅读 · 4 评论 -
Android 文字动态高亮读取进度效果
文章目录1,效果图2,代码结构和实现3,其它1,效果图类似歌词的效果。播放下面文字的音频,同时音频播放的进度和文字高亮进度保持一致。2,代码结构和实现简单的类图:ISubtitleView接口代码如下:/** * 简要功能描述 * <p> * <详细功能描述> * * @author : liuxs * @date : 2021/3/18 */public interface ISubtitleView { /** * 获取当前的带原创 2021-05-19 11:31:33 · 308 阅读 · 2 评论 -
安卓opengl基本使用
创建program //创建着色器对象 //顶点着色器(GL_VERTEX_SHADER)/片段着色器(GL_FRAGMENT_SHADER) int shader = glCreateShader(type); if (shader == 0) return 0;//创建失败 //加载着色器源 glShaderSource(shader, shaderSource); //编译着色器原创 2021-05-13 16:41:50 · 476 阅读 · 2 评论 -
安卓播放语音时,蓝牙耳机、有线耳机、听筒、免提切换
文章目录1,效果图2,语音播放输出方式切换代码3,是否连接耳机判断、监听管理类1,效果图来电图:接通后的默认听筒播放图:点击免提后的图:当连接上有线耳机或者蓝牙耳机时,免提按钮不可以点击2,语音播放输出方式切换代码下面切换工具类针对的是StreamType为AudioManager.STREAM_VOICE_CALL(注意不是AudioManager.STREAM_MUSIC)package com.eastmoney.emvideovisit.util;import androi原创 2021-04-30 16:26:03 · 1980 阅读 · 4 评论 -
android studio使用cmake编译生成库
1,app build.gradle里加上如下:(这里需要自己先创建一个CMakeLists.txt空文件,如果没有安装cmake记得先安装cmake)externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt')//也可以右击项目app可以link C++自动添加 } } ndk { abiFilters "armeabi", armea原创 2021-03-21 15:12:43 · 786 阅读 · 0 评论 -
基于AndroidVideoCache实现预加载
https://github.com/danikula/AndroidVideoCachedependencies {compile project(’:library’)compile ‘com.android.support:support-v4:23.1.0’compile ‘org.androidannotations:androidannotations-api:3.3.2’// compile ‘com.danikula:videocache:2.7.1’compile ‘co原创 2020-12-22 08:52:03 · 945 阅读 · 0 评论 -
Kotlin基本使用
package com.xs.base.networkimport android.view.Viewimport android.widget.Buttonimport android.widget.CheckBox/** * 简要功能描述 * * <详细功能描述> * * @author : liuxs * @date : 2020/01/03 *///构造函数ModuleApi(var a:Int)是主构造函数,后面的IAPi()是类才需要(),如果是i原创 2020-12-02 16:42:43 · 150 阅读 · 0 评论 -
Android Studio升级4.1.1后各种错误和解决
升级了Android Studio后编译出现CMake Error: CMake was unable to find a build program corresponding to “Ninja”.CMAKE_MAKE_PROGRAM is not set.执行编译查看编译详细信息gradlew :emsinglerecord:assembleDebug --stacktrace --info确认路径下...原创 2020-11-27 15:18:06 · 5990 阅读 · 17 评论 -
安卓Aop 实现权限检测
AOP(Aspect Oriented Programming),即面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP(Object Oriented Programming , 面向对象编程)的延续、补充。利用AOP可以对业务逻辑的各个部分或则会各个进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。这篇文章是接之前的一篇文章《安卓中利用注解生成java代码》文章目录为什么使用AOPAOP注解等知识使用AOP权限检测实原创 2020-05-15 18:20:54 · 528 阅读 · 0 评论 -
安卓中利用注解生成java代码
安卓中注解的使用分为三类代码运行时通过反射使用代码编译过程中生成java文件,并且是需要自己调用代码编译过程中生成嵌套在锚点(注解添加使用的地方)中的代码块,比如方法上有使用这种注解,当该方法执行时,注解起作用。今天主要介绍第二种,也是使用比较多的,使用注解生成代码(以@BindView 自动findViewById为例)创建注解创建New Modulemodule可以...原创 2020-03-10 16:38:30 · 294 阅读 · 0 评论 -
权限检测工具类
随着Google对安卓系统权限的收紧和重视,在6.0版本之后,增加了动态权限检测,所以代码中涉及到动态权限检测是必须的,为了方便权限相关代码的编写,下面提供一个自己封装的权限检测工具类。文章目录使用具体的工具类如下工具类 module地址使用在需要检测权限的地方直接像下面一样调用//这里MainActivity.this位置必须传Activity或者FragmentActivity;接着需要检测的权限;最后是回调接口的匿名类EasyPermissions.checkPermissions(Main原创 2020-05-09 15:02:38 · 304 阅读 · 0 评论