android
xuhui_7810
这个作者很懒,什么都没留下…
展开
-
virtual camera
敲下标题的这一刻,内心还是有点儿小激动的。毕竟虚拟摄像头,也做了几个星期了,硬生生的在android原生系统不支持的情况下,绕过重重限制,完美的实现了这一功能。接下来几天,终于可以睡个好觉了。 好了,闲话少说,我们先来分析下虚拟摄像头。一说到虚拟摄像头,大家印象里,肯定首先想到的是这么一个情景:某个猥琐男在网上正兴致勃勃的撩妹,看着视频里美女漂亮的容颜,不仅春心大动,口水流了一地。而实际上,在网络的另一端,和这猥琐男聊天视频的,根本就不是视频里的美女,而是一位一边抠着脚一边...原创 2020-07-27 09:55:03 · 5436 阅读 · 4 评论 -
H264马赛克、延时的优化
最近将前几年做无人机图传时代码翻出来看了看,发现当时虽然做的比较肤浅,不过对于h264视频流的优化方面,还是有一定借鉴意义的。 当时的应用场景是这样的,无人机上当做服务端,用rtsp往外广播无人机摄像头采集到的视频流。再用一台或多台手机当成客户端,用rtsp协议来接收视频流并播放。我们这里不讨论rtsp协议,只说下h264的优化方案。 因为无人机...原创 2020-04-23 20:45:25 · 3251 阅读 · 1 评论 -
android mpeg2ts 流媒体打包MediaMuxer 和 录制MPEG2TSWriter 以及抽帧MPEG2TSExtractor
目前android上,录相大多是mp4的视频,这在一般情况下,已经够用了。但是在一些特定的场景,比如远程临控录相或者行车记录仪上,用mp4录相,就不太理想了。为什么呢?因为远程录相,或者行车记录仪上都有一个共同的问题,那就是录相有可能中断。比如突然撞车了,或者是远程监控断电了,如果这时录的是Mp4的视频,那么就会导致,没有来得及写和mp4的文件头信息,而打不开视频。所以在远程监控录相...原创 2020-04-01 17:32:06 · 3043 阅读 · 4 评论 -
ImageReader丢帧卡顿的优化
我们知道,在android camera里,可以给一个request添加多个target.比如以google的camera2Basic为例:private void createCameraPreviewSession() { try { SurfaceTexture texture = mTextureView.getSurfaceT...原创 2020-02-20 17:23:00 · 8709 阅读 · 8 评论 -
YUV420之YV12格式以及yuv422格式的显示
这段时间,在做一个动态配置录相预览帧上的字符样式以及颜色等等的功能。因为要移植到几个不同的项目上,刚好这几个项目的camera原始预览数据格式,一个为yv12,一个yuv422,所以将这两种格式都做了送显的处理。先上一段传统的代码,也就是网上流行的给camera帧打上时间戳的代码:DisplayClient::addPreviewTimestamps(sp<Strea...原创 2019-11-08 12:00:35 · 1472 阅读 · 0 评论 -
java上argb转yuv422数据
public byte[] rgb2YCbCr422(int[] pixels, int width, int height) { int len = width * height; int index = 0; //yuv格式数组大小,y亮度占len长度,u,v各占len/4长度。 byte[] yuv = new byte[le...原创 2019-10-24 09:48:22 · 826 阅读 · 0 评论 -
Android aidl Binder框架浅析
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38461079 ,本文出自【张鸿洋的博客】1、概述Binder能干什么?Binder可以提供系统中任何程序都可以访问的全局服务。这个功能当然是任何系统都应该提供的,下面我们简单看一下Android的Binder的框架Android Binder框架分为服务器转载 2018-01-08 15:38:52 · 256 阅读 · 0 评论 -
Android例子—直接通过Binder的onTransact完成跨进程通信
Android可以通过Binder的onTrensact方法来完成通信,下面就来简单试下下,还是前面那个根据 序号查询名字的例子:服务端实现:/** * Created by Jay on 2015/8/18 0018. */public class IPCService extends Service { private static final String DES转载 2018-01-08 15:46:18 · 966 阅读 · 2 评论 -
Android Binder机制(超级详尽)
1.binder通信概述 binder通信是一种client-server的通信结构, 1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用; 2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的; 3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Pa转载 2018-01-08 16:35:14 · 383 阅读 · 0 评论 -
手机蓝牙相关
先说说蓝牙的Profiles MTK_BT_PROFILE_OPP :Object Push Profile 普遍用于文件、名片的传输,从文件管理器中通过蓝牙分享即使用该协议 MTK_BT_PROFILE_SIMAP :SIM Access Profile 车载蓝牙会通过该协议使用手机上的SIM服务,如通话等,仅将手机作为SIM卡槽,使用车载蓝牙的自带的无...转载 2019-02-15 10:30:55 · 867 阅读 · 0 评论 -
关于android9.0上开启了加密后,开机动画会播放两次的问题
android9.0上,开启了默认加密后,手机在开机的过程中,会发现开机动画在播放一会儿,突然黑屏或闪屏一下,然后重新播放,看起来像是手机ap端突然重启了一样的。针对这个问题,仔细分析后发现,这个不是手机ap端重启了,而是加密导致的framework重启。具体原因如下: 加密又分全盘加密(Android 4.4 引入)和文件级加密(Android 7.0 引入),...原创 2019-02-25 10:05:06 · 2577 阅读 · 3 评论 -
高通平台上新增一个分区
客户有个需求,需要增加一个100m大小的分区,用来存放客户预置的资料,并且不能被恢复出厂设置删除。针对这个需求,客户的资料肯定不能放在原有的分区里面,新增的分区,也不能挂载到原有的分区目录下,否则恢复出厂设置时,一定会被清空。这么看来,就只能在系统根目录下,新建个文件夹,并将客户分区,挂载到这个根目录上才行。因为我们用的是android9.0,在这套代码上,会有很多的权限限制,如果...原创 2019-04-12 10:22:45 · 4881 阅读 · 6 评论 -
视音频录制流程
音视频录制状态机:start→ Initial -→Initialized → DataSource Configured → Prepared-→Recording录制过程从上到下涉及很多模块:1),app层,描述各种录制参数;2)framework层,主要指java层framework,如MeidaRecorder,在收到app层的录制需求后,协调camera,micphone等模...转载 2019-04-24 16:45:51 · 779 阅读 · 0 评论 -
android 边录制视频边写软字幕
目前,对于边录制视频,边要显示时间戳的需求,都是通过用对应字符的bitmap图片的yuv数据,来替换每一帧yuv数据的像素点来实现的。这样做的坏处显而易见,这个时间戳数据,是硬生生的印在每一帧数据上的,无法剥离。不能在播放的时候,由用户来控制显不显示。不能动态的配置时间戳字体颜色、大小等样式。 要想解决这个问题,可以用给视频配置对应的字幕来实现。当然,如果一边录一...原创 2019-05-16 14:46:01 · 1530 阅读 · 1 评论 -
android录制avi视频
大家都知道,在android上,现在录制支持的主流视频是mp4,mpeg2,也就是流媒体,也写了个大概,但是支持的不完全,原生的用来录流媒体会有种种问题。 当然,在大多数情况下,mp4视频是够用了的,一般人录制也就只需要mp4格式就够了,用户并不关心你录的什么格式的,只要能播放就ok。但是在某些特定的行业,或者特定的需求下,mp4就不够用了。 比...原创 2019-07-13 01:03:40 · 1768 阅读 · 1 评论 -
android录制avi视频时aac音频的正确配置方法
在android上面,用avilib.c开源库录制过avi视频加aac音频的同学们,应该都有一段为了aac音频无法正确录制和播放而抓狂的经历。我本人也经历了这样的折磨,现在将踩过的坑记录下来,让后来者少走些弯路。 先从camera app上讲起,在app应用里,要录制一个avi(我这里讲的是利用在系统新增的avi接口,具体参考我前几篇博客。当然纯粹在app上也可以...原创 2019-07-19 18:17:14 · 1631 阅读 · 1 评论 -
相互依赖的so库,在编译时如何解耦
有时候,我们写的程序,会涉及到相互引用的问题。比如frameworks\av\media\libstagefright下的这个libstagefright,被frameworks\av\media\libstagefright\codecs\avienc我们这个新增的avienc引用到了,而反过来,libstagefright在录制avi视频时,又用到了我们的avienc.so这个...原创 2019-08-15 10:14:06 · 3617 阅读 · 0 评论 -
android mediaserver占用cpu资源过高的优化方案
如果app打开相机进行预览,但是不通过setPreviewCallbackWithBuffer函数来获取预览的数据的话,mediaserver占用的cpu资源会非常的低, 在10%左右。而如果想通过setPreviewCallbackWithBuffer等回调获取数据的话,占用的cpu资源就会相当的高了,增幅可达15%左右。 如果想要优化这个cpu的占用率的话,最...原创 2019-10-09 18:58:28 · 2727 阅读 · 1 评论 -
Android TextView无焦点滚动显示
第一种:Animation ani = new TranslateAnimation(310f, -400f, 0.0f, 0.0f);ani.setDuration(10000);ani.setRepeatCount(500);ani.setRepeatMode(1);TextView textView =(TextView) this.findViewById(R.id.text)转载 2013-07-26 16:34:19 · 1947 阅读 · 0 评论 -
android 应用导入第三方jar、so文件
当我们在自己的应用里,想引入第三方的jar文件时,需要如下修改Android.mk文件:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := pinyin4j:pinyin4j-2.5.0.jarinclude $(BUILD_MULTI_PREBUILT)原创 2013-08-01 11:48:12 · 2521 阅读 · 0 评论 -
android4.2以后,应用不能写和挂载SD卡的问题
android4.2以后,应用不能写和挂载SD卡的问题,可以在frameworks\base\data\etc\Platform.xml里的: 加一行: ,打开读写SD卡的权限,即改成下面这样: 就可以读写SD卡了原创 2014-10-20 17:31:42 · 702 阅读 · 0 评论 -
android手机存储全面解析汇总
本人从事手机编程多年,但一直对手机存储这一方面,不是全面理解,总是一知半解的。这次工作闲瑕之余,总于下了决心,把它整明白。于是搜集各方面资料,总于理清了一个头绪,有了个全面的了解,现列出来和大家分享,其中大部内容是从网上摘抄,再溶入自己的理解。如有不对的地方,欢迎指正。先从最基本的概念开始存储器分为RAM和ROM。(1)RAM是随机访问存储器,这个随机访问的含义是指可以像翻书一样哪原创 2013-08-17 11:38:04 · 2550 阅读 · 0 评论 -
android 预防apk 反编译
常用的保护技术 由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。 1.隔离Java程序 最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的J转载 2013-08-16 16:39:00 · 907 阅读 · 1 评论 -
Android如何防止apk程序被反编译
从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-win转载 2013-08-12 17:46:12 · 820 阅读 · 0 评论 -
Android 判断SD卡是否存在及容量查询
Android 判断SD卡是否存在及容量查询的简单方法如下: 首先要在AndroidManifest.xml中增加SD卡访问权限 在SDCard中创建与删除文件权限 --> uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 往SDCard写入数据权限转载 2013-08-09 11:37:45 · 743 阅读 · 0 评论 -
Android system.gc
1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。 垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被转载 2013-07-25 19:47:54 · 1295 阅读 · 0 评论 -
android 内存溢出oom错误的一些小见解
我们在代码里调用setBackgroundResource(int resid)来设置一个view控件的背景时,如果图片过大,或者调用setBackgroundResource(int resid)多次时,有可能导致内存溢出.查看代码: public void setBackgroundResource(int resid) { if (resid != 0 && re原创 2013-07-26 11:44:20 · 4034 阅读 · 2 评论 -
Android 如何判断一个应用在运行
Android 如何判断一个应用在运行 在一个应用中,或一个Service 、Receiver中判断一个应用是否正在运行,以便进行一些相关的处理。这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就是管理Activity的,它有一个方法叫getRunningTasks,可以得到当前系统正在运行的Task的列表,代码如下: Act转载 2013-07-24 10:07:13 · 1363 阅读 · 0 评论 -
智能机 RAM+ROM 参数
近日,雷军与周鸿祎针对小米手机的利润争执不下,BOM中的闪存成为争执的焦点。周鸿祎认为小米利润超高,每台赚了800元甚至1000元,雷军则回应:“小米手机用的是三星1G RAM和4G ROM模组。周总造谣说小米采购$10,但小米是创业公司,目前采购成本远远超过了周总说的价钱。我们想请周总帮忙,用$10买三星正品1G手机内存,另外每片可以再付给周总至少$10辛苦费。”由于智能手机对于闪存/内转载 2013-07-23 11:12:56 · 1155 阅读 · 0 评论 -
android APK应用安装过程以及默认安装路径
一:安装过程APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。Android应用安装有如下四种方式1. 系统应用安装――开机时完成,没有安装界面2. 网络下载应用安装――通过market应用完成,没有安装界面3. ADB工具安装原创 2013-09-13 17:36:32 · 26793 阅读 · 0 评论 -
android:targetSdkVersion相关
最近做一个应用时,在android4.0以下版本中,显示都正常。但是到了4.0以上的版本,那些没有物理按键,像BACK, HOME,MENU键都是虚拟按键时,发现了个奇怪的问题, MENU键不见了…… 开始还以为是代码里的android:theme="@android:style/Theme.NoTitleBar" 、getWindow().setFlags(WindowManager.Layou原创 2013-10-10 18:59:15 · 2910 阅读 · 0 评论 -
android apk 签名
1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。2.签名的步骤 a.创建key b.使用步骤a中产生的key对apk签名3.具体操作 方法一: 命令行下转载 2013-09-27 12:31:44 · 708 阅读 · 0 评论 -
清除应用用户数据,还原默认设置
/* * 文 件 名: DataCleanManager.java * 描 述: 主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录 */ package com.archermind.DataClean; import转载 2014-09-03 19:26:31 · 1342 阅读 · 0 评论 -
android 后台附件下载
这近两天没有做什么事情,就做了一个下载管理的的功能, 写好供项目组中其他人员调用,复用我的下载功能。 我们产品多处用到的下载附件功能, 同时支持的附件的管理: 查看,删除,转发 点击下载的时候,显示下载的进度,当前有几个待下载的,完成了几个下载的,下载完的可以进行查看,删除,转发 大家也知道,下载很耗时,所以我用了service 进行后台下载,说道后台下载就说道了更转载 2014-08-21 18:00:23 · 1105 阅读 · 0 评论 -
给launcher上的应用图标ICON加上背景框
launcher上的应用图标ICON,是在Utilities.java里的static Bitmap createIconBitmap(Drawable icon, Context context)这个函数原创 2014-07-04 17:40:58 · 2432 阅读 · 0 评论 -
为什么年事已高的我还在编程?
人们都会期望随着岁数的增加,个人条件受到限制的时候,你会放弃现实里的一些工作,如编程。从而转向更加高大上的任务,比如管理一个团队或者融资。这在“真正的教授”决定细节的学术界确实如此,只保留“大方向的东西”。换句话说,组织正面向垂直协作:顶层的管理者管理一个平行结构中的一些(更廉价的)雇员。在研究机构中,高级科学家提出想法,而初级科学家的任务就是来实现这些想法。随时间的推移,高级转载 2014-07-23 10:30:54 · 718 阅读 · 0 评论 -
Android4.4 状态栏信号和数据业务图片说明
Android 4.4 原始的状态栏信号和数据业务图标原创 2014-06-12 16:32:09 · 3488 阅读 · 8 评论 -
将Launcher2主界面背景设为墙纸
将launcher2主界面设置为待机墙纸,原创 2014-06-27 16:38:46 · 1069 阅读 · 2 评论 -
android 在手机中预置联系人/Service Number
实现预置联系人(包含姓名、号码信息)至手机中;并保证该联系人是只读的,无法被删除/编辑。 代码分为两部分:Part One 将预置的联系人插入到数据库中;Part Two 实现在联系人详情和联系人多选界面中无法删除/编辑预置联系人。【注意】如果您不需要限制预置联系人的删除/编辑操作,那么仅加入Part One部分代码即可,并去掉第三步”新增函数“转载 2014-06-05 14:27:29 · 1007 阅读 · 0 评论 -
更改CPU厂商信息
更改第三方手机检测到的CPU厂商型号,在kernel\arch\arm\mach-msm下面对应的Board-*.c文件里更改,比如我们是8226的CPU,就要在Board-8226.c里将DT_MACHINE_START(MSM8226_DT, "Qualcomm MSM 8226 (Flattened Device Tree)") 这里的8226改成客户指定的型号,比如要改成8926,就要这原创 2014-05-03 15:13:22 · 3727 阅读 · 0 评论