- 博客(70)
- 收藏
- 关注
原创 android ijkplayer 中遇到的问题
在做音频播放的时候,很多公司使用的是开源的ijkplayer播放器,ijkplayer底层是基于ffmpeg,在某机型上面可能常常遇到各种问题。今天整理了大家在使用ijkplayer中遇到的问题,以及根据ijkplayer社区issue和solution方案。如下:1、直播技术总结(三)ijkplayer的一些问题优化记录https://blog.csdn.net/hejjunlin/arti...
2020-04-22 14:28:39 2420
原创 JavaCV + FFmpeg 拉流播放器
一、设计方案一个简单的拉流播放器,需要具备以下功能:将直播流拉取到设备上并展现出来 保证播放当前直播流的音视频是同步的 播放视频时可以切换全屏幕与非全屏二、定义播放器的生命周期在定义播放器的生命周期们需要做到以下两步:1. 先定义一下播放器的事件 2.定义播放器展示的控件1. 定义播放器事件一个播放器,需要定义出来相应的播放器的事件,最基本的播放器的操作就是...
2020-03-30 15:53:56 2187
原创 JavaCV 入门
最近工作中因为项目的原因边学边用,接触并使用JavaCV做了一些相关的产品,目前觉得,JavaCV在图形图像(人家本身就是一个视觉库)的功能真的挺强大,而且使用起来避免了复杂的平台处理。下面整理一下对JavaCV库的初步理解。1.JavaCV 简介JavaCV是对各种常用计算机视觉库的封装后的一组jar包,其中封装了FFmpeg、OpenCV等计算机视觉编程人员常用库的接口,可以通过其中...
2020-03-30 15:44:59 2216
原创 Flutter基础——第一个Flutter实例
第一个实例:import 'package:flutter/material.dart';void main() { runApp(new Center(child: new Text('你好,世界!', textDirection: TextDirection.ltr)));}上面实例中只使用了runApp函数,runApp函数接受指定的控件(Widget),并使其...
2019-05-28 10:41:57 280
转载 Flutter基础——开发环境的搭建
Flutter开发环境的前提要求如下:Windows 7以上版本(64位)、Mac或Linux操作系统(64位)磁盘空间:400 MB(不包括Android Studio的磁盘空间)。已经安装及配置GitMac开发环境Flutter SDKDart SDK与Flutter捆绑在一起,没有必要单独安装Dart。在当前终端窗口运行以下命令使用Git安装Flutter,并临...
2019-05-28 09:31:23 318
原创 Android Studio NDK开发(二):Welcome to JNI
前言现在我们从零开始NDK开发,本篇博客将介绍如何创建一个native方法,并在Activity中调用。如果大家对于NDK开发的配置不了解的话,可以查看:前一章内容Welcome to JNI1.新建c文件这里我们不使用Android Studio默认创建的C/C++文件native-lib.cpp,鼠标点击cpp文件夹(如果没有可在main文件夹下新建),右击new ->...
2019-04-19 16:25:48 264
原创 Android Studio NDK开发(一):准备工作(CMake方式)
前言NDK即Native Development Kit,是Google在Android开发中提供的用于快速创建native工程的一系列工具的集合,帮助开发者快速开发C/C++的动态库,并自动将so和java应用一起打包成apk,极大地减轻了开发人员的打包工作。而我们经常还会听到JNI,那么JNI和NDK之间有什么区别呢?首先JNI即Java Native Interface,是Java语...
2019-04-19 16:23:17 354
转载 Genymotion 下载安装及常见问题
原文:https://blog.csdn.net/yht2004123/article/details/80146989一、注册\登录打开Genymotion官网,https://www.genymotion.com/,首先点击右上角的Sign in进行登录操作。如何登录就不细讲了,下面讲一下如何注册(备注:注册按钮在登录界面中)。注册如果没有账号,则需要先注册。在登录界面,...
2019-03-25 11:47:06 571
原创 Fragment 通信
首先列举一下Fragment中可以实现通信的技术:万金油 eventBus rxBus:优点:方便,快捷,简单缺陷:1.反射,性能打折,效率低2.代码维护困难3.数据无法返回,单向传送handler缺点:1.耦合2.无法获取activity的返回结果3.内存泄漏static静态变量,内存消耗广播缺陷:1.性能差,延迟...
2019-03-19 11:30:06 255
原创 webRTC 源码 编译
目录编译环境搭建 代码同步 编译参数配置 源码编译 踩过的问题 总结一、编译环境搭建首先,WebRTC源码编译,官方也说明得很清楚,只能在Linux平台进行编译(笔者在mac os 编译过,后来因为缺少arm架构等编译依赖文件放弃,具体参考官网),这里笔者使用时ubutun 14.0.1 + vmware。当然,这整个过程中,翻墙是不可缺少的,具体可以参考笔者的博客《sha...
2018-12-15 18:30:38 2341
原创 android waiting for debugger
log日志中出现:Application XXX is waiting for the debugger to attach,这时项目就会停留在android waiting for debugger的页面,既不能正常运行,也不能进入调试模式。解决办法:1.dos命令adb kill-serveradb start-server两个命令操作之后偶尔会有效(进入调试状态)...
2018-12-04 14:37:58 451
原创 android .so深入理解 abiFilters的使用等
为什么使用soso机制让开发者最大化利用已有的C和C++代码,达到重用的效果,利用软件世界积累了几十年的优秀代码; so是二进制,没有解释编译的开消,用so实现的功能比纯java实现的功能要快; so内存分配不受Dalivik/ART的单个应用限制,减少OOM; 相对于java代码,二进制代码的反编译难度更大,一些核心代码可以考虑放在so中。 说起.so文件就必须提一下arm64、...
2018-11-21 20:11:57 3521
原创 android studio module 导入本地aar
最近在做apicloud原生模块开发,去网上扒下来点demo,看着文档,实现了webRTC音视频通话(点对点通话)。原生很好实现,放到模块里就开始各种踩坑了。里面用到了一个aar的包,当时由于一些bug,导致自己怀疑aar的导包方式有问题。所以就去apicloud的论坛寻找较官方的解决办法。(至于什么bug我下篇文章给大家分享。。)apicloud 官方对这个aar的解释可以说是很少了。...
2018-11-21 19:53:33 1692
原创 android 内存优化(小技巧) 二
日常搜集的一些有关内存优化的小技巧:对常量使用static final修饰符 静态方法代替虚拟方法如果不需要访问某对象的字段,将方法设置为静态,调用会加速15%到20%。这也是一种好的做法,因为你可以从方法声明中看出调用该方法不需要更新此对象的状态。 减少不必要的全局变量尽量避免static成员变量引用资源耗费过多的实例,比如Context因为Context的引用超...
2018-10-16 17:50:11 196
原创 android 内存优化 (图片篇)一
内存简介:RAM(random access memory)随机存取存储器。说白了就是内存。一般Java在内存分配时会涉及到以下区域:寄存器(Registers):速度最快的存储场所,因为寄存器位于处理器内部,我们在程序中无法控制栈(Stack):存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆(Heap):堆内存用来存放由new创建的对象和数组。在堆中分...
2018-10-16 17:19:25 209
原创 android Activity 启动模式 应用场景
栈的原理:先进后出,后进先出。所有操作都发生在栈顶。首先介绍一下任务栈:(1)程序打开时就创建了一个任务栈, 用于存储当前程序的activity,所有的activity属于一个任务栈。 (2)一个任务栈包含了一个activity的集合, 去有序的选择哪一个activity和用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。 (3)任务栈可以移动到后台, 并且保留了每...
2018-10-16 15:56:40 370
转载 android 沉浸状态栏
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51763825本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。其实说到沉浸式状态栏这个名...
2018-10-11 16:01:20 228
转载 java 线程池
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用,本文是基础篇。转载请标注原地址:http://blog.csdn.net/u011974987/article/details/51027795;1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @...
2018-10-11 14:53:53 254
转载 android okgo 网络请求框架
OkGo - OkHttpUtils-2.0.0升级后改名 OkGo,全新完美支持RxJava项目地址:https://github.com/jeasonlzy,欢迎star,欢迎issue该库是封装了okhttp的网络框架,可以与RxJava完美结合,比Retrofit更简单易用。支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可...
2018-10-11 10:25:38 2026 2
原创 android 单例模式
设计模式的分类25种总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。...
2018-10-10 16:58:19 187
转载 Java中的23种设计模式详解
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理...
2018-10-10 16:18:33 425
转载 android apk 加固
一、前言今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理。现阶段。我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服。虽然我们混淆,做到native层,但是这都是治标不治本。反编译的技术在更新,那么保护Apk的技术就不能停止。现在网上有很多Apk加固的第三方平台,最有名的应当属于...
2018-10-10 14:33:13 504
转载 android webRTC 译文
Android WebRTC 介绍 译者说明由于译者水平有限,翻译尽量遵从原意,一些地方有错误敬请指教。发布在这里原文https://tech.appear.in/2015/05/25/Introduction-to-WebRTC-on-Android/翻译WebRTC被称为开源网络发展的又一大里程碑,被看作为近些年对Web标准的最重要的创新。WebRTC允许开...
2018-10-10 10:47:19 347
原创 Can’t create handler inside thread that has not called Looper.prepare()
为什么在子线程中创建handler时会报以下错误Can’t create handler inside thread that has not called Looper.prepare() 因为Android系统默认情况下:非主线程中没有开启Looper,而Handler对象必须绑定Looper对象。第二个子线程中注意要加上 Looper.prepare(); Looper.lo...
2018-10-10 10:41:40 544
转载 android 混淆
五步搞定1打开项目中的proguard-rules.pro,将下面的代码复制进去。我的思路是将混淆分为2个主要部分定制化区域。这里边的内容是我们主要需要补充的部分,大致分为4个小部分,我们接下来的步骤主要是补充这4个部分的东西。 基本不用动区域。顾名思义,基本不用动。这块的内容我已经写好了,除非有特殊的需求,基本不用改动。。。请叫我雷锋。。。。。#----------------...
2018-10-10 10:16:04 144
转载 RecyclerView 简单使用
这个功能就是使用RecyclerView来实现的,在本系列中,我们将最终制作出这样的一个效果出来。一、导入Support-v7包工欲善其事必先利其器,RecyclerView存在于support-v7包中,我们需要在新建的gradle工程中导入support-v7包:compile 'com.android.support:recyclerview-v7:21.0.3'...
2018-09-29 11:10:43 342
原创 Android WebView与JS交互
1. 交互方式总结Android与JS通过WebView互相调用方法,实际上是:Android去调用JS的代码 JS去调用Android的代码二者沟通的桥梁是WebView对于Android调用JS代码的方法有2种:通过WebView的loadUrl() 通过WebView的evaluateJavascript()对于JS调用Android代码的方法有3种:通过We...
2018-09-10 13:52:23 248
原创 android 常用的图片加载框架
主流图片加载框架?1> Picasso2> Glide3> Fresco4> ImageLoader介绍:Picasso:和Square的网络库一起能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现 Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如gif等支持),Glide默认的...
2018-09-07 17:59:48 592
原创 Kotlin NotImplementedError
kotlin.NotImplementedError: An operation is not implemented: not implemented学习Kotlin碰到的第一个Bug,为了方便后人,Kotlin的学习资料还是很少的。实现接口时,默认会生成这句话:TODO("not implemented"),在Android中这个是无所谓的,但是来到kotlin就不一样了,如果你在某...
2018-07-31 19:28:12 688
翻译 android GreenDao 笔记
手上有一个半自动化的项目,大致是安卓平板和带有wifi热点(只有局域网,没有公网)的板子在scoket下,做一些实时数据的采集,然后在批量上传给服务器。这就意味着要将数据库放到平板这端了。我也就顺其自然的用上了Greendao。。这样不是快点么,我是不想再苦哈哈的写sql了,哈哈哈。。。一、简介GreenDAO是一个开源的安卓ORM框架,能够使SQLite数据库的开发再次变得有趣。它减轻开...
2018-07-23 18:09:39 641
转载 Android APP内存优化之图片优化
看到一篇很好的博客,转来看看 网上有很多大拿分享的关于Android性能优化的文章,主要是通过各种工具分析,使用合理的技巧优化APP的体验,提升APP的流畅度,但关于内存优化的文章很少有看到。在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮、背景、动画变换基本上全是图片,在2K...
2018-07-18 17:54:10 453
原创 android 自定义View 构造函数怎么样调用
首先自定义View有三个构造方法:public class CustomView extends View { /** * 第一个构造函数 * @param context */ public CustomView(Context context) { super(context,null); } /** *...
2018-05-30 10:39:36 1235
原创 android 属性动画
首先为什么要3.0引入属性动画呢?明显是因为传统的补间动画,已经远远满足不了咱们的开发需求了。在为大家介绍属性动画之前,先讲一下补间动画的缺陷:因为补间动画的机制就是使用硬编码的方式实现的,其扩展性极低。总分为以下几点:1.补间动画只能作用于View上2.补间动画改变的只是View 的显示效果而已(位移动画后,View的位置并没发生变化,View的单击事件还在原来的位置)3.补间动画只能对View...
2018-05-25 17:17:58 318
原创 android studio 导入 jar so zip
1、jar包放入libs文件夹,右键选择任意一个library“Add as Library”。2、so文件引入,在main文件夹下新建jniLibs文件夹,将so文件放入此文件夹3、zip包等资源文件引入:在main文件夹下新建asset文件夹,将资源文件放入此文件夹...
2018-05-07 12:02:04 1235
转载 android Retrofit 网络请求 参数注解
对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了。下面分为GET、POST、DELETE还有PUT的请求,说明@Path、@Query、@QueryMap、@Body、@Field的用法。初始化RetrofitString BASE_URL = "http://102.10.10.132/api/";Retrofit retrofit = new Retrof...
2018-04-27 16:32:04 515
原创 android final,finally,finalize
final,finally,finalize区别: Final:用于声明属性、方法和类。修饰的是基本类型,就表示这个变量被赋予的值是不可变的,即它是个常量;final修饰的方法不能被子类重写,但不影响子类的继承;final修饰的类不能被继承 。 Finally:只用在try-catch-finally语句中,不论有异常还是没有异常,这段语句最终总被执行。 Finalize:此方法是Object类中...
2018-04-25 15:01:39 796
原创 android 周期执行
timer = new Timer();timer.schedule(new TimerTask(){ public void run(){ Message message=new Message(); message.what= msgKey; timerHandler.sendMessage(message); }},0, 10...
2018-04-19 13:46:58 602
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人