- 浏览: 223861 次
- 性别:
- 来自: 杭州
最新评论
-
啊嘞嘞勒:
游戏结束无法显示
自己制作的 java 版 2048游戏 -
VIP庚:
dufangyu1990 写道VIP庚 写 ...
Android 视频通话(一) -
dufangyu1990:
VIP庚 写道dufangyu1990 写 ...
Android 视频通话(一) -
VIP庚:
dufangyu1990 写道VIP庚 写道dufangyu1 ...
Android 视频通话(一) -
dufangyu1990:
VIP庚 写道dufangyu1990 写道VIP庚 写道du ...
Android 视频通话(一)
文章列表
最近再弄实时视频通话方面,参考了很多资料,自己写了个demo,供大家参考,毕竟网上的资料也不多
先介绍视频的传输,通过H264编码,rtp协议进行传输,后面后github下载地址
一 流程:
1、通过Camera的回调函数,得 ...
一 实现心跳检测
原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务端
一般情况下,客户端与服务端在指定时间内没有任何读写请求,就会认为连接是idle(空闲的)的。此时,客户端需要向服务端发送心跳消息,来维持服务端与客户端的链接。那么怎么判断客户端在指定时间里没有任何读写请求呢?netty中为我们提供一个特别好用的IdleStateHandler来干这个苦差事!
在服务端工作线程中添加:
arg0.pipeline().addLast("ping", new IdleStateHandler(25, 15, 10,TimeUn ...
简单介绍
Robolectric测试框架,能一定程度解决了这种困扰。它的设计思路便是通过实现一套jvm能运行的android代码,从而做到脱离android环境进行测试。Robolectric有一些shadow类,使用它们,可以替换掉android相关类,代替它们在jvm上运行。
方案介绍:
本方案的目的是通过Robolectric运行起来一个三方的SDK,并部署到docker容器中
1、使用 Robolectric 模拟 Android 环境,将 SDK 运行于 Jvm 虚拟机上
2、使用 Netty 暴露服务,通过https接口,调用SDK内部的方法
3、将 SDK aar 解压,把 c ...
Docker安装完成后就是要部署自己所需要的镜像,镜像来源一般在:https://hub.docker.com docker hub上有各种牛人已经部署好环境和服务的镜像,我们直接下载下来就可以使用了,有些镜像可能不满足我们的需要,这时候就可以 ...
Docker系列文章会将我在实际工作开发过程中用到的分享出来,很多基础使用规则可能不会提及,同时也会分享自己已经部署好环境的一些镜像。
个人对Docker的理解是一个大的池子,池子里面有许多容器,每个容器就是一个类似Linux虚拟机,各个容器相互独立互不影响,容器里面一般是Linux操作系统,可以运行各种服务。现阶段我这边docker上有Jenkins服务、Sonarqube服务、Android打包构建服务等。
docker好处显而易见,容器的移植特别特别方便,容器中的环境只要部署一次后,可以将容器打包,然后随意再另外台机器上重新部署,效率特别高。公司的打包服务器经常 ...
一年多没写博客了,2018年工作太忙了,但是也收获到很多,平时会把点点滴滴记在笔记中,久而久之就把博客这东西荒废了,很多朋友私信我,加我QQ,刚开始的时候我还是很热情的回答,但是随着工作的压力和对自己要求的放松,很多问题我都没有回答,也选择了逃避。
2018年, 我想重新拾起博客,将以前记录下来的东西好好整理番,不光是为了分享出来,也是为了对知识的总结吧,从而更好提高自己
那么立个Flag吧,之后每个月会出一遍技术分享,包括但不限于 Gradle、Docker、Python、蓝牙、Sonarqube、自定义Lint、Jenkins、Appium等,这是我去年的收 ...
在项目做到中后期的时候,基本会有多个甚至十几个模块构成。各个模块相对独立,但有些又相互依赖。
现阶段公司的各个模块有单独的仓库管理,通过导入其他模块的aar来实现依赖,这种方式简单快捷,但当一个仓库更新后,其他仓库就需要手动拷入改版本的aar,这样既不利于版本管理,又比较麻烦。
这时我们就需要通过maven来发布各自仓库的版本到Maven仓库中,然后每个仓库就可以通过maveb来引用所需要的依赖。
公司内部会自己搭建私有Maven仓库,就把包发布到私有Maven仓库当中。在当前module的gradle中进行maven发布的配置
uploadArchi ...
最近遇到一个需求,下面记录下实现方法 以及遇到的一些坑
需求如下:当app在后台时 收到push消息用系统的Notification进行通知;当app在前台时 收到push后采用自定义风格弹出通知
效果如下:
第一种情况这里不探究 第二种情况这里采用PopWindow实现
步骤:
一 、实现自定义PopWindow类
public class TuyaPopWindow extends PopupWindow {
private Activity mContext;
private View view;
//private ImageV ...
在Android源码下编译jni所需要知道的事~
- 博客分类:
- 总结
以下只是自己的一些总结,欢迎讨论
通过NDK编译jni网上有很多例子,在这我只总结在Android源码下编译
1、android源码环境下编译so包,编出来的.so的包前面不会自动给添加lib,NDK编译会自动给添加lib,即使Android.mk文件里面LOCAL_MODULE :=名字前面没有lib,NDK也会自动给你添加lib. 所以NDK编译时Android.mk文件编译出来的so包名字可以加lib也可不加,但源码下编译必须加
2、系统应用和用户应用的区别
在package/app下的工程 编译后生成的apk都会在system/app下 将系统 烧录到手机后 这些apk都 ...
最近帮别人汉化了几款app,在这我简单介绍下我所使用的方法和所遇到的坑。
一般汉化都是通过反编译app,然后修改资源文件中的String.xml,将英文改为中文。具体反编译、打包的方法请参照郭神的一篇文章
http://blog.csdn.net/guolin_blog/article/details/49738023/
修改好资源文件后,在用自己的keystore打包一下,这样汉化就成功了。
上面说的汉化只能汉化一部分,这部分是app中通过string.xml定义的,那如果在代码中直接定义的一些资源该如何修改成中文呢?
我们通过apktool得到的文件夹中有sm ...
最近一直在学习android框架,也就没怎么写博客了。前几天看到微信里推送的一篇博客,觉得动画很酷炫,就钻研了一番,这里我只是简单实现下,并说说实现原理和遇到的坑。有兴趣的可以参考:http://blog.csdn.net/zxt0601/article/details/53040506
这里面详细介绍了一番。实现方法 有些差异。
效果图:
这里我通过PathMeasure和Path实现,简单介绍下PathMeasure
PathMeasure是用来操作Path的,初始化
mPathMeasure=new PathMeasure();
//forc ...
将一个图片通过写入外部存储后,打开系统图库找不到该图片,因为系统图库属于多媒体库,我们保存图片后未通知多媒体扫描,所以看不到保存的图片了
4.4以下可以通过发送广播通知多媒体库自动扫描,filePath是图片保存的完整路径
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + filePath)));
4.4 Android把系统广播的权限回收了,只有系统应用才可以发送系统广播 所以4.4以上可以通过 Media ...
Android 6.0 对权限的处理
- 博客分类:
- 总结
最近要将拍的照片写入到手机外部存储中,开始测试时一点问题都没有,当测试6.0时就会出现写入失败,一看log说是没有权限,可我已近加入了 WRITE_EXTERNAL_STORAGE 这个权限呀,到网上一查,原来6.0系统 新增了运行时权限动态检测。
由于最近较忙,我直接将我觉得写得好不错的博客复制过来 供参考
运行时权限介绍
Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上,
又新增了运行时权限动态检测,以下权限都需要在运行时判断:
身体传感器
日历
摄像头
通讯录
地理位置
麦克风
电话
短信
存储空间
运行时权限处理
Android6.0 ...
问题描述:
开发中,遇到退出登录时,需要将界面跳转到登录界面,并将栈中所有Activity清空。
解决办法
Intent intent = new Intent(A.this,B.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
startActivity的时候传递FLAG_ACTIVITY_CLEAR_TASK这个标志,那么这个标志将会清除之前所有已经打开的activity.然后将会变成另外一个空栈的root,然后 ...
在对话框初始的时候,设置
mProgressDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
可以让对话框始终显示在其他应用程序的window之上,也就是说这个dialog始终处于最上层,对用户始终可见,也就是说用户按了home之后dialog还在。
这样做需要加上权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
但是某些手机对底层进行了修改 ...