自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 数据量大引发的 OOM和ANR场景

使用CopyOnWriteArrayList来存储数据,但是CopyOnWriteArrayList不能初始化容量。在超大数据量的面前,由于放在了主线程执行,直接触发了ANR。原因,本地存储的json数据过大,导致了fastson解析出来直接报OOM。我存储的是温度传感器的温度数据,虚拟了24小时的数据量。在超大数据量的面前,可能导致内存紧张,需要将这些工作内容放在其他进程中。温度数据使用LTTB算法精简后存储。由LTTB算法精简,限制数据量。温度数据与设备数据分开存储。注意数据操作不能放在主线程。

2024-05-17 10:01:17 226

原创 Android com.google.protobuf混淆

三方库使用了protobuf这个库,在导入项目之后混淆报错。通过日志发现是跟protobuf这个库相关,了解了一下这个库的作用,发现可能需要跟fastjson等库一样的处理方式,保留相关的数据类,因为它跟序列化、反序列化相关。使用的protobuf。

2024-04-15 18:10:45 219

原创 Android 三星S8扫描不到BLE设备

getBluetoothAdapter().isLePeriodicAdvertisingSupported() 返回false。getBluetoothAdapter().isLeCodedPhySupported() 返回false。getBluetoothAdapter().isLe2MPhySupported() 返回true。虽然支持2M PHY 但是通过API查询不支持1M PHY。机器问题,所以不去支持兼容。三星S8 扫描不到我们的BLE设备。

2024-04-15 17:59:18 111

原创 Android 最新版build.gradle添加GMS、firebase.crashlytics

集成com.google.firebase:firebase-crashlytics-gradle的时候按着官方文档的语法去集成会发现未找到,去论坛找到了问题解决方法。在使用最新版Android studio (2022.3.1)创建新工程之后,发现build.gradle跟旧版本有差别。在集成GMS等服务的时候会遇到问题,我们需要阅读相关文档,发现这些差别。例如:集成GMS、firebase.crashlytics。

2023-12-27 09:06:49 544

原创 【QT】 自制一个替换DOTA2地图的工具

新手入门DOTA2,看到别人使用的地图这么好看,但是商城上又买不了,后来发现地图是可以自己手动改名称的。所以就自制了一个DOTA2的地图小工具。使用改工具,就搞定啦!

2023-12-14 18:43:20 448

转载 【ArkTS】 WaterFlow瀑布流容器的使用

arkts瀑布流开发

2023-12-08 00:02:43 236

原创 ArkTS 下拉菜单总结

鸿蒙有中文的开发文档,对于初次使用ArkTS的开发者来说很友好。有过Flutter开发经验的会较快上手。1、List的edgeEffect、LazyForEach。3、容器的.markAnchor可以和offset搭配使用。2、opacity属性可以设置整个组件的透明度。半成品代码实例、仿京东首页差一部分内容。

2023-11-30 01:29:09 864

原创 Android JNI笔记

JNI相关笔记

2023-10-23 01:55:28 367

原创 Android OOM问题笔记

原因参考https://blog.csdn.net/aiynmimi/article/details/126991015。该方法出现在EnsureLocalCapacity和PushLocalFrame函数调用中(管理局部引用)定位到该函数中,从字面意思,理解为申请desired_capacity个内存空间,但是未能申请到足够的空间。开发中如果内存管理没有做好,那么就会可能出现OOM报错导致应用崩溃。我们通过搜索代码中的OOM字样,发现了几个抛出OOM的地方。转Jstring的char*数据过多。

2023-10-16 15:29:19 235

原创 Android 应用启动过程优化

3、反射调用ActivityThreadd的main函数之后,将匿名binder(ApplicationThread)交由AMS,建立了app的binder通信基础。问题来了,我们知道Activity内有Window对象。Window对象中的View,在Onresume(addView)后才会绘制完成,我们才能看到界面。该组件是在Applicaiton创建完成之后,立即installProvider,该过程可以通过懒加载模式进行优化。来添加一个Window,这个线程不是主线程,开了一个动画线程来展示。

2023-10-12 15:07:30 203

原创 Android handlerThread并发了解

核心是由synchronized 配合 wait、notifyall进行处理并发。Android开发中如何实现并发,参考HandlerThread代码。

2023-09-25 02:27:45 179

原创 Android 预置应用到系统内

【代码】Android 预置应用。

2023-09-18 22:50:01 293

原创 Flutter video_player点击重新播放

视频播放完成之后,暂停视频,点击重新播放

2023-08-04 02:31:51 903

原创 Android APK文件笔记

复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。github的blackbox仓库 使用了插件化的思想进行加载APK,可以做你想做的事。编译器将源码、R.java`aidl生成的Java接口文件编译成.class文件。.class文件和第三方库转化为dex文件,如果遇到65535问题,就要进行分包。资源文件被aapt处理为resources.arsc并且生成R.java。

2023-07-26 17:55:01 418

转载 ubuntu搭建个人rtmp、hls推流服务器

https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx下载不了,可直接将这文本复制到/etc/init.d目录下。转载于https://blog.csdn.net/xiaweilihai/article/details/110384729。推流服务器如果出现推流不上去,则重启解决问题。

2023-06-26 10:35:48 312

原创 Android FFMPEG -dlopen failed: cannot locate symbol “ff_tx_codelet_list_float_x86″

编译ffmpeg之后集成遇到的问题ff_tx_codelet_list_float_x86

2023-05-26 16:43:22 203

原创 运行Whisper笔记(1)

小白使用openai-whisper。下载安装遇到的问题

2023-02-09 22:52:33 1367

原创 Android mount.cifs后中文乱码问题

Android 挂载Window的共享文件。发现挂上去之后出现乱码???发现执行网上的指令都会提示Can not access a needed shared library解决方法:

2022-12-07 11:37:14 468

原创 Android TV-Recyclerview添加按键音

使用RecyclerView发现只有左右按键声,但是没有上下。

2022-11-03 17:40:49 569

原创 Android androidx.startup:startup-runtime的minCompileSdk问题

androidx.startup:startup-runtime在系统应用内的集成问题

2022-09-26 17:06:15 1027

原创 Android 读取string.xml到EXCEL表格

【代码】Android 读取string.xml到EXCEL表格。

2022-09-16 19:54:56 929

原创 Android AssetManager初探

AssetManager

2022-06-30 12:01:29 1445

原创 Android 常驻应用崩溃导致进入recovery过程

应用崩溃过程:常驻应用不断崩溃,救援等级增加,最终达到LEVEL_FACTORY_RESET等级。进入recovery(Android 9.0源码):frameworks\base\services\core\java\com\android\server\am\AppErrors.java/** * Bring up the "unexpected error" dialog box for a crashing app. * Deal with edge cases (inter

2022-05-25 10:52:57 560

原创 Android 获取应用占用存储空间大小

搜索网上的方法,使用storageStatsManager.queryStatsForUid(),获得到的数据不正确,使用queryStatsForPackage才拿到正确的数据public static long getAppStorage(Context context, String packageName) { StorageStatsManager storageStatsManager = (StorageStatsManager) context.getSystemServi

2022-04-28 18:30:40 3909 4

原创 Android 亮屏后接收优先级优化

AndroidTV系统在休眠后,发现静态注册的广播优先级低,在大概10秒左右才能收到。所以改用了动态广播,但是动态广播局限于要APP存活。改进方式:注册个Service,利用Service接收广播。提高了优先级。...

2022-04-26 11:36:53 1457

原创 Android RecyclerView TV-滑动选中态背景

TV应用开发中,正常使用的是根据点击、焦点、selected换图片背景资源。但是效果看起来不怎么丝滑。优化方案:1、滑动过程中判断居中2、选中态为滑动的。体验起来丝滑一些。代码实现: private static final int ITEM_MOVE_TIME = 600; private static final int ANIM_VALUE = 60; private Paint mPaint; //四个目标坐标 private int aimLeft;

2022-03-01 16:05:41 2353

原创 Android Framework开发- Toast样式修改

背景:修改系统的自带ToastToast.java路径:frameworks\base\core\java\android\widgetpublic static Toast makeText(@NonNull Context context, @Nullable Looper looper, @NonNull CharSequence text, @Duration int duration) { Toast result = new Toast(conte

2021-11-02 20:44:04 426

原创 Android Activity启动流程(2):(应用)监听Activity启动以及应用展示

启动流程代码实现功能:记录是谁启动了Activity以及启动Activity的信息。代码API-28ActivityStarter.java:private int startActivityMayWait(IApplicationThread caller, int callingUid, String callingPackage, Intent intent, String resolvedType, IVoiceInteractionSess

2021-10-27 20:00:44 1855 1

原创 Android 自定义输入法无法弹出

输入法无法弹出 没有执行onCreateInputView()。但是onEvaluateInputViewShown()执行了。 if (mSettingsObserver == null) { Log.w(TAG, "onEvaluateInputViewShown: mSettingsObserver must not be null here."); return false; } if (mSettingsObse

2021-09-01 15:18:57 688

原创 Android 控制第三方音乐播放器

方式1(需要系统级权限): sendKeyEvent("input keyevent KEYCODE_MEDIA_PLAY") sendKeyEvent("input keyevent KEYCODE_MEDIA_PLAY_PAUSE") sendKeyEvent("input keyevent KEYCODE_MEDIA_NEXT") sendKeyEvent("input keyevent KEYCODE_MEDIA_PREVIOUS") private fun sendKeyEvent

2021-08-05 17:01:15 762

原创 Android EGL入门

EGL指定显示连接,默认连接为EGL_DEFAULT_DISPLAY EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);打开连接之后,需要初始化EGLmajor 指定EGL实现返回的主版本号,可能为NULLminor 指定EGL实现返回的次版本号,可能为NULL EGLint major, minor; if (!eglInitialize(display, &major, &minor)){

2021-07-29 01:01:56 422

原创 Android 阿里人居SDK崩溃

报错提示:app key or app secret must be initialed在此之前错误码:123官方没有文档阐述该问题解决方法。解决方法:1、Android Studio版本回退至4.1.22、gradle 配置:distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip以及classpath 'com.android.tools.build:gradle:3.1.2'在And

2021-07-16 17:28:15 419 3

转载 Android PCM采样率转换

https://www.cnblogs.com/jifeng/p/10674365.htmlhttps://github.com/hutm/JSSRC将PCM的采样率装换 long pre = System.currentTimeMillis(); String beforeSampleChangedFilePath = "F:\\tmpSave\\audio\\07-15-11-43-50.pcm"; String sampleChangedFilePath = "

2021-07-15 17:43:34 891

原创 Android 编译Boost

准备环境:1、NDK-20b2、Ubuntu步骤:1、获取git地址项目git clone https://github.com/moritz-wundke/Boost-for-Android.git2、切到Boost项目内,修改build-android.sh其中的下载链接可能已经失效,我们将其替换为可下载的版本链接需要替换的内容:http://dl.bintray.com/boostorg/release/$BOOST_VER1.$BOOST_VER2.$BOOST_VER3/sou

2021-07-11 11:55:09 961

原创 Android Activity与Fragment的生命周期顺序

启动重启回到界面暂停|销毁

2021-03-06 11:03:11 128

原创 Android 讯飞离线识别SDK-23108错误代码

使用讯飞SDK离线识别SDK-23108错误代码:除了官方的SDK错误定义,其匹配的bnf文件是有指令数量限制的。超过一定数量,将会报出该代码

2021-03-05 14:02:11 1658 1

转载 Android ArrayList迭代崩溃

崩溃原因:在迭代的时候,ArrayList被修改解决办法:实例化使用new CopyOnWriteArrayList()替代ArrayList()原子性和一致性的区别CopyOnWriteArrayList内部实现参考链接

2021-03-04 18:32:14 147 1

原创 Android GLSurfaceView笔记

GLSurefaceView继承自SurfaceView,同时也拥有了OpenGL ES所提供的的强大的3D图形处理功能。目前主流的移动游戏引擎都使用该View。GLSurefaceView的主要特性:1、管理EGLDisplay,它表示一个显示屏2、管理Surface(本质上就是一块内存区域)3、GLSurefaceView会创建新的线程,以使整个渲染过程不至于阻塞UI主线程4、用户可以自定义渲染方式,如通过setRender()设置一个Render。使用基本步骤:1、创建GLSurefac

2020-12-19 14:01:11 334 1

转载 Android Context笔记

Android Context:Context.java是一个抽象类ContextWrapper.java 是对Context.java的一个封装类ContextImpl.java 是实现类Server、Application、ContextThemeWrapper直接继承于ContextImpl。Activity则继承于ContextThemeWrapper。他们都可以通过getApplicationContext来获取Application的上下文。使用Context区别:startActi

2020-11-01 22:30:59 54

原创 Android Intent笔记

Intent匹配规则显性Intent:声明了指定Component Name,同时指定了它所在的Package Name,系统就直接将这个Intent发给特定应用,不进行匹配工作。category:如果intent不声明addgory,系统会默认添加一个DEFAULT声明的category。filter内如果不添加"DEFAULLT"声明,则不接收隐形Intent的匹配。同时声明了"MAIN”和"LAUNCHER"除外。action:...

2020-10-27 12:48:58 96

Android某保活APP样品

该样品保活效果不错,8.0及以下效果较好,10.0概率较大被杀.

2020-10-12

yuv库以及头文件(v8架构).rar

yuv库的SO文件以及头文件,可用于Android开发

2020-08-20

空空如也

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

TA关注的人

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