Android项目功能
文章平均质量分 66
闲暇部落
这个作者很懒,什么都没留下…
展开
-
视频编码之I帧、P帧、B帧
1、视频传输原理 视频是利⽤⼈眼视觉暂留的原理,通过播放⼀系列的图⽚,使⼈眼产⽣运动的感觉。单纯传输视频画⾯,视频量⾮常⼤,对现有的⽹络和存储来说是不可接受的。为了能够使视频便于传输和存储,⼈们发现视频有⼤量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就⼤⼤减少了视频数据的⽂件,因此有了H.264视频压缩标准。 在H.264压缩标准中I帧、P帧、B帧⽤于表⽰传输的视频画⾯。 2、I帧、P帧、B帧介绍 I帧⼜称帧内编码帧,是⼀种⾃带全部信息的...原创 2022-05-11 17:40:08 · 1772 阅读 · 0 评论 -
http和https的区别
“HTTP属于超文本传输协议,用来在Internet上传送超文本,而HTTPS为安全超文本传输协议,在HTTPS基础上拥有更强的安全性,简单来说HTTPS是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。”原创 2020-06-28 09:07:00 · 193 阅读 · 0 评论 -
给所有Module统一创建分支
1、repo forall -c "git branch G26X" 给所有的项目创建G26X分支2、repo start master --all 所有子项目全部切换到master分支原创 2019-11-06 16:58:59 · 328 阅读 · 0 评论 -
onActivityResult()和onResume()的调用顺序问题
onActivityResult() -> onStart() -> onResume()原创 2017-12-01 12:20:47 · 598 阅读 · 0 评论 -
Android 异步回调中操作UI线程,UI同步、卡死阻塞等性能问题
回调方法中修改UI,引起的阻塞问题。需要在回调方法中,使用主线程Handler去提交修改UI的操作,如下代码所示:@Overridepublic void onConnect(UsbDevice device) {//onConnect为回调方法 mMainUIHandler.post(new Runnable() {//mMainUIHandler为主线程中创建的原创 2017-12-21 18:39:40 · 1886 阅读 · 0 评论 -
android anr trace.txt文件 抓取
【Android】抓取log(anr)1、anr问题的log一般都在/data/anr/目录下,使用如下命令即可导出logadb pull /data/anr/traces.txt d:/ =》意思是将手机上的traces.txt导出到电脑的d目录下但是也会有该命令失效的时候。你能adb shell ls /data/anr/ 看到该文件,但是导出时会提示转载 2017-12-22 14:25:58 · 2349 阅读 · 0 评论 -
android.permission.MOUNT_UNMOUNT_FILESYSTEMS权限
允许装载和卸载文件系统权限:android.permission.MOUNT_UNMOUNT_FILESYSTEMS原创 2017-12-07 17:18:06 · 34590 阅读 · 0 评论 -
几个.C文件想同时调用定义在.H文件里面的全局变量,防止重定义变量问题。
首先,在.H文件里面加extern关键词声明全局变量,然后,在.C文件中定义全局变量,变量定义不要放在头文件里。在C文件里定义,在头文件里extern例如:module1.hextern int iCounts;//声明变量module1.cint iCounts;//定义变量moudule2.c//其他C文件,包含.H文件后(#includ原创 2018-01-05 17:54:12 · 9382 阅读 · 8 评论 -
100Mbps 和 100Mb/s 单位Mbps和Mb/s有什么不同
平时我们看到的,或者你下载的时候使用的都是B/s这个单位,比如说你下载速度为80KB/s,它的意思是每秒钟传输80K字节(B为Byte),bps为数据流传输速率,计算式为bit/s,也可以叫比特率(波特率),故名思义其单位是bit(二进制位),因为 1Byte=8bit,所以80KB/s = 640Kbps,这样就很容易知道电信给你的100Mbps到底下载极限有多快12.5MB/s =原创 2018-02-01 10:40:02 · 23274 阅读 · 0 评论 -
Android心跳包(一)——心跳机制
转自:http://blog.csdn.net/rabbit_in_android/article/details/50119809在写之前,我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接都需要心跳机制,客户端发送一个心跳给服务器,服务器给客户端一个心跳应答,这样就形成客户端服务器的一次完整的握手,这个握手是让双方都知道他们之间的连转载 2017-11-21 16:40:25 · 17767 阅读 · 1 评论 -
Android心跳包(一)——心跳实现
长连接测试服务器: Socket基本上都这么一个流程。public class Test { private static final int PORT = 1234; private static final int BUFFER_SIZE = 1024; public static void main(String[] args) {原创 2017-11-21 16:35:47 · 6964 阅读 · 0 评论 -
Android心跳包(一)——心跳包定义
1、定义 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。2、作用网络中的接收和发送数据都是使用SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心原创 2017-11-21 16:32:57 · 2139 阅读 · 0 评论 -
计算机中容量单位bit(位)、B(字节)、KB、MB、GB和TB的关系
1B=8bit:一个字节占8位1KB=1024B1MB=1024KB1GB=1024MB1TB=1024GB原创 2017-11-21 14:52:48 · 15175 阅读 · 0 评论 -
Android自带计时器类CountDownTimer
final TextView tv = (TextView) findViewById(R.id.tv);CountDownTimer timer = new CountDownTimer(10000, 1000) {// 第一个参数是总共时间,第二个参数是间隔触发时间 @Override public void onTick(long millisUntilFinished)原创 2017-11-15 16:42:57 · 412 阅读 · 0 评论 -
Thread.join()详解
一、使用方式。join是Thread类的一个方法,启动线程后直接调用,例如:[java] view plain copyThread t = new AThread(); t.start(); t.join(); 二、为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主原创 2017-11-20 12:16:43 · 1091 阅读 · 0 评论 -
px、dip、sp区别和使用方法
一、 概述我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼。在Android中支持的描述大小区域的类型有以下几种。px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA原创 2017-10-26 17:39:45 · 308 阅读 · 0 评论 -
Android线程优先级
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); //设置线程优先级为后台,这样当多个线程并发后很多无关紧要的线程分配的CPU时间将会减少,有利于主线程的处理,有以下几种:int THREAD_PRIORITY_AUDIO //标准音乐播放使用的线程优先级int THREAD_PRIORITY_BACKGR原创 2017-10-26 16:39:24 · 450 阅读 · 0 评论 -
Activity和fragment之间传递数据(二)
为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面。Fragment与Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多。很多时候,我们通过使用一个Activity,切换多个Fragment。本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式。1.Fragment中通过get原创 2017-10-17 09:52:01 · 211 阅读 · 0 评论 -
Android将Log写入文件
转自:http://blog.csdn.net/u011326979/article/details/50887541为什么要将Log写入文件运行应用程序的时候,大多数是不会连接着IDE的; 而当应用程序崩溃时,我们需要收集复现步骤,在设备上复现,并进行Debug;而由于Android手机的多样性,有些问题是某个机型特有的, 这样很难去复现; 所以我们想能不能把重要转载 2018-01-25 09:51:50 · 3929 阅读 · 1 评论 -
保存信息到CSV文件
CSV 文件是Excel 的标准文件格式,在开发过程中经常需要格式化输出数据。CSV 的格式非常简单,都是一行一行存储的,同一行不同列之间用逗号隔开。下面的代码即为输出CSV 格式文件。public class SaveToCsv { public static final String mComma = ","; private static StringBuilder原创 2018-01-25 11:11:12 · 1625 阅读 · 0 评论 -
Android平台下OpenGL图形编程
实现在Android平台下运用OpenGl。 1、GLSurfaceView GLSurfaceView是Android应用程序中实现OpenGl画图的重要组成部分。GLSurfaceView中封装了一个Surface。而android平台下关于图像的现实,差不多都是由Surface来实现的。2、Renderer 有了GLSurfaceView之后,就相当于我们有了画图的纸...原创 2018-07-25 17:34:50 · 690 阅读 · 0 评论 -
Android中View,SurfaceView的绘图和GLSurfaceView绘图的区别
Android游戏当中主要的除了控制类外就是显示类View。SurfaceView是从View基类中派生出来的显示类。android游戏开发中常用的三种视图是: view、SurfaceView和GLSurfaceView的区别如下: View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。 SurfaceView:基于view...转载 2018-07-25 16:46:15 · 965 阅读 · 0 评论 -
加密与加盐
转自:https://blog.csdn.net/qq_21439971/article/details/53766855加密我们在用户模块,对于用户密码的保护,通常都会进行加密。从最简单来说,小明盗取了你的数据库信息(小明躺枪),但由于你对你数据库中的用户信息的密码是加密的(我们假设加密之后的密文是无法破解的),那小明即使得到信息也没法进行登录。这是最最基本的一点防范措施。我们通常的...转载 2018-07-17 11:52:28 · 2546 阅读 · 0 评论 -
Android开发中十六进制及十进制的相互转化详情
十进制转化为十六进制但是怎么把十进制转化为十六进制呢?后来发现,其实Android内部已经给我们提供了转化函数,如下:?1String h = Integer.toHexString(255); //此处h为"ff"上述代码就是将一个十进制 转化为十六进制,参数是十进制数,返回一个十六进制字符串,通过这个函数把每一个颜色值都转化为十六进制字符串,然后再将这几个字符串依次相加就是用户选择的颜色...原创 2018-05-23 16:08:20 · 17135 阅读 · 0 评论 -
android 读取assets下excel 文件
在面对选择国家地区,选择手机号码区号等信息的时候,常常我们是读取已存好的数据,我现在读取的就是excel里面的数据,所以在此记录下读取的方法以及注意点。 下面就是读取国际地区手机区号的数据效果图:excel表格里面数据1.准备工作1.1 excel 表格 我在assets 下放的的excel 表1.2 读取excel 需要的jar 包下载地址:jxl 读取excel 需要的jar 包注意点: as...转载 2018-05-23 15:14:11 · 2156 阅读 · 0 评论 -
Android Studio 如何打JAR包——命令./gradlew makeJar
转自:https://blog.csdn.net/ta893115871/article/details/46955791/Android Studio 如何打JAR包在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用。 在AS中可以通过修改gradle才处理。 我们新建一个项目MakeJar,在项目中新建一个modle-类型为android-library 如图:app为我们...转载 2018-04-09 16:24:55 · 9545 阅读 · 0 评论 -
Android EGL接口介绍
EGL 介绍EGL 数据类型EGL DisplaysInitialization 初始化EGL Configurations选择一个 EGL Configuration初始化EGL 的具体步骤1获取Display2初始化egl3选择Config4构造Surface5创建Context6绘制EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。本章主要讲述 OpenGL ES...原创 2018-03-21 18:02:29 · 1467 阅读 · 0 评论 -
Handler延迟消息处理
MessageQueue,以队列的形式管理message,message先进先出,但其内部是采用单链表来存储消息列表。post(Runnable r)、postDelayed(Runnabler, long delayMillis)、sendMessage(Message msg)、sendMessageDelayed(Message msg, long delayMillis)最终调用的都是se...转载 2018-03-14 10:40:31 · 1374 阅读 · 0 评论 -
Android 视频播放器 VideoView 的使用,播放本地视频 和 网络视频
转自:https://www.cnblogs.com/zhaoyanjun/p/5412984.html1、布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http...转载 2018-03-19 16:17:54 · 25445 阅读 · 0 评论 -
将项目res文件夹下的图片资源转化成bitmap
Resources res = context.getResources();Bitmap bmp= BitmapFactory.decodeResource(res, R.mipmap.flower);原创 2018-03-23 09:44:44 · 2769 阅读 · 0 评论 -
如何在Android Studio添加本地aar包引用
第一步:将aar文件拷贝到libs目录下第二步:修改build.gradle 配置文件: 添加repositories { flatDir { dirs 'libs' }}这个是添加一个本地仓库,并把libs目录作为仓库的地址。第三步:修改dependencies:添加一行:compile(name:'usericonchooserutil', ext:'aar')其中n...原创 2018-01-29 15:58:58 · 26255 阅读 · 2 评论 -
LAN、WAN、WLAN的区别
1、LANLAN,全称Local Area Network,中文名叫做局域网。顾名思义,LAN是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。具体到路由器,我们一般组网,都是组建的LAN网络,...原创 2018-03-08 11:29:54 · 23737 阅读 · 0 评论 -
导出签名apk文件、导出jar包操作
一、导出签名apk文件 步骤: 1、 Android Studio右侧选择Gradle,如下图: 2、通过assembleRelease生成apk文件 在app的build->outputs->apk目录下的apk文件,就是所需apk文件。 3、至此,步骤说明完毕。二、导出jar包 步骤: 1、通过exJar生成jar包 ...原创 2018-02-07 18:18:52 · 944 阅读 · 0 评论 -
Android应用层使用共享内存机制进行进程间交换数据
Android应用层使用共享内存机制进行进程间交换数据Android提供了一个高效的共享内存机制。如果应用中涉及到在多个进程间交换数据时使用Android提高的共享内存机制将会大大的提高效率。但是也许是出于安全考虑,在应用层使用共享内存机制将会遇到很多障碍,这篇文章旨在解决这些障碍使用共享内存的流程大概是:在一个进程中创建一个共享内存。在Android应用层中,用Memor原创 2018-01-09 18:42:30 · 914 阅读 · 0 评论 -
Android 解决横竖屏切换时,界面重新加载的问题
项目开发过程中,由竖屏切换到横屏,再有横屏切换到竖屏,界面被重新加载。为了防止界面被加载,方法如下:在manifest中设置该Activity的configChanges为android:configChanges="screenSize|keyboardHidden|orientation",这样当横竖屏切换时,Activity的状态也没有改变。原创 2018-01-09 18:39:16 · 7109 阅读 · 0 评论 -
Activity和fragment之间传递数据(一)
在Activity中定义一个字段、然后添加set和get方法、代码如下、mTitle就是要传递的参数、如果是传递对象、可以把mTitle换成一个对象即可public class DemoActivity { private String mTitle; public String getmTitle() { return mTitle; } public void setm原创 2017-10-17 09:47:48 · 193 阅读 · 0 评论 -
Android4.0的ActionBar左上角的返回键怎么监听
在这里,它的id是android.R.id.home。 @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub if(item.getItemId() == android.R.id.home)原创 2017-10-17 09:45:03 · 4289 阅读 · 0 评论 -
android 性能优化 -- 启动过程 冷启动 热启动
一、应用的启动方式通常来说,启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已原创 2017-08-30 19:37:54 · 569 阅读 · 0 评论 -
系统自动销毁Fragment前保存必要的数据
//保存数据@Overridepublic void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState); outState.putLong("start",mRecordStartTime);}//恢复数据@Overridepublic void onViewStateRe原创 2017-08-30 15:32:27 · 770 阅读 · 0 评论 -
Android内存与性能
GC 的工作机制当 GC 工作时,虚拟机停止其他工作。频繁地触发 GC 进行内存回收,会导致系统性能严重下降。内存抖动在极短的时间内,分配大量的内存,然后又释放它,这种现象就会造成内存抖动。典型地,在 View 控件的 onDraw 方法里分配大量内存,又释放大量内存,这种做法极易引起内存抖动,从而导致性能下降。因为 onDraw 里的大量内存分配和释放会给系统堆空间造成压力,触发原创 2017-09-15 18:29:54 · 221 阅读 · 0 评论