自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Chin_Style的博客

外面天气晴朗,看书增长知识

  • 博客(158)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解

一、前期基础知识储备(1)adb命令行的定义与作用 adb的全称为Android Debug Bridge,中文名“调试桥”,顾名思义adb命令是调试手机中应用的一种方法,而且作为Android SDK中的工具,其功能非常强大,用这个命令行工具可以直接操作管理调试中的Android模拟器或者真机调试中的设备,它的主要功能列举如下:  运行设备的shell(多种命令行),进行各种操作;...

2018-07-08 13:02:40 9787 4

原创 Android MediaBrowser 各组件使用概览

播放器及其媒体会话在 MediaBrowserService 内实现,界面和媒体控制器与 MediaBrowser 一起位于 Android Activity 中。

2021-07-02 16:52:08 3453 2

原创 Ubuntu编译ijkplayer so库并播放本地raw/assets文件

ijkplayer 是一个基于 ffmpeg 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电。可以通过编译来实现更多格式的支持,可以说只要是 ffmpeg 支持的格式 ijkplayer 就支持。

2021-06-26 18:22:51 1299 1

原创 ffmpeg的介绍,编译与使用

ffmpeg是广泛使用的多媒体解决方案,既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。

2021-06-20 18:52:15 2083 1

原创 音视频基础知识

音视频术语是了解音视频开发的基础内容,如一些专有名词,常见的口语化名词等,它们表述了音视频中客观存在的属性或特征。

2021-06-20 12:47:32 1446

原创 实际开发中常用的Git操作

git是用C语言开发的,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。

2021-06-13 22:51:37 592

原创 Jetpack — AAC架构组件之Lifecycle

一,前期基础知识储备1)AAC架构Android Architecture Components,简称 AAC,一个处理UI的生命周期与数据的持久化的架构。核心组件:Lifecycle, LiveData, ViewModel 以及 Room。主要作用:通过它可以非常优雅的让数据与界面交互 并做一些持久化的东西 高度解耦 自动管理生命周期 而且不用担心内存泄漏的问题2)不使用Lifecycle时的常规操作解耦是软件开发中永远追求的,在Android开发中,解藕很大程度上

2021-05-05 16:46:56 1007 6

原创 Android蓝牙开发 — 经典蓝牙&BLE蓝牙

一,前期基础知识储备1)蓝牙是一种支持设备之间短距离通信的无线电技术(其他还包括红外,WIFI);支持移动电话、笔记本电脑、无线耳机等设备之间进行信息的交换;Android支持的蓝牙协议栈:Bluz,BlueDroid,BLE;Bluz是Linux推出的,目前使用最广泛; BlueDroid是Android4.0之后推出来的,简化了Bluz的操作; BLE是最新的低功耗协议,传输效率和传输速率都是很高的;2)蓝牙开发技术一共分为两种:经典蓝牙,3.0版本以下的蓝牙,功耗高,传输

2021-04-30 21:00:28 8943 6

原创 Android Framework 架构介绍,Binder理解

一,Android Framework架构介绍1.Android系统架构Android本质就是在标准的Linux系统上增加了Java虚拟机Dalvik/ART,并在Dalvik/ART虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android架构Linux 内核原生.

2021-03-14 16:21:13 3203 1

原创 深入理解Java虚拟机-Java内存区域,垃圾回收机制和内存分配策略

本篇主要参考周志明老师的《深入理解Java虚拟机》第三版一个Java程序,首先要经过javac编译成.class文件,.class文件是给JVM进行识别的,JVM将.class文件加载到方法区,执行引擎会执行这些字节码,执行时,会翻译成操作系统相关的函数。过程如下:Java文件->编译器->字节码->JVM->机器码Java能够做到“一处编译,处处运行”,这与.class文件的作用是密不可分的。无论在什么环境中将Java源文件编译为.class文件,都能够通过JVM执.

2021-03-08 15:00:27 409

原创 Java序列化与数据传输

1)什么是序列化①序列化:Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。堆内存中的java对象数据,通过某种方式把该对象存储到磁盘文件中,或者传递给其他网络节点(网络传输)。对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。核心作用是对象状态的保存与重建。②反序列化:将序列化对象写

2021-03-06 17:39:22 2417

原创 并发编程:线程的共享与协作

一,前期基础知识储备之前的博文,《Android进程和线程详解》里有一些关于线程的基础知识。1)什么是并发?指多个线程操作同一个资源,不是同时操作,而是交替操作,只不过因为速度太快,看起来是同时执行(单核 /多核CPU均是如此,因为通常任务的数量远远多于CPU的核数,所以任务最终也是交替执行的)。通过时间片轮转机制RR(CPU时间片轮转机制,cpu给每个进程分配一个“时间段”,这个时间就是这个进程允许运行的时间,如果当这个进程的时间片段结束/阻塞,操作系统就会把分配给这个进程的cpu剥夺,分

2021-03-02 22:38:20 323

原创 实例:Java注解深入浅出

一,前期基础知识储备1)Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。日常开发中新建Java类,我们使用class、interface比较多,而注解和它们一样,也是一种类的类型,他是用的修饰符为 @interface。2)Java内置的注解J

2021-02-28 22:22:09 277 2

原创 实例:Gson解析泛型对象

一,前期基础知识储备1)Java泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。2)泛型使用泛型使用方式,分别为:泛型类、泛型接口、泛型方法。①泛型类,泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为

2021-02-28 15:11:05 7457 2

原创 实例:Android中运用反射机制

一,前期基础知识储备反射反射(Reflection)是程序在运行状态中动态检测,访问或者修改类型的行为,具体表现为以下两个方面:对于任意一个类,都知道这个类的所有属性和方法。 对于任意一个对象,都能够调用它的任何一个方法和属性。反射可以让我们在运行时获取类的属性和方法,构造方法,父类,接口等信息,还可以让我们在运行期实例化对象和调用方法等。例如, // 获取系统属性 public static String getSystemProperty(String key)

2021-01-28 14:56:47 1531 1

原创 实例:下载服务器zip资源(Json,Png,多种文件)

一、前期基础知识储备1)OKGO库地址:https://github.com/jeasonlzy/okhttp-OkGo作者已停止维护,所以使用时需要在文档基础上,做必要的修改。2)笔者用以下载服务器上一些简单的资源,比如Json,Png,这些资源都是打包成zip包的形式,尽量减小包体,便以传输。3)由于是zip的形式传输,所以资源下载到本地之后,会有一个解压缩保存本地的过程,解压缩完毕得到对应资源后,需要删去zip包。4)涉及到Json解析的时候,使用Gson库进行解析。二、.

2020-12-30 11:30:05 686

原创 实例:使用OKGO下载网络压缩包资源,然后解压缩放在本地使用

一,前期基础知识储备1)svg图片较大,所以需要压缩为zip包后放在服务器上,下载使用;2)使用OKGO库进行网络资源下载;3)使用工具库Blankj中的解压缩工具进行解压缩后,然后保存在本地;4)下载并且解压缩zip成功后,删除本地zip包,只保留解压缩得到的svg资源。二,上代码,具体实现1)引入OKGO和Blankj依赖:implementation 'com.lzy.net:okgo:3.0.4'implementation 'com.blankj:utilcod

2020-09-24 11:55:42 430

原创 实例:开发中使用到的一种表现比较可控的自定义弹窗

一,前期基础知识储备最近在为几个应用接入积分系统,其中使用到弹窗较为频繁,比如“登录弹窗”,“转盘弹窗”,“商城弹窗”等等,样式各有不同,所以就把此前使用的自定义弹窗在修改了一下,然后统一使用该弹窗,为了追求较好的应用内展示表现和稳定的性能。解锁资源的弹窗每日登录弹窗展示弹窗的地方较多,为了追求统一性,会对弹窗做一些改善。二,上代码,具体展示1)写入布局,注意需要①控制所有弹窗居中显示;②为所有弹窗写入一个颜色更深的透明弹窗,以突出弹窗内容;以“解锁资源”弹窗为例,布局结

2020-08-28 11:09:43 358 2

原创 实例:Google Play游戏服务接入排行榜和成就系统

一,前期基础知识储备1)排行榜官方文档:https://developers.google.com/games/services/common/concepts/leaderboardsLeaderboards can be a fun way to drive competition among your players, both for your most hardcore fans (who will be fighting for the top spot in a public lead

2020-07-20 14:44:12 2264

原创 实例分析Facebook激励视频广告接入

一,前期基础知识储备1).Facebook Audience Network新手入门使用 Facebook Audience Network,您的 Android 应用可以通过展示 Facebook 广告实现创收。以下是文档位置https://developers.facebook.com/docs/audience-network/get-started/android/?translation(需翻墙)2).测试 Audience Network 的实施情况请在推送至生产环境之前..

2020-07-17 11:38:11 17965 2

原创 实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

一.前期基础知识储备traces.txt系统自动生成的记录anr等异常的文件,只记录java代码产生的异常。如果是旧版本(Android Studio3以下的版本)的AS,可以直接通过DDMS的File Explorer直接导出来:之上的AS由于移除了DDMS,所以需要其他的方法获取该文件。二.上实例分析笔者在项目中出现了一个ANR,信息如下:06-01 14:55:29.473 973-1030/? E/ActivityManager: ANR in com.znv.linku

2020-06-24 16:33:46 1513

原创 实例:利用友盟崩溃统计+mapping.txt文件定位项目的错误

一,前期基础知识储备1)什么是mapping文件;mapping文件就是在对代码混淆以后,可以用来查看混淆前和混淆后的对比文件。一般用来查看线上的bug;2)mapping文件在哪看;在项目的build -> outputs-> mapping-> release-> mapping.txt3)友盟提示的崩溃错误信息;二,实例解决从上面的那个错误,我们知道是在PaintActivity中出错,但是出错的方法已经混淆,和行号已经看不出了,所以需...

2020-05-09 18:55:35 996

原创 新应用广告请求高版本手机出现java.net.UnknownServiceException: CLEARTEXT communication to *** not permit,无法获取广告

一,前期基础知识储备广告的配置文件如下:Android Development上可以找到:“ 为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输。”...

2020-04-17 11:27:55 348

原创 实际开发项目中使用 LeakCanary-快速检测应用的内存泄漏问题

一,前期基础知识储备关于内存泄漏一些基础点可以参考笔者之前的文章《Android中内存泄漏超级精炼详解》补充一些说明:《LeakCanary:检测所有的内存泄露》我们曾看错了方向bitmap的大小并不是问题,当内存将要用完的时候,OOM可以随处发生。它们更多的发生在你创建一个像Bitmap这种比较大的对象的情况下。OOM只是一个症状源自于更深层次的问题:内存泄露。什么是内存...

2020-03-27 10:28:03 545 1

原创 2020 二月杂记 API24之上保存分享功能;鸿洋万能适配器+构造基类;AsyncTask最正确写法,防止内存泄漏。

一,前期基础知识储备二月中旬返工,一切平安。感恩!复工后梳理一下最近的一些东西,做成一个记录:1)API24之上的保存分享,谷歌弃用了此前的很多的存储API,这里拿一个项目里使用的做示例使用;另外就是面向API24的智能终端(现在几乎没有低于24的了吧),分享功能得依靠fileprovider来实现。2)RecyclerView万能适配器的使用,这里使用的不是此前博客里的那个,而是...

2020-02-28 11:46:28 579

原创 用gradle打包方式打Bundle正式包

一,前期基础知识储备以下是利用Android Studio打Bundle包的方式:那么,利用gradle打Bundle包的方式呢?二,具体实现1)gradle中配置打包签名信息android { signingConfigs { releaseConfig { keyAlias 'xxxxxx' keyPassword 'xxxxxx' store...

2020-01-02 11:56:17 8026 1

原创 TabLayout的用法:常规用法 + 自定义用法 + 多项用法 + 联动 CoordinatorLayout

先上最终效果:效果主要包括以下几方面的内容:1)两项Tab的常规切换;2)自定义两项Tab,仔细看下方的指示器里面的图片是可以动;3)多项Tab,上方的共10个Tab项,涉及到基类的创建和继承;4)最上面将Tab项放入CoordinatorLayout中,完成上下拉动时的联动;一,前期基础知识储备TabLayout 是 Design Support 库中的一个全新控件。...

2019-12-06 13:56:06 1046 3

原创 11月杂记(二)——SVG解析,RecyclerView删除列表,List统计+去重,RGB与HSB互转,获取图片像素RGB与图片主颜色

一,前期基础知识储备11月下旬已经走了一大半了,因为本月事情较多,还未来得及记录。这两天整理了一下过去一个月不完全懂的东西,分为两部分杂记,此为第二篇。《11月杂记(一)——String拼接,Json读写,Xml读写,Hashmap使用,File存储》《11月杂记(二)——SVG解析,RecyclerView删除列表,List统计+去重,RGB与HSB互转,获取图片像素RGB与图片主颜...

2019-11-29 10:52:22 562

原创 11月杂记(一)——String拼接,Json读写,Xml读写,Hashmap使用,File存储

一,前期基础知识储备11月下旬已经走了一大半了,因为本月事情较多,还未来得及记录。这两天整理了一下过去一个月不完全懂的东西,分为两部分杂记,此为第一篇。《11月杂记(一)——String拼接,Json读写,Xml读写,Hashmap使用,File存储》《11月杂记(二)——SVG解析,RecyclerView删除列表,List统计+去重,RGB与HSB互转,获取图片像素RGB与图片主颜...

2019-11-28 11:50:48 433 1

原创 有趣的自定义View —— SVG区域点击交互

一,前期基础知识储备实现效果如下:两张SVG图片,实现点击交互,被点击的区域显示特征色。SVG图片点击交互1)SVG是什么?SVG 文件是纯粹的 XML文件。SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损...

2019-10-24 11:31:56 4574

原创 多分辨率适配终结者之约束布局ConstraintLayout,我佛了

一,前期基础知识储备大屏,全面屏时代到来,屏幕适配从未显得如此重要。如图,一个简单的付费界面,如果完全按照上图的标注来写,那么在传统16:9的手机上表现良好,但在大屏手机上表现就差强人意,无论使用相对布局还是线性布局,都无法做到完整的适配。在正式项目中,就采用了一个笨办法:根据分辨率比例,使用不同的布局: View view; if (mScreen...

2019-10-16 18:58:04 1473 1

原创 Bitmap精炼详解第(三)节:Bitmap的压缩

一,前期基础知识储备笔者之前有两篇文章:《Bitmap精炼详解第(一)节:Bitmap解析和加载》《Bitmap精炼详解第(二)节:Bitmap常见处理方式》解释了一些Bitmap的基础知识,有兴趣的读者可自行查看。1)如何计算Bitmap占用的内存如果图片要显示下Android设备上,ImageView最终是要加载Bitmap对象的,就要考虑单个Bitmap对象的内存占用了,如何计算...

2019-10-15 11:02:05 2105 1

原创 人脸识别——使用谷歌Firebase-ML Kit实现

一,前期基础知识储备1)Firebae是什么?由 Google 提供支持,基于 Google 基础架构而构建,可以自动扩缩的全面移动开发平台。官网地址:https://firebase.google.com/2)ML Kit是什么?Firebase提供的面向移动开发者的机器学习产品。官网地址:https://firebase.google.com/products/ml-k...

2019-09-26 11:37:06 5484 1

原创 Dagger.Android — Dagger2进阶

一,前期基础知识储备参考笔者之前的文章《依赖注入框架-Dagger2 精炼详解》,里面有Dagger2的常规用法——@Inject,@Component,@Module,@Provides这些基本注解。这里沿用上篇文章中示例,在Activity中完成一个类的注入,代码如下:public class HttpActivity extends AppCompatActivity { ...

2019-09-23 17:13:05 324

原创 使用Tensorflow实现图片风格迁移,圆梦名画

一,前期基础知识储备1)Prisma — 图片风格迁移的鼻祖:照片可以记录生活的瞬间,变成一幅幅的回忆;而Prisma则是可以让瞬间的回忆变成永恒的名画!我们平常用手机随意拍出来的照片效果看起来都很普通,而通过 Prisma 处理之后,你一定会惊叹于它的神奇!Pisma是一款来自俄罗斯的照片美化应用,和「彩云天气」那样,借助人工智能技术将自身的能力提升到另一个层次。“P...

2019-09-20 18:31:20 2494 1

原创 Android组件化架构

一,前期基础知识储备组件化是什么?组件化的定义是什么?组件化是什么时候形成的?在项目开发中,一般会将公用的代码提取出来用于制作基础库Base module,将某些单独的功能封装到Library module中,根据业务来划分module,组内的每个人分别开发各自的模块,如下图所示:项目初始架构图随着事件的推移,项目迭代的功能越来越多。扩展了一些业务模块之后,互相调用的情况就会增多,对某...

2019-09-14 15:04:10 648

原创 RxJava 2.0版本使用精炼详解

一,前期基础知识储备笔者之前写过两篇关于RxJava1.0的文章《RxJava理论讲解和简单实现》《RxJava常见操作符讲解》,感兴趣的读者可以看一看。里面有有关RxJava异步操作库的详细介绍,本文不再赘述。RxJava1.0版本添加依赖: implementation 'io.reactivex:rxandroid:1.2.1' implementatio...

2019-09-08 17:20:57 611

原创 依赖注入框架-Dagger2 精炼详解

一、前期基础知识储备1)依赖注入是什么?依赖注入是面向对象编程的一种设计模式,其目的是为了降低程序耦合,这个耦合就是类之间的依赖引起的。我们使用各种依赖注入框架比如View注入框架Butternife,Koltin注入框架kodein,更加简易的RoboGuice注入框架等等,都是为了降低类与类之间的耦合。实现依赖注入的方法通常有三种:①构造方法注入;②定义set方法注入;③注解注入。...

2019-09-05 15:01:58 619

原创 BottomSheets + BaseQuickAdapter -> 知乎评论 + 云村歌单

一、前期基础知识储备Android Support Library 23.2里的 Design Support Library新加了一个Bottom Sheets控件,Bottom Sheets顾名思义就是底部操作控件,用于在屏幕底部创建一个可滑动关闭的视图,可以替代对话框和菜单。其中包含BottomSheets、BottomSheetDialog和BottomSheetDialogFragm...

2019-08-30 11:34:48 304

原创 Shatter — Fragment的替代选择方案

一、前期基础知识储备 Fragment的难点主要在于堆回退栈和生命周期,官网的生命周期图示很少有人能完全理解。其实所谓的Fragment就是一个视图管理器,是Activity的一个辅助Controller(MVC架构中的Controller,和Activity地位一致)。 Fragment中的有些问题是可以规避的,有些问题则是难以解决的。如果不想陷入被Bug包围...

2019-08-27 10:59:31 1681

AVRCP蓝牙协议.pdf

初次接触蓝牙开发的同学,可以了解一下Avrcp的相关理论知识,包括各个版本Avrcp协议的变化,及其他相关的蓝牙协议。

2021-05-26

usaHigh.svg

usa 的SVG图片

2019-10-24

chinaHigh.svg

china 的SVG图片

2019-10-24

Android开发内功篇—Java开发实战经典

没错,就是你在知乎上看见大家都在推荐的Java实战方面的书。带目录。该书是一本综合讲解Java核心技术的书籍,在书中使用大量的代码及案例进行知识点的分析与运用,并且给出一些比较成熟的开发步骤,帮助读者更好地进行Java的开发。

2018-03-20

Head_First_Java

没错 这本书就是你在知乎上看见大家都在推荐的Java学习最好的入门书籍。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。

2018-03-19

空空如也

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

TA关注的人

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