<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HeartCircle的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/HeartCircle</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HeartCircle]]></copyright><item><title><![CDATA[Android GB∕T 19056-2021 汽车行驶记录仪-定位性能测试]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/128412908</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/128412908</guid><author>HeartCircle</author><pubDate>Thu, 22 Dec 2022 21:11:43 +0800</pubDate><description><![CDATA[Android GB∕T 19056-2021 汽车行驶记录仪-定位性能测试 （android版本）]]></description><category></category></item><item><title><![CDATA[Android 编译IJKPlayer源码]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/124449665</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/124449665</guid><author>HeartCircle</author><pubDate>Wed, 27 Apr 2022 15:00:17 +0800</pubDate><description><![CDATA[目前在做音视频相关的工作，在项目中用到了播放相关的问题，使用的框架是GSYVideoPlayer，使用它的原因是可以很方便的切换播放器内核，系统内核、IJKPlayer内核亦或是exo2Player内核，视频播放的格式不统一，使用这种方式能够更大程度的方便开发工作。]]></description><category></category></item><item><title><![CDATA[GSYVideoPlayer 播放m3u8格式视频遇到的坑]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/124006296</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/124006296</guid><author>HeartCircle</author><pubDate>Thu, 07 Apr 2022 10:13:27 +0800</pubDate><description><![CDATA[GSYVideoPlayer 播放m3u8格式视频遇到的坑，ijkplayer内核会对重定向的地址做解析]]></description><category></category></item><item><title><![CDATA[Android 使用singleInstance启动Activity遇到的坑]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/123007813</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/123007813</guid><author>HeartCircle</author><pubDate>Fri, 18 Feb 2022 17:38:31 +0800</pubDate><description><![CDATA[Android 使用singleInstance启动Activity遇到的坑]]></description><category></category></item><item><title><![CDATA[安卓逆向笔记-IDA动态调试so]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/122452812</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/122452812</guid><author>HeartCircle</author><pubDate>Wed, 12 Jan 2022 16:55:46 +0800</pubDate><description><![CDATA[年底了，在进行技术梳理，发现对于动态调试so方面还不太会，每年都说要学习，结果两年了还没学会，近期也是进行了补课，做一个笔记记录一下。]]></description><category></category></item><item><title><![CDATA[Kotlin 基础学习笔记（三）]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/119456035</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/119456035</guid><author>HeartCircle</author><pubDate>Fri, 06 Aug 2021 18:05:30 +0800</pubDate><description><![CDATA[1. 面向对象

1.1 创建一个类 + 构造方法说明


class TestCons constructor() {
}

kotlin采用constructor 关键字来代表构造方法，其中的 constructor 可以省略，但是如果加上权限修饰符就不能省略了：


class TestCons constructor() {
}

// 有参构造
class TestCons constructor(age:Int, name:String) {
}

// 如果加上权限 private 修饰...]]></description><category></category></item><item><title><![CDATA[Kotlin 基础学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/119111870</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/119111870</guid><author>HeartCircle</author><pubDate>Mon, 26 Jul 2021 17:01:16 +0800</pubDate><description><![CDATA[1.函数 和 函数表达式

1.1 函数


	fun add(x : Int, y : Int) : Int {
		return x + y
	}

==&gt;如果函数语句只有一句，变形：


fun add(x: Int, y: Int): Int = x + y

1.2 函数表达式

==&gt;将一个函数表达式赋值给一个变量，然后调用：


	// 将一个函数表达式 赋 给了i
	var i = { x: Int, y: Int -&gt; x + y }

	// 调用声明好的 函数表达式.]]></description><category></category></item><item><title><![CDATA[Kotlin 基础学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/118991775</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/118991775</guid><author>HeartCircle</author><pubDate>Thu, 22 Jul 2021 10:31:59 +0800</pubDate><description><![CDATA[1. Kotlin 语言特点

var 类型推断

 var 显示指定数据类型

 val 声明常量

2.Kotlin 函数加强

2.1 函数格式


 fun 函数名(参数名：参数类型)：返回值类型 {

 }

3.字符串模板


 fun writeDairy(placeName: String): String
 {
   var story = """
  你好，我要去 ${placeName...]]></description><category></category></item><item><title><![CDATA[Android 关于模拟点击和Hook框架的杂谈]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/118365828</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/118365828</guid><author>HeartCircle</author><pubDate>Thu, 01 Jul 2021 10:30:09 +0800</pubDate><description><![CDATA[1. 背景

  就跟我们以前玩页游挂机一样，Android端也有游戏，而且样式繁多，如果重复的操作每次都要自己重复一遍操作，那不得烦死，所以就有了这篇文章，本文仅探讨方案，大家可以尝试。而且现在的模拟器（比如MuMu，Nox）都提供录制脚本，然后在重复执行的功能，也很方便。

2. 技术选型

  从技术这方便看，大概需要三种技术，Android的模拟点击技术、Android设备支撑以及便于切换设备参数时用到的Hook框架。

2.1Android的模拟点击技术

2.1.1 使用模拟器自带的录...]]></description><category></category></item><item><title><![CDATA[Android tv应用 Recylerview 删除元素，焦点乱跳]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/118000698</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/118000698</guid><author>HeartCircle</author><pubDate>Thu, 17 Jun 2021 20:03:20 +0800</pubDate><description><![CDATA[1. 背景

  开发tv应用时，需要用到焦点，如果此时在Recylerview中删除元素，然后刷新列表，会导致焦点跳出Recylerview之外
]]></description><category></category></item><item><title><![CDATA[Android 优化 透明Activity展示loading关闭时闪烁]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/117029509</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/117029509</guid><author>HeartCircle</author><pubDate>Wed, 19 May 2021 15:19:28 +0800</pubDate><description><![CDATA[1. 背景

  之前设计了一个支付SDK，因为需要展示loading以及支付页面，也为了不需要用户传入Activity引用，设计了一个透明得Activity，但是发现在实践得时候，关闭这个Activity会有闪烁一下的问题。本来觉得并不是什么大问题，产品硬是要说这是个bug，这是强行让我涨姿势啊，太难了，想了想还是把手中的扳????给放下了。

2. 现实

2.1 Activity采用对话框样式


    &lt;style name="ActivityDialogStyle" parent="@an]]></description><category></category></item><item><title><![CDATA[Android TV使用gsyVideoPlayer快进操作视频会回退]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/117019952</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/117019952</guid><author>HeartCircle</author><pubDate>Wed, 19 May 2021 12:03:41 +0800</pubDate><description><![CDATA[1. 背景

  今天TV产品优化，发现一个难以修改的问题，使用gsyVideoPlayer的时候，切换的是系统内核播放视频，然后遥控器在控制快进快退的时候会有进度条回退的问题，这对用户就不友好了啊。

2. 原因探究

  调查了之后发现，是因为关键帧的问题，快进的时候是按照视频的关键帧来进行快进的，如果视频背压缩的过于严重会导致视频的关键帧比较少，那么就会出现以下这种情况：

现在播放到8秒，你要快进到18秒，但是视频的关键帧在第15秒，那么进度条就会从18退到15，因为进度条是按照真实的视频进...]]></description><category></category></item><item><title><![CDATA[Android 我的第一个Jetpack Compose应用]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/115110096</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/115110096</guid><author>HeartCircle</author><pubDate>Tue, 23 Mar 2021 10:54:48 +0800</pubDate><description><![CDATA[目录

1. 背景

2. Jetpack Compose 是什么？

3. 开始前的准备

4. 创建DEMO

4.1 New Project

4.2 项目配置

5. 项目整体变化

5.1 布局部分

5.2依赖的变化

5.3包体大小的变化

5.4 代码编写的变化

6. 遇到的问题

6.1 EditText 数据不会变化

6.2 导入其他人写的一个项目，在mumu模拟器报错 "Snapshot is not open"

7. 资料

1. 背景

  最近看了很多郭神公众号推荐...]]></description><category></category></item><item><title><![CDATA[Android ImageView.setImageResource 出现 栈溢出问题 StackOverflowError]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/114935058</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/114935058</guid><author>HeartCircle</author><pubDate>Thu, 18 Mar 2021 10:34:49 +0800</pubDate><description><![CDATA[1. 背景

  今天在测试应用的时候出现一个问题，分析之后，我觉得特别奇怪，可以看下面的报错：


E/AndroidRuntime(29778): java.lang.StackOverflowError

E/AndroidRuntime(29778): 	at android.graphics.drawable.BitmapDrawable.computeBitmapSize(BitmapDrawable.java:189)

E/AndroidRuntime(29778): 	at a...]]></description><category></category></item><item><title><![CDATA[Android 自定义View之MarqueeText，实现跑马灯效果]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/114001434</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/114001434</guid><author>HeartCircle</author><pubDate>Tue, 23 Feb 2021 20:14:46 +0800</pubDate><description><![CDATA[1. 背景

  需要做一个跑马灯效果的文字展示，本方案更适用于开发机顶盒应用的同学们。

2. 需求

  2.1 展示书籍的页面，文字过多的时候需要折叠

  2.2 当焦点在此书籍上的时候，需要将折叠的文字滚动起来



3. 需求剖析

  3.1 正常情况下使用跑马灯，只需要设置Textview的以下属性即可


android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scr...]]></description><category></category></item><item><title><![CDATA[Android 面试笔记之Binder详解]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/108747432</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/108747432</guid><author>HeartCircle</author><pubDate>Wed, 23 Sep 2020 10:33:48 +0800</pubDate><description><![CDATA[Android 面试笔记之Binder详解
Binder 八问
1.为什么面试要问Biner?
1.1 Binder是什么？
Activity, Service等组件都需要和AMS 进行交互，这些跨进程的通信都是 通过 Binder来完成的。

三种角度看待Binder：
	机制：一种跨进程通信的机制

	驱动：虚拟物理设备驱动

	应用层：Binder是一个能发起通信的Java类

1.2 为什么要使用多进程？

1.2.1 因为虚拟机分配给各个进程的内存是有限制的，可以突破 内存限制

为什么现在的机器]]></description><category></category></item><item><title><![CDATA[Android 面试笔记之Handler详解]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/108746182</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/108746182</guid><author>HeartCircle</author><pubDate>Wed, 23 Sep 2020 10:11:38 +0800</pubDate><description><![CDATA[Android 面试之Handler详解
Handler八个问题
1:一个线程有几个Handler?
可以有多个Handler 发送消息

2:一个线程有几个Looper?如何保证?
2.1：
只能有一个，在创建Handler的时候指定Looper，该Looper创建的线程，就是处理消息的线程
2.2：如何保证？
每一个线程 都有一个ThreadLocal ( 运用了HashMap)，用来保存 线程的 状态，标志位等 上下文环境 （大量的key-value 键值对）

如何保证一个key，只有一个value]]></description><category></category></item><item><title><![CDATA[Android 适配7.0及以上的安装更新]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/107014520</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/107014520</guid><author>HeartCircle</author><pubDate>Mon, 29 Jun 2020 10:27:50 +0800</pubDate><description><![CDATA[近期准备给APP增加一个下载更新的功能，原以为很简单，自己测试也通过了，但是发给测试后，发现apk下载完成，安装的页面弹不出来，郁闷了。

  原来的方法是这么写的：


    /**
     * android1.x-6.x
     *
     * @param path 文件的路径
     */
    public void startInstall(Context context, String path) {
        Intent install = new Inte...]]></description><category></category></item><item><title><![CDATA[Android 7.0 之 FileProvider运用：拍照获取头像并设置]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/106125514</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/106125514</guid><author>HeartCircle</author><pubDate>Thu, 14 May 2020 18:12:46 +0800</pubDate><description><![CDATA[FileProvider 是android 7.0 之后才有的一个东西，其目的也是加强管理碎片化严重的android文件夹，避免其内的应用随意使用手机的内存。

  使用一个例子，拍照获取图片，并设置到ImageView中：

  把大象放到冰箱需要几个步骤？

  步骤一：打开相机：


// 相机
public static final int CAMERA_REQUEST_CODE = 1004;
SimpleDateFormat simpleDateFormat = new Si...]]></description><category></category></item><item><title><![CDATA[Android Fragment 优化与切换]]></title><link>https://blog.youkuaiyun.com/HeartCircle/article/details/106099499</link><guid>https://blog.youkuaiyun.com/HeartCircle/article/details/106099499</guid><author>HeartCircle</author><pubDate>Wed, 13 May 2020 15:41:18 +0800</pubDate><description><![CDATA[Fragment三个包


  1.android.app.Fragment
  2.android.app.v4.Fragment 向下兼容
  3.androidx.fragment.app.Fragment

Fragment 关键类


  1.FragmentManager 碎片化的管理类
  2.FragmentTransation 操作Fragment做一些事务

FragMent 切换方式


  1.replace 会重新走生命周期 用的较少
  2.show/...]]></description><category></category></item></channel></rss>