自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 蓝牙基础浅析

由于项目中负责了蓝牙音乐模块,所以也对蓝牙做了一点点基础研究。

2023-07-12 18:34:45 357

原创 多媒体音频焦点浅析

而Android为了避免多个音源同时播放,就引入了音频焦点的概念,所有音频应用都统一按照音频焦点的规定执行,就可以避免该现象发生。当应用需要播放音频时,需要主动申请音频焦点,获取音频焦点后,再进行播放操作;同时在播放过程中,也可能存在其他音源请求焦点,此时当前应用就会收到音频焦点的丢失,当前应用应暂停播放或者降低音量,方便用户听其他音源。如上面所述,我们发现在Android 8.0之前,请求音频焦点的时候,只会返回两种结果,要么请求成功(可让您的应用异步处理焦点请求。请求焦点时,系统可以在不调用应用的。

2023-07-12 18:06:48 1336 5

原创 Android多渠道打包及资源指定

由于项目涉及多个车型,使用的是同一个base代码,不同车型都有差分项,所以需要进行多渠道打包,编译不同的资源进行编译处理。

2023-07-11 13:18:54 940

原创 Android 流量统计

Android 流量统计

2023-02-22 17:20:36 1386

原创 ConstraintLayout2

ConstraintLayout2

2023-01-09 16:36:37 438

原创 C++ 深拷贝和浅拷贝

深拷贝和浅拷贝

2023-01-05 16:13:13 65

原创 Android ShapeableImageView使用

Android ShapeableImageView使用

2022-12-23 16:10:29 1176

原创 Android Studio Gradle编译异常

Android Studio Gradle编译异常:Address already in use: Cannot bind

2022-12-08 18:16:38 766

原创 AndroidStudio突然出现大面积乱码

AndroidStudio乱码

2022-12-08 18:13:32 355

原创 Android依赖冲突

Android依赖冲突

2022-12-08 18:09:00 238

原创 系统应用运行WebView闪退

系统应用运行WebView闪退

2022-12-08 18:05:52 514 1

原创 后台进程启动Activity

后台进程启动Activity

2022-12-08 16:57:48 298

原创 沉浸式实现

沉浸式实现

2022-12-08 16:56:19 86

原创 布局圆角设置

圆角布局实现

2022-12-08 16:52:07 312

原创 Git使用

Git使用

2022-11-02 15:48:46 164

原创 MMKV使用

MMKV实现数据存储

2022-08-11 14:06:40 1641 2

原创 LiveData对象和Observer对象区别

LiveData对象和Observer对象区别

2022-08-01 18:56:02 312

原创 自定义温度控制控件

多种方式实现温度调节控件

2022-06-07 19:12:48 171

转载 Http协议

Http协议Android与互联网交互的三种方式Http协议实际开发中我们和服务端打交道一般用得都是基于Http协议的通信,所以学好Http协议是非常 重要的,当然,我们不用过于考究一些细节的东西,有个大体的了解即可!都是一些概念性的东西!什么是Http协议?hypertext transfer protocol(超文本传输协议),TCP/IP协议的一个应用层协议,用于 定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器 中的某个web资源,需遵守一

2022-05-17 18:46:39 61

原创 Android 音频可视化 Visualizer

音频可视化 Visualizer效果图Visualizer官方语录:The Visualizer class enables application to retrieve part of the currently playing audio for visualization purpose. It is not an audio recording interface and only returns partial and low quality audio content. Howev

2022-05-07 10:50:49 4075 1

原创 Java对象引用

Java对象引用强引用Java中通过new来创建的对象都是强引用类型,在回收的时候,GC会抛出OOM的异常,并且不会回收;软引用SoftReference<String> stringSoftReference = new SoftReference<>("SoftReference");在内存足够时,不进行回收,内存不够时,进行回收;这也是缓存中通常使用的弱引用WeakReference<String> weakReference = new WeakR

2021-09-29 19:25:07 77

原创 LiveDataBus学习

LiveDataBus学习LiveDataBus组成消息:消息类型可以是任意类型的Object,也可以是自定义类型的消息消息通道:是通过LiveData来实现的,这是由于LiveData的生命周期感知和可观察性消息总线:多个消息通道组成消息总线发布者发布:发布消息,被观察订阅者订阅:订阅消息,并进行观察LiveDataBus的优势实现简单:相比于EventBus的复杂实现,LiveDataBus只需要一个类即可实现减少APK大小:相比于RxJava和RxAndroid需要2-3M的依

2021-09-22 20:06:01 243

原创 音视频学习

音视频学习Camera2Camera的学习与使用通过Camera.open()创建Camera实例再通过camera.unlock来进行释放锁,否则无法使用然后通过MediaCorder.setCamera来进行设置使用由于Camera已经过时了,谷歌如今推出的是Camera2以及CameraXCamera2的学习与使用通过context.getSystemService(Context.CAMERA_SERVICE) 获取CameraManager.获取当前选中的Came

2021-09-15 20:05:51 118

原创 SpannableStringBuilder实现文字处理

创建对象SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();把需要处理的字符创添加到SpannableStringBuilder处理spannableStringBuilder.append(findFavoriteText)通过builder的setSpan方法实现事件处理,onClick处理处理文字的点击事件,updateDrawState处理文字效果,通过setUnderlineText来取消下.

2021-09-15 20:00:42 201

原创 Binder学习

Binder1. Binder初识2. 进程空间2.1 进程空间划分进程空间分为用户空间和内核空间区别:进程间,用户空间的数据不可共享,所以用户空间不是可共享空间进程间,内核空间的数据可共享,所以内核空间是可共享空间所有进程共用一个内核空间进程内用户空间和内核空间进行交互需通过系统调用copy_from_user():将用户空间的数据拷贝到内核空间copy_to_user():将内核空间的数据拷贝到用户空间2.2 进程隔离&跨进程通信(IPC)进程隔离

2021-08-31 13:21:35 104

原创 自定义FM刻度尺

自定义FM刻度尺Scroller学习Scroller:Android里面专门处理滚动的工具类,比如ViewPager、ListView等。scrollTo:设置View的滚动位置,并且会刷新View。scrollBy:移动View的滚动位置,并且会刷新View。无论scrollTo还是scrollBy都是移动父布局里的内容,但是scrollTo再调用后再次调用就没有效果了,这是因为scrollTo()方法是让View相对于初始的位置滚动某段距离;而scrollBy则可以继续调用,这是因为scro

2021-08-27 20:12:44 213

原创 自定义View

自定义View自定义View初学首先我们要先继承View这个类了解onDraw和canvasonDraw是绘制方法canvas是绘制的实现Paint:画笔的使用Paint.setStyle(Style style) 设置绘制模式FILL 填充模式STROKE 画线模式FILL_AND_STROKE 并用既画线又填充,使用setStrokeWidth来设置线条宽度Paint.setColor(int color) 设置颜色Paint.setStr

2021-08-20 20:26:16 63

原创 Room学习

Room添加依赖 def room_version = "2.3.0" implementation "androidx.room:room-runtime:$room_version" //Room的API的支持 annotationProcessor "androidx.room:room-compiler:$room_version" //Room注解处理器添加表//表@Entitypublic class Student { //主键 @Pri

2021-08-19 21:29:53 91

原创 Glide使用

GlideGlide依赖导入 implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'Glide简单使用需要注意的通过网络请求需要添加配置 <uses-permission android:name="android.permission.INTERNET"/>同时网络请求有时会请

2021-08-16 21:14:26 156

原创 OKHttp&Retrofit

OkHttp&RetrofitOkHttp的使用导入依赖 implementation("com.squareup.okhttp3:okhttp:4.9.0")使用Get同步请求:注意在Android开发中同步请求会等待请求执行完毕,再往下走,同时,同步网络请求需要在子线程中使用,同步调用的execute方法。new Thread(()->{ Request request = new Request.Builder().url("

2021-08-16 21:05:10 215 1

原创 MVC、MVP、MVVM

MVC&MVP&MVVMMVCMVC (Model-View-Controller, 模型-视图-控制器),标准的MVC是这个样子的:模型层 (Model):业务逻辑对应的数据模型,无View无关,而与业务相关;视图层 (View):一般使用XML或者Java对界面进行描述;控制层 (Controllor):在Android中通常指Activity和Fragment,或者由其控制的业务类。MVC通信方式,所有的通信都是单向的:MVPMVP (Model-View-Pres

2021-08-16 20:46:41 107

原创 Handler学习

Handler原理及相关问题分析

2021-08-13 20:08:19 206

原创 ViewPager学习

public class MainActivity extends AppCompatActivity {private List mFragmentList;private ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main

2021-08-11 18:44:23 118

原创 Navigation入门

NavigationNavigation入门概念Navigation:实现应用内页面之间的切换NavHost:容器,存放每一个页面,同时也是一个控制器Fragment:碎片NavController:控制导航的逻辑NavGraph:工具,设置导航的路线使用创建两个Fragment:public class HomeFragment extends Fragment { public HomeFragment() { // Required empty pub

2021-08-11 15:49:10 529 1

原创 Android动画学习

Animation帧动画准备素材在Drawable中添加布局文件wifi_animation:使用animation-list来进行文件加载其中drawable为帧动画图片duration为显示时间单位为毫秒<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <ite

2021-08-10 10:42:43 81

原创 AIDL学习

AIDLAIDL概述​ AIDL全称是Android Interface Definition Language,即Android接口定义语言。学习一门计算机技术语言,就需要了解该语言的基本知识:设计AIDL的目的是什么​ 设计这门语言的目的是为了实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。AIDL语法文件类型:用AIDL书写的文件的后缀是 .aidl,而不是 .java。.aidl文件大致可以分为两类,一类是用来定义parcelable对象,以供其他AIDL文件使用AID

2021-07-22 08:43:49 359

原创 Broadcast

BroadcastBroadcast概念1. 定义​ Broadcast(广播)是一个全局的监听器,属于Android四大组件之一,是一种广泛运用的在应用程序(APP)之间传输信息的机制。而BroadcastReceiver(广播接收器)是对发送出来的 广播进行过滤接受并响应的一类组件。2. 应用场景Android不同组件间的通信(同一应用内 / 不同应用间)多线程通信与 Android 系统在特定情况下的通信接收系统的状态信息3. 生命周期​ BroadcastReceive

2021-07-19 17:06:00 233

原创 Android--Service

ServiceService简介Service提供了两个主要的功能:可以让程序在后台一直做它想要做的事情,即使当前没有与用户进行交互。(对应context.startService()的启动方式)。实现了某些功能已供其他程序调用的工具,并可保持长期连接进行交互。(对应context.bindService()的启动方式)。Service生命周期启动服务启动服务:startService()单次创建:onCreate()->onStartCommand()多次创建:onCrea

2021-07-16 15:52:38 58

原创 Java多线程

多线程程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一 段静态的代码,静态对象。进程(process):是程序的一次执行过程,或是正在运行的一个程序。是一个动态 的过程:有它自身的产生、存在和消亡的过程。——生命周期进程作为资源分配的单位线程(thread):进程可进一步细化为线程,是一个程序内部的一条执行路径。线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开 销小Thread类构造器Thread():创建新的Thre

2021-07-09 22:45:38 59

原创 程序流程控制

程序流程控制三种基本流程控制顺序结构分支结构if…elseif(条件表达式){ 执行代码块; }else{执行代码块;}switch-caseswitch(表达式){case 常量1:语句1;// break;case 常量2:语句2;// break;… …case 常量N:语句N;// break;default:语句;// break;} 循环结构for循环for (①初始化部分; ②循环条件部

2021-07-09 22:44:58 53

Ubuntu反编译工具

Ubuntu反编译工具

2023-05-09

Android APK反编译文件

图像化反编译文件

2023-05-09

how2j_offline_2020.01.31.zip

Java内部资料,适用于java初学者,以及初级开发,内容包括了Java基础,Java中高级技术,前端基础技术,以及Java框架、中间件、分布式等内容,甚至还有几个项目,内容寓教于乐,生动有趣。年轻人,你渴望力量吗?还不快快行动,买它买它,OMG!

2021-04-28

空空如也

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

TA关注的人

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