- 博客(31)
- 收藏
- 关注
原创 AudioRecord api的初步认知
相比AudioTrack作用播音,AudioRecord的作用就是用来录音的。api也简单易懂,使用过程中根据自身需求获取相应录音通道的PCM音频数据。1、用AudioRecord录制(read方法)下来直接保存在文件中的音频是PCM音频,也就是源音频,播放器没办法直接播放,需要转换为某一格式的音频。例如转为wave格式即可(在源文件前加44个字节来描述该音频------采样率、通道数、位宽等)...
2019-07-02 08:43:01
490
1
原创 Android Studio已经依赖了库,但是无法import
将项目导入到另一台电脑后明明已经依赖的库,死活无法import。类似于implementation 'com.android.support:appcompat-v7:26.0.1’这种一大堆。可是这个库在我的代码里就是找不到类,import后面一堆红字,然后网上搜了无数方法,google() jcenter() mavenCentral()这三个也都在项目根目录的build.gradle...
2019-01-23 22:14:46
4015
1
原创 LeakCanary还能这样????(自定义保存泄漏信息)
对于Android开发来说,用leakcanary来检测内存泄漏很是方便与快捷的。但是由于本人工作原因,LeakCanary用起来着实无法满足需求,因为我是开发机顶盒和车机的Android系统app,这个时候系统不发弹出Notifaciton,就无法看到内存泄漏的具体信息。有人会说看源码,在show提示Notification的之前,会保存当时分析的内存快照以及结果问题,如下:leakcana...
2019-01-22 10:43:07
618
1
原创 AIDL连接池的实现
参考《Android开发艺术探索》学习一下AIDL的连接池实现回顾一下AIDL使用的大致流程:首先创建一个Service和一个AIDL接口,接着创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法,在Service的onBind方法中返回这个类的对象,然后客户端就可以绑定服务端Service,建立连接后就可以访问远程服务端的方法了。现在考虑一种情况:公司的项目越来越庞大了,现在...
2018-11-21 14:19:25
428
原创 Android studio中多版本AndroidManifest文件编译打包解决
前言:在使用Android studio开发过程中,不免会遇到多版本多渠道编译apk,或者组件化,插件化开发apk。在开发过程中,自我开发调试和发布不同版本apk时,需要频繁的去修改AndroidManifest中的配置信息,这样不仅繁琐,还增加了工作量以及错误率。所以我们可以尝试将AndroidManifest也进行多版本区分。配置过程如下:首先在/src/main下建两个文件夹(不一定...
2018-11-19 20:31:53
4613
原创 MD5编码
进行MD5编码,编码后的字符串肯定是唯一的,并且只会包含0-F这样的字符,符合文件的命名规则。那么我们就写一个方法用来将字符串进行MD5编码,代码如下所示:public String hashKeyForDisk(String key) { String cacheKey; try&nbs...
2018-11-19 20:31:26
1422
原创 SparseArray和HashMap 了解一下
引言Android开发者对于HashMap肯定是不陌生的吧,开发过程中经常会用到。键值对应的数据储存结构。但是对于SparseArray,可能一些童鞋就没那么熟悉了。在此之前,了解一下基础知识。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空...
2018-11-19 20:31:03
760
原创 设计模式之装饰者模式
前言:相信Java开发者在使用java i/o API的时候,对于以下代码写法应该非常熟悉:InputStream inputStream = new FileInputStream(file);BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);在不知道具体设计实现之前,是否有人像...
2018-11-19 20:30:20
154
原创 设计模式之观察者模式
介绍观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。观察者设计模式定义了...
2018-11-19 20:30:00
137
原创 设计模式之策略模式
对于设计模式,以前虽然看过一些文章,但是总感觉差那么一点,没有系统的去学习深入一下,以致于在脑海中的思路总不是那么清晰,在项目中对于设计模式的带入感很是不强。所以在下准备静下心来好好整理一下。第一篇便是策略模式。在百度百科上的介绍:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的优点有:策略模式提供...
2018-11-19 20:29:30
109
原创 设计模式的六大原则
1、单一职责原则(Single Responsibility Principle)定义 : 应该有且只有一个原因引起类的变化注意 : 这里的类不光指类,也适用于方法和接口,比如我们常说的一个方法实现一个功能2、里氏代换原则(Liskov Substitution Principle)定义 : 只要父类出现的地方子类就一定可以出现,而且替换为子类也不会出现任何异常或错误,使用者不需要知道是父...
2018-11-19 20:29:00
125
原创 网络基础
1、手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。TCP/IP协议主要负责数据的传输,HTTP协议负责数据的封装2、WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。3、Socket跟TCP/IP协议...
2018-11-19 20:28:09
120
原创 比较浅显易懂的AIDL
Binder是Android中的一种跨进程通信方式,Android的四大组件、各种Manager 和其对应ManagerService等无不与Binder挂钩。从Android Framework角度来说,Binder是ServiceManager连接ActivityManager、WindowManager等Manager和他们相应ManagerService的桥梁; 从Android 应用层来...
2018-11-19 20:24:28
235
原创 常见的几种排序方法实现
常见的几种排序方法:冒泡排序、选择排序、插入排序、选择排序1、冒泡排序:每次比较相邻的像个数,值小的往前冒泡,时间复杂度O(n2)2、选择排序:每次选择最小的一个数放在前面,时间复杂度O(n2)3、插入排序:每个数插入前面的有序数列中,时间复杂度O(n2)4、选择排序:利用递归方法,不断将小于某个数的数字放左边,大于这个数的放右边O(N*logN)代码如下:public class t...
2018-11-19 19:11:43
454
原创 利用SurfaceView实现帧动画效果,更流畅,更节约内存
利用SurfaceView实现帧动画效果在开发Android做动画效果的时候,有时候UI给开发一组动画实现的帧图片,如果说图片较少(十几张)、分辨率较低(几K,十几K),用帧动画实现应该没什么问题,但是如果有几十上百张、或者几百K或者上M的图片,这个时候用帧动画来实现其实就很有问题了,内存吃紧,会卡顿,OOM等问题随之而来。当然如果可以沟通UI改设计是最好的,但是如果非得这样做不可呢?本人就遇...
2018-11-05 23:11:17
1789
1
原创 Android 收集Crash日志----UncaughtExceptionHandler
Android应用不可避免地会发生crash,也称之为崩溃,无论你的程序写得多么完美,总是无法完全避免crash的发生,可能是由于Android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉正在执行的程序,现象就是闪退或者提示用户程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的。更糟糕的是,当用户发生了crash,开发者却...
2018-10-12 16:39:22
306
原创 自适应控件宽高大小加载bitmap图片的友好方式
自动计算BitmapFactory.Options 的inSampleSize 参数。代码如下: int reqWidth,int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFa...
2018-10-09 14:19:54
949
原创 针对多个帧动画相互切换且帧数较多情况的另一种实现方式,优化方案,流畅不卡顿
最近有一个项目,有很多组帧动画,每一组大概60帧左右,再不同的状态下回调不同的接口,动态的切换到不同的帧动画,但是不管每一帧只有10K左右,使用软引用,提前加载帧动画,这些操作都试过了,但是再切换动画的时候还是有不时的有卡顿。由于图片过多,效果异常卡顿,所以在这篇文章中就说一下帧动画的优化问题。 首先还是先来看一下android原生的帧动画的实现,代码如下:(1)帧动画的资源文件 放入...
2018-10-09 10:07:38
975
原创 Android MVP模式直接用版本
引言 如果对于mvp和mvc不太熟悉的童鞋,请花一点时间阅读下面文字内容,纯手工打些本人一点粗糙的见解。或者问问度娘多多学习。熟悉者可直接跳过看干货,撸代码阶段。 在说mvp之前,相信大家应该都熟悉了mvc(model 、 view 、 control)。在Android的架构中Activity,fragment,布局的xml相当于View。然而在实际的开发过程中,Andr...
2018-05-22 15:29:15
600
原创 Kotlin--TODO("not implemented")异常
在kotlin实现接口的时候小白可能会遇到以下异常: 抛出异常:kotlin.NotImplementedError: An operation is not implemented: not implemented 在实现接口的时候IDE会自动为我们添加上: TODO("not implemented") //To change body of created funct...
2018-04-25 16:20:21
2258
1
原创 java-日期时间前后对比
public class DateTest { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); try { String ...
2018-04-10 14:09:18
2441
转载 最全Tortoise SVN Clean up失败的解决方法合集
转载:http://blog.youkuaiyun.com/coffeecato https://blog.youkuaiyun.com/u010832643/article/details/55104311
2018-04-06 12:25:39
536
原创 一个简单无脑的防止内存重启后导致Fragment重叠的解决办法
一个简单无脑的防止内存重启后导致Fragment重叠的解决办法谈起Fragment,对于开发Android的各位童鞋来说应该是家常便饭了吧。但是不得不说,Fragment的使用要比Activity的使用要复杂一些,使用Fragment摆在我们面前的坑也是很隐蔽,说不定啥时候就一脚踩了上去,还一脸懵逼。哈哈哈哈废话不多说了。进入正题,相比用replace,hide和show相信大家用得更多吧,那么大
2017-08-20 16:27:54
1235
原创 ViewPager以及导航小圆点实现无限循环
ViewPager以及导航小圆点实现无限循环 之前用View Pager做了一个图片切换的推荐栏(就类似与淘宝、头条客户端顶端的推荐信息栏),利用View Pager很快就能实现,但是一次无意间使用淘宝APP的时候,突然发现它的效果和我做的还不一样,淘宝APP的推荐栏可以左右无限循环切换,而ViewPager自身其实并没有支持这个功能。其实实现这个无限循环不难,只需要在数据源的首尾各添加一张多余的
2017-08-20 15:49:23
303
原创 spring+springmvc+myabtis+bootstrap 填补天坑(4)-mybatis注入失败
spring+springmvc+myabtis+bootstrap 填补天坑(4)-mybatis注入失败 新人上路,这里我用的idea maven写的项目,在加入mybatis的数据库操作时,遇到一个问题, 在Service里面注入dao的对象的时候,提示注入失败,找不到bean的对象问题。 @Resource private accountDao accountDa
2017-07-13 15:57:38
483
原创 spring+springmvc+myabtis+bootstrap 填补天坑(3)-EL失效
spring+springmvc+myabtis+bootstrap 填补天坑(3)-EL失效在Spring Controller 与jsp传值得时候遇到的问题,用<%=request.getParameter("account")%>是可以获得controller传来的account值得,而用EL表达式${account},界面显示总是为空,咋回事呢?其实问题很简单,只是jsp中默认是禁止用EL
2017-07-10 14:12:30
299
原创 spring+springmvc+myabtis+bootstrap 填补天坑(2)-注入问题
spring+springmvc+myabtis+bootstrap 填补天坑(2)-注入问题接上一篇静态加载问题之后,又一个天坑,虽说是天坑,其实就是一些初学者在开发时会遇到的一些小问题,有时代码看无数遍都觉得没错,但是就是运行结果不是预期的,这就很蛋疼了。下面是Spring的配置文件和一个controller的.java文件。UserController.java位于com
2017-07-07 14:09:19
349
原创 spring+springmvc+myabtis+bootstrap 填补天坑(1)-静态资源加载问题
最近想做一个管理系统,想着用ssm+bootstrap来写,用idea 15工具在撸代码,之前一直也怎么用过idea,这次就想着多熟悉熟悉,毕竟听说idea还是很牛逼的哈!多的就不说了,从新建项目到现在的一个坑问题。静态资源加载问题。如下:一个简单的jsp文件,将道理,预期的结果界面应该是如下图。坑爹的是,加入了Spring的拦截器,配置了Spring相关东西之后,界面打开
2017-07-07 13:44:28
1031
原创 Maven创建web项目学习,web和Java版本的修改
在最新的eclipse里面已经有maven插件,可以直接使用创建maven项目,如果没有请安装相关的maven插件
2017-03-13 18:36:56
854
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人