自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 组播IGMP协议报文介绍

IGMP(Internet Group Management Protocol)是因特网协议家族中的一个组播协议,它共有三个版本:v1、v2和v3。IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。主要基于查询和响应机制来完成对组播组成员的管理。普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。

2025-01-23 16:15:13 1344

原创 组播介绍和问题集合

组播传输作为IP数据传输的三种方式之一 ,是指接收者的数量和位置在源端主机不知道的情况下,仅由源发出一份组播报文,向目标组播IP地址发送数据的过程。其特点有:组播实现点到多点的高效数据传输。(通常基于UDP)组播可以有效节约带宽、降低网络负载。(按需发送,不会和广播一样只会泛洪,减少了对链路带宽的浪费)组播广泛应用于IPTV、实时数据传送和多媒体会议等。

2025-01-23 13:31:24 739

原创 IJK播放器问题集

在android 6.0(Android API23)及以后才能实现音视频倍速播放,6.0以下可能不会报错,但是效果只有音频能够倍速。抓取网络包查看协议交互,是否存在传输协议不对或者端口不对导致无法收到数据流导致无法播放。检查是否设置buffer_size过小,过小可能会导致udp协议丢包花屏。检查是否未设置surfaceholder或者被设置空了,再次播放未设置。对于不支持tcp的流服务器,强制使用tcp会导致无法播放。检查是否播放使用的软解播放,如果是,建议使用硬解。检查是否起播探测流大小设置过大。

2025-01-22 16:49:59 468

原创 RTSP协议状态码

以下是为RTSP/1.0定义的数值状态码及其对应的原因短语示例。注意,RTSP采用了大部分HTTP/1.1状态码,并添加了从x50开始的RTSP特定状态码,以避免与新定义的HTTP状态码冲突。状态码(Status-Code)元素是一个三位数整数,用于表示对请求的理解和处理结果。状态码的首位数字表示响应的类别,后两位数字则没有分类作用。

2025-01-22 14:40:23 214

原创 Telnet命令进行RTSP协议测试

在IPTV中,经常使用RTSP协议进行直播和点播播放。但在开发调试过程经常遇到服务器无响应,不推流等问题。需要定位问题,就需要抓包分析RTSP的报文是否正确。但一般要对程序代码进行修改后运行才能验证修改是否正确。这种方式效率低切复杂。有没有更好的方式进行协议调试呢?答案是有。可以通过telnet进行和RTSP服务器的协议调试。首先,了解下RTSP协议。

2025-01-22 14:22:23 1329

原创 ijkplyer和Mediaplayer倍数播放

倍速播放的原理主要包括视频帧率和音频重采样两个方面。‌‌倍速播放视频时,主要是通过改变视频的播放帧率来实现。例如,如果原始视频的帧率为30帧每秒(fps),在2倍速播放时,帧率提升到60fps,这意味着每秒钟播放的帧数翻倍,从而加快了视频的播放速度。这种帧率的调整要求播放器有足够的解码能力来处理更高的帧率。音频倍速播放则是通过音频重采样来实现。重采样的原理是根据播放速度调整采样率。

2025-01-22 10:35:57 1008

原创 FFPlay命令全集合

FFPlay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器。ffplay工具下载并播放视频,可以辅助卡看流信息。下载build好的exe程序:此处下载的是:ffmpeg-20200403-52523b6-win64-static.zip下载后解压,ffplay.exe就在文件夹bin中。

2025-01-22 10:12:40 1448

原创 IJKPlayer播放器参数说明

OPT_CATEGORY_FORMAT表示格式方面的设置,一般直接操作的是avformat模块;OPT_CATEGORY_CODEC是编解码方面的设置,一般直接操作的是avcodec模块;OPT_CATEGORY_SWS是图像大小方面的设置,一般直接操作的是swscale模块;OPT_CATEGORY_PLAYER是播放器方面的设置,优化播放器性能方面主要靠OPT_CATEGORY_PLAYER参数。

2025-01-22 09:51:54 943

转载 MQTT笔记

转自:http://www.xuebuyuan.com/1951015.htmlAndroid开发之利用MQTT协议实现消息的即时推送实现消息的即时推送,网上给出了几种常见的即时消息推送机制:1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如...

2019-06-17 21:56:05 270

转载 hashCode()和equals()说明

参考https://mp.weixin.qq.com/s/aDDotZphhDRCWV4nAZbwhQ一、hashCode()和equals()是什么?hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。二、hashCode()和equals()的区别下边从两个角度介绍了他们的区别:一个是性能,一个是可靠性。他们之间的主要区别也基本...

2019-06-17 21:54:00 252

原创 注解处理器(Annoation Processor)

前言Java中的注解(Annotation)如果要被识别,离不开注解处理器。所以有必要来了解一下。注解处理器注解处理器(Annotation Processor)是javac的一个工具,不管是运行时注解还是编译时注解,都会通过处理器在编译时进行扫描和处理注解。Java中有默认的注解处理器,使用者也可以自定义注解处理器,注册后使用注解处理器处理注解,最终达到注解本身起到的效果。注解处理器将...

2019-04-02 18:11:36 7428

原创 ButterKnife注解框架

https://www.cnblogs.com/SongYongQian/p/7967202.html前言学了怎么自定义注解处理器,那么我们也可以来学一下Android开发中很常用的注解框架Butter Knife。框架的学习,能帮助自己有更深的理解。概述ButterKnife是目前常用的一种依托Java注解机制实现辅助代码生成的框架;用到了注解处理器。它是一个专注于Android系统的...

2019-04-02 16:10:49 276

原创 ARoute路径说明

前言学习了ARouter的使用,以及Activity的跳转流程,今天来学习下关于路径与自动生成的文件等对应关系。关于用到的注解@Router 、@Interceptor、@Autowired下次再学。先把整个对应关系看到了,再学习会觉得形象些。Route关系说明Route主要有两个属性,path和group。如:@Route(path = “/app/ListPage”, group = ...

2019-04-02 16:01:38 2077

转载 注解(Annotation)

前言使用JAVA语言,就少不了提到注解。不管是看JDK中源码还是自己开发项目,都会用的。注解是java5引入的概念,那么先来详细的了解下什么是注解,有什么分类。怎么用?参考资料https://www.cnblogs.com/xdp-gacl/p/3622275.html什么是注解注解可以看做一种元数据,即一种描述数据的数据。注解本身是描述其他数据的。在jav中,注解就是源代码的元数据。比...

2019-02-19 23:22:52 186

原创 ARouter-Activity跳转

前言上一篇[ARouter类简单介绍](https://blog.youkuaiyun.com/skycnlr/article/details/86534451)已经介绍了Arouter涉及的主要类和作用。以及[ARouter-简单路由跳转](https://blog.youkuaiyun.com/skycnlr/article/details/85882815)中也讲述了怎么实现跳转。现在剖析源码分析下Activit...

2019-01-21 14:21:51 1323

原创 ARouter类简单介绍

前言ARouter使用上一遍已经讲述了。已经看到了基本页面跳转很方便,其实它还有其他路由功能。包括provider、Fragment等。为了详细了解ARouter的原理,先从重要的实现类的源码剖析来入手。了解了重要组成类和功能,再从流程上进行分析。ARouter详细源码参考:https://github.com/alibaba/ARouterPostcard类: 明信片A contain...

2019-01-18 15:52:11 2695

原创 Too many open files问题

Too many open files问题在做项目中,遇到这样一个问题Too many open files:01-15 23:35:56.481 W/System.err(18683): java.io.FileNotFoundException: /data/data/xxx/C2BD95DBA8137A69CAE53D3B34886395: open failed: EMFILE (To...

2019-01-16 19:28:49 3778

原创 Flutter问题集

问题一、flutter创建应用白屏问题终端日志提示:Failed to setup Skia Gr context.这个可能出现到模拟器上,真机一般不会出现。解决办法:运行时候增加参数: flutter run --enable-software-rendering或者在 Android Studio配置:选择run/configurations 菜单进行参数增加。...

2019-01-16 13:56:41 220

原创 Flutter学习-Platform Channel的使用

一、前言上一篇已经详细说明了Flutter和平台间交互的channel类型、参数等,现在来看一下实际怎么使用?二、MethodChannel的使用Flutter端调用平台端(以android为例)Flutter端:通过调用invokeMethod()进行class FlutterPluginTest { static const MethodChannel _channel = ...

2019-01-16 10:58:08 3307

原创 Flutter学习-Channel详解

Flutter学习-Channel详解前言上一篇文章中Flutter学习-插件开发学习插件开发,提到了一个很重要的通信platform channel:MethodChannel。其实flutter和本地的交互,还有其他channel。为了更好的学习插件,先来了解下各个channel,包括Channel分类、如何工作(消息如何从Flutter端传递到Platform端,消息如何编解码,Plat...

2019-01-15 14:26:30 5479 1

原创 Flutter学习-插件开发

Flutter插件开发前言Flutter是移动开发的跨平台框架,在使用该框架开发过程中,很多原生如Android的系统版本、toast、定位、电量等功能,Flutter是无法实现的这些特定平台的功。这个场景下我们就只有使用插件来达到使用平台特定功能的效果。那么插件是什么呢Flutter中的插件是这样定义的:一种专用的Dart包,其中包含用Dart代码编写的API,以及针对Android(...

2019-01-14 22:47:46 3605 1

原创 Android 类加载器特性说明

Android 插件化基础(一)前言学习插件,要先了解上一篇Android动态加载器。因为这篇文章已经说到了类加载器的一个特性,隔离:类加载器可以实现隔离(即各个模块独立)。所以,类加载器是实现插件化一个很重要的基础。那可能会有人问,既然各个模块独立了,怎么实现多个模块的数据访问呢?其实,上篇文章Android动态加载器也说到了加载器的共享特性,利用这个特性,数据访问也就清晰了。那么,通过举例...

2019-01-14 10:52:01 190

原创 Android动态加载器

Android动态加载方案前言每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。识别的是dex文件,而不是class文件。供类加载的文件也只能是dex文件,或者包含有dex文件的.apk或.jar文件类。类加载方式1、由 new 关键字创建一个类的实例如:Student student= new Student();2、调用 Cla...

2019-01-11 14:35:03 325

原创 Flutter学习-热重载

Flutter学习-热重载前言上一篇文章Flutter学习-基础组件Widgets中学习了使用Container来构建一个app页面,此时如果需要修改调试,不需要再次运行,有一个简便的方式就是使用热重载。什么是热重载所谓热重载就是页面每次改动,不需要手动去刷新,可自动刷新。即支持开发过程中热重载。很多跨平台方案框架,如Vuex都是支持热重载的,而我们学习这个Flutter,当然也是支持。...

2019-01-08 13:29:25 3709

原创 Flutter学习-基础组件Widgets

Flutter学习-基础组件Widgets前言Flutter是一个跨平台开发框架,使用dart语言开发,其提供了很多基础组件。开发者可以直接使用达到快速开发效果。参考文献:1.官网基础组件:https://flutterchina.club/widgets/basics/2.Flutter Widget 索引:https://flutterchina.club/widgets/widget...

2019-01-08 13:07:06 4883 1

原创 对比Android页面直接跳转方式(为学习Arouter做准备)

对比Android页面直接跳转方式(为学习Arouter做准备)前言上文中我们已经学习了怎么用Arouter路由框架进行页面的跳转,但是只是用了,并没有思考为什么要用路由框架?它有什么好处吗?原生的跳转不能达到效果吗?现在我们复现下跳转时候的代码:ARouter.getInstance().build("/app/ListPage") //页面跳转,指定跳转路径 ...

2019-01-07 20:05:27 846

原创 ARouter-简单路由跳转

ARouter-简单路由跳转前言为什么会有路由框架?它的优势是什么呢。带着这些疑问,先来看一下怎么用Arouter框架来实现一个简单的路由跳转。了解使用后,再来思考此问题。参考资料Arouter GiHub项目地址:https://github.com/alibaba/ARouter探索Android路由框架-ARouter之基本使用 https://www.jianshu.com/p...

2019-01-05 23:01:27 1100

原创 Android studio编译问题总结(一)

Android studio编译问题总结(一)常见问题一:Failed to find Build Tools revision 26.0.2详细错误如下:Error:A problem occurred configuring project ':app'.> Failed to find Build Tools revision 26.0.2当使用as编译时候出现该问题,提示...

2019-01-04 23:41:01 1065

原创 Android 出现Http 302跳转问题

Android 出现Http 302跳转问题最近在做一个网络诊断功能,检测外网连通性,测试地址是http://www.baidu.com。问题出现测试方法:HttpURLConnection进行网络连接访问,根据访问返回的http状态码是否为200,确定外网是否连通。测试代码: int resCode = -1; try...

2019-01-03 16:37:49 4743

原创 java的锁介绍(乐观锁与悲观锁)

2019第一篇文章-java的锁介绍(乐观锁与悲观锁)什么是乐观锁、悲观锁乐观锁的CAS实现使用选择什么是乐观锁、悲观锁第一次听到这个名字,怎么把锁都拟人化了?所以很好奇的去查阅了下,看了之后,发现这样比喻确实有它的道理。对应到代码来说,就简单了。锁是java并发处理的一种实现方式,那我们来了解下这两种锁。乐观锁,总是很乐观的,在多线程并发过程中,不会认为别人每次会修改自己的数据,所以再别人...

2019-01-03 13:14:21 1018

转载 Android sdk版本号和API级别的对照表

Android SDK版本号与API级别的对照表对应关系可以参考官网:https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels API 级别是一个对 Android 平台版本提供的框架 API 修订版进行唯一标识的整数值。Android 平台提供了一种框架 API,应用可利用它与

2018-01-12 10:31:18 15306

原创 java基础之变量覆盖?

很多人还在想这样一个问题:java的变量能被覆盖吗?其实java的覆盖是指方法来说的,变量是不能覆盖的。如下:public class Test {    public static void main(String args[]) {        A a = new B();        System.out.println(a.i);        Sy

2017-12-04 20:46:34 1069

转载 java反射一些学习

反射应该是比较常用的一个功能,之前对这块只是照样画图,么有系统的学习。现在就让我讲一讲一些原理。    首先,什么是反射?    从网上了解到的,反射就是在运行时候,能通过一些手段得到该对象的所有(注意是所有哦)属性、方法;这种动态获取运行对象的属性和动态调用对象的方法的过程就叫做反射。   为什么要用反射呢?  原理是什么?  其实原理就是java反射机制提供了一些Java 

2017-05-22 19:59:55 261

原创 idea编译出现超出方法数错误的解决方法

Android打包apk出现以下错误:   Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536   原因是Android应用的方法总数有限制,超过了打包就不成功。   具体是为什么呢?  原因是Android平台的Java虚拟机Dalvik在执行

2017-05-02 11:45:12 1479

原创 apk反编译方法

今天讲一下android app的反编译方法,一般借助工具要快捷些,不用记一些命令。     步骤如下:     1. 解压apk(将apk后缀名改为zip,直接使用解压工具解压),解压后有以下主要文件:       (1)AndroidManifest.xml 是android的配置文件,打开是乱码。使用以下命令后可以看出版本的信息等: cd D:\Android\SDK

2017-05-02 10:54:54 339

原创 个人一些感悟

好久没有来写博客了。直接原因是工作比较多,没有时间。其实也是借口吧。有时候人总是给自己找借口,不能做,不想做,不敢做。有时候应该勇敢一点,自信一点,尝试做一些事情。哈哈~ 多想再提高一下自己,没有付出实际的行动。生活在不同的圈子会有不同的感悟,圈子里的优秀的人是你的榜样,但是不是每个在别人眼前优秀的人你都信服。因为他的优秀不是你所有喜欢的。人生在世除了真正的亲人、朋友是对你于包涵、为你着想的,其他

2017-04-25 12:58:21 355

原创 adb input 命令输入文本功能介绍

最近帮同事做一个播放器的播放验证功能。就是输入播放地址,点击播放看是否能正常播放、seek等。他给我一个apk,打开后界面是这样的:    一个文本框(需要收到输入播放地址),一个播放按钮。   看着是没有啥问题,不过我是运行到电视或者机顶盒上。头疼了,文本框?我每次要用遥控器输入播放地址,并且地址还很长,输错了还要重新输入,挺麻烦的呀。旁边的大师看到了,过来说:你可以用input命令,输

2017-03-31 10:31:50 27833

原创 android HierarchyViewer查看视图层级关系

今天看到一篇文章,讲的是UI过度绘制,导致一些性能问题。

2017-03-28 18:45:48 14048

原创 认识registerActivityLifecycleCallbacks

今天无意中看到了Application提供了一个 方法,可以监控app内所有activity的生命周期,虽然现在没有用到,但是记录起来,不一定以后有什么用呢。 在Android4.0以后, registerActivityLifecycleCallbacks是Application的一个接口,注册之后应用里的所有activity的生命周期都会被监控起来,我们可以在此接口方法里实现一些特殊的需求

2017-03-20 15:21:24 7681

原创 Android context的理解(一)

在Android中每个程序都要和Context类打交道。包括程序内的service、activity都要用到这个上下文。今天就来简单说下这个context。什么是context?为什么要用context? 在官网定义了context是:        1、它描述的是一个应用程序环境的信息,即上下文。        2、该类是一个抽象(abstract class)类,Android

2017-03-20 14:00:25 376

android系统从systemserver开始的launcher启动详细流程

2 systemserver工作内容分析 3 2.1 SystemServer类简述 4 2.2 ServerThread类简述 4 3 ActivityManagerService工作内容分析 6 3.1 ActivityManagerService之main 7 3.1.1创建ActivityManagerService实例 7 3.1.2 创建ActivityThread实例,获取全局Context 8 3.1.3创建ActivityStackSupervisor实例 10 3.1.4调用startRunning 10 3.2 ActivityManagerService之setSystemProcess 11 3.3. ActivityManagerService之setWindowManager 12 3.4 ActivityManagerService之systemready 12 3.4.1 启动所有Persistent属性的APK 13 3.4.2 启动launcher 14 4 ActivityStackSupervisor启动launcher

2025-01-22

空空如也

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

TA关注的人

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