![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 82
nullZgy
Android 开发。
展开
-
基于安卓平台的滤镜功能相机
1.1需求背景爱美之心,人皆有之,我们拍照是为了留住一个美好的瞬间。Android自带的相机拍照效果满足不了人们的爱美心理,而且比较单一;因此为了解决这个问题我们研发滤镜功能相机。滤镜功能相机主要基于Android手机自带的摄像头,在实现拍照等基本功能的基础上实现实时滤镜的功能,并加以改良优化滤镜的渲染速度照过程以及舒适的拍照体验,可以轻而易举的拍出令人满意的照片。1.2项目背景目前针对Android系统的拍照APP主要集中在两点上,一个是拍照时的预览效果处理,另一个是对于手机相册中的.原创 2021-10-13 17:40:56 · 1423 阅读 · 0 评论 -
Android OpenGL学习笔记
最近做了个贴纸相机的项目,用到OPenGL渲染,一路下来,遇到许许多多的问题,现在写个文章,当做笔记。OpenGL基础简介CPU : 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps、Drawables等都是一起打包到统一的纹理)。GPU: 一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。格栅化 : 是 将图片等..原创 2021-09-27 20:07:42 · 366 阅读 · 0 评论 -
Android H265版视频通话项目
H265视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openH265以及ffmpeg等开源库的推出,大多数使用者无需再对H265的细节做过多的研究,这大降低了人们使用H265的成本。但为了用好H265,我们还是要对H265的基本原理弄清楚才行。今天我们就来看看H265的基本原理。H265压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:帧内预测压缩,解决的是空域数据冗余问题。帧间预测压缩(运动估计与补偿),解决的是时域数据冗徐问题。整数离散余弦变换(DCT原创 2021-05-16 13:51:23 · 434 阅读 · 2 评论 -
Android NDK实现Gif播放框架
Android中实现GIF播放,目前大多数的方法是通过获取到GIT资源后转为流,再通过ImageView.setBitMap .下面我通过JNI调用Android系统里的代码进行播放。代码结构如下图:下面一步一步的贴代码讲解。首先在MainActivity里有一个ImageView用于显示GIF。这里的比较简单,获取内存卡里的Gif文件,通过GiFHandler调用SO。package zgy.gitcode;import android.app.Activity;import..原创 2021-05-05 15:12:25 · 285 阅读 · 3 评论 -
非常强大的java时间处理工具类!
xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Date,轻量级,无第三方依赖。为什么要开发这个工具?(1)Java8以前的Date API设计不太好,使用不方便,往往会有线程安全问题。xk-time工具包,使用java8 api,其中Instant、LocalDate、LocalDateTime、LocalTime、ZonedDateTime.原创 2021-01-25 10:18:03 · 1334 阅读 · 0 评论 -
Java线程同步器原理剖析
CountDownLatch原理剖析日常开发中经常遇到一个线程需要等待一些线程都结束后才能继续向下运行的场景,在CountDownLatch出现之前通常使用join方法来实现,但join方法不够灵活,所以开发了CountDownLatch。示例public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(2);原创 2021-01-25 09:58:48 · 164 阅读 · 0 评论 -
找工作Android面试总结
/***2013年面试的公司和一些面试题* 2014-1-9回忆整理** 大部分的面试开场白都是自我介绍,一般介绍自己的基本信息后,三五句话介绍下工作经验和项目,没必要说的太多。说话一定要圆 滑,扬长避短。都喜欢问离职原因,期望工资。**如果离职原因回答的不好,直接影响整场面试效果。* 有的还会问你的职业规划,让我很原创 2020-05-22 11:33:53 · 361 阅读 · 0 评论 -
Android Launcher 修改记录
OS:Android 9.0Source:Launcher3源码Path:packages\apps\Launcher3一、修改默认配置1.图标修改Path: xml/device_profiles.xml //1024x600 <profile launcher:name="Nexus 7" launcher:minWidthDps="575" launcher:minHeightDps="...原创 2020-10-24 12:33:01 · 865 阅读 · 0 评论 -
2020-10-24 车机UI的SystemUI修改
1.状态栏 Layout / status_bar.xml音量条修改layout-sw600dp/volume_dialog_row.xmllayout-sw600dp/volume_dialog.xml状态栏添加TASKframeworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.javaCommit id 728bb4f8becom.andro...原创 2020-10-24 12:15:10 · 4052 阅读 · 2 评论 -
Android GB905协议详解
最近发现,深圳做网约车和货车的协议的公司越来越多了,之前在公司做过一些这方面的项目。就来写个这方面的文章记录下,也顺便分享下。GB905,主要是面向网约车的一种协议,主要监控司机的行为,确保乘车安全。 首先一些协议的指令。public class JTT905Cmd { /** * ISU通用应答 */ public static final int ISU_GENERAL_RESPONSE = 0x0001; /*** 中心通用应答 */ public static final i原创 2020-10-24 12:06:36 · 1962 阅读 · 1 评论 -
Android Location 和 Sensor的使用,图片旋转角度
package wits.sensor;import android.Manifest;import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventL.原创 2020-07-09 15:38:14 · 641 阅读 · 0 评论 -
android 悬浮球的实现,全部界面可用
最近做一个悬浮球的项目,需求是全局可调用,所以必须用一个Services。话不多说,直接上代码。package com.android.settings.widget;import java.lang.reflect.Method;import com.android.settings.R;import com.wits.pms.statuscontrol.ServiceManager;import android.app.Instrumentation;import androi.原创 2020-07-03 10:04:59 · 2777 阅读 · 7 评论 -
Andorid BLE的连接多个设备的实现
最近回头一看,还有很多公司是在做智能家居的项目,当然 , 这必修回使用到BLE的通讯协议。目前关于BLE的帖子的千千万万,但是多连接的却是很少的,所以,这篇就来分析下BLE的多连接1,BLE设备得我扫描。这个直接调用btAdapter的startLeScan即可。相对应得,停止扫描调用stopLeScan().// 开始扫描 public void startLeScan() { if (mBluetoothAdapter != null) { mBluetoothAdapter.原创 2020-05-31 16:35:15 · 2003 阅读 · 0 评论 -
一篇搞定Android Sqlite
开门见山的说,咱不搞那么多理论的,直接来写实用的。由于经常用到数据库存储,多以写一篇博文分享下经验,也是自己做个笔记。直接上代码,详情见代码中的注释。import java.util.ArrayList;import java.util.Calendar;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import androi..原创 2020-05-23 10:00:56 · 226 阅读 · 1 评论 -
android平台下移动DM接入流程?
中国移动拟建设终端管理与服务系统,通过对终端产品的激活、配置使用等信息的收集,结合终端公司对产品的供应链管理,实现产品全生命周期的掌控。 要求2017年3月起,所有入中国移动产品库的定制、非定制Android终端均要支持终端管理功能。(必选要求)终端自注册 第一次开机时,必须将终端的IMEI及其他系统需要的基础信息以数据的方式发送到系统服务器。服务器负责解析此H...原创 2019-02-22 17:13:35 · 4408 阅读 · 4 评论 -
获取手机的信息的各种工具类
/*package com.****.mobile;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReade...原创 2018-07-26 14:09:38 · 1079 阅读 · 0 评论 -
辅助功能之自动抢红包
hi大家好。新年又来了,微信群里又是各种红包横飞。作为技术人员的我们却大可不必担心一不小心,手速慢了点,又错过了几十万。我们可以通过安卓的辅助功能来实现自己的微信自动抢红包,安全又快捷。辅助服务我们在 设置->无障碍 中,就可以看到手机中所有的辅助服务了。辅助功能通常是针对一些视力听力等有障碍导致使用手机有障碍的人群,做一些语言提醒等帮助他们更好地使用手机。因为辅助功能可以转载 2017-01-29 16:36:38 · 2389 阅读 · 0 评论 -
Android自动填充短信验证码
项目需求:Android开发中用户登录往会用到短信验证的功能,如果让用户先查看短信,然后再回到界面填写验证码,用户体验不是很好,有时就需要实现验证码的自动填写功能。做法:我以前的做法是先创建一个广播接收器,接受短信变化的广播,收到广播时,再把验证码提取出来。那时有用户测试反馈他的手机安装了其他一些短信应用或者手机本身限制了权限的情况下,这种方式可能起不了作用,即使把优先转载 2017-01-29 15:49:47 · 542 阅读 · 0 评论 -
Android Toast自定义使用
1.Toast源码分析我们先去看Toast的源码。Toast有两种显示布局方式,一种最常见调用Toast.makeText(),看源码是这样写的public static Toast makeText(Context context, CharSequence text, @Duration int duration) {Toast result = new Toast(contex原创 2016-09-28 16:09:16 · 516 阅读 · 0 评论 -
LayoutInflater—— 你可能对它并不了解甚至错误使用
今天,看到了一篇文章讲LayoutInflater的用法,瞬间感觉自己对这个类确实不够了解,于是简单的看了下LayoutInflater类的源代码,对这个类有了新的认识。首先,LayoutInflater这个类是用来干嘛的呢?我们最常用的便是LayoutInflater的inflate方法,这个方法重载了四种调用方式,分别为:1. public View inflate(int res原创 2016-10-14 17:12:40 · 474 阅读 · 0 评论 -
新手必备的常用代码片段整理(二)
收集设备信息用于信息统计分析是否有SD卡动态隐藏软键盘动态显示软键盘动态显示或者是隐藏软键盘主动回到Home后台运行获取状态栏高度获取状态栏高度标题栏ActionBar高度获取MCCMNC代码 SIM卡运营商国家代码和运营商网络代码返回移动网络运营商的名字返回移动终端类型判断手机连接的网络类型2G3G4G判断当前手机的网络类型WIFI还是234G收集设备信息,用于信原创 2016-10-14 17:26:26 · 278 阅读 · 0 评论 -
新手必备的常用代码片段整理(一)
拨打电话跳转至拨号界面发送短信唤醒屏幕并解锁判断当前App处于前台还是后台状态判断当前手机是否处于锁屏睡眠状态判断当前是否有网络连接判断当前是否是WIFI连接状态安装APK判断当前设备是否为手机获取当前设备宽高单位px获取当前设备的IMEI需要与上面的isPhone一起使用获取当前设备的MAC地址获取当前程序的版本号拨打电话public static void call(C原创 2016-10-14 17:33:13 · 344 阅读 · 0 评论 -
Android通过用代码画虚线椭圆边框背景来学习一下shape的用法
在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件比如Imageview或Textview的高宽设置成一样就是正圆,solid表示远的填充色,stroke则代表远的边框线,所以两者结合可以实现带边缘的圆,当然也可以直接加上size控制高宽。那么我首先带你们了解一下Shape下有哪些标签,并原创 2016-11-15 23:06:32 · 571 阅读 · 0 评论 -
Android 实现倒计时动画效果
想要实现的效果图如下:点击“倒计时开始”按钮,会出现从10到0的倒计时动画。说是动画,其实并不是用animation等来制作,而仅仅是用TextView更新文字的方式来实现动画效果,很esay,直接上图。第一步:制作圆形背景图在android中,我们会用shape定义各种各样的形状,它能实现渐变色、虚线/分割线、边框、半透明、半透明阴影效果。原创 2016-11-15 23:14:29 · 3696 阅读 · 2 评论 -
过度依赖框架有什么不好?
框架的目的之一就是增加抽象,隐藏细节,提高生产效率。当然了,隐藏了细节也等于隐藏了知识,但现在的编程语言和平台众多,什么都了解做不到也无必要。实用主义的学习方法就是learn as needed,什么地方出问题了,什么地方就进行深入补习和研究。如果一定要吹毛求疵,可能就是刚入门的程序员会被框架宠坏,遇到问题不愿意静下心来深入研究。但这是态度问题,和框架没什么关系。 使用原创 2016-11-14 12:27:28 · 746 阅读 · 0 评论 -
android app中的权限及自定义权限
自定义权限的声明如果自定义的软件中因对外提供什么服务,而想声明一个权限,来限制此服务的使用,可以在Manifest中,声明权限。以launcher2程序的访问provider的权限为例子:在application 中注册provider<provider android:authorities="com.android.launcher2.settings"原创 2016-11-30 23:07:48 · 3752 阅读 · 0 评论 -
SharedPreference 你的使用姿势对吗?
1. commit 和 apply 的区别commit 返回一个 boolean 来表明修改是否提交成功, apply 没有返回值;commit 是将数据写入内存后同步提交到磁盘(不要在主线程中 commit ),而 apply 将数据写入内存后会在一个新线程中异步提交到磁盘,在不要求提交结果的情况下应使用 apply。2. 批量操作当我们一次有多个修改写操作时,不要多次 edit原创 2016-11-30 23:23:59 · 457 阅读 · 0 评论 -
Android之Dialog详解(一)
Android中的对话框形式大致可分为五种:分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,自定义对话框。 在实际开发中,用系统的对话框会很少,因为太丑了,美工不愿意,多是使用自定义对话框。当然学会系统的,自定义就简单了,所以我们先来学习系统的,后面在写一篇自定义对话框。一、一般对话框:不多说先上图:代码:priv原创 2016-11-22 12:36:44 · 800 阅读 · 0 评论 -
Android 代码技巧
大家知道 AlertDialog 的 context 通常需要是 Activity,所以想在 Service 或者 Receiver 里等无关 Activity 的场景弹对话框怎么办?代码如下:public class DialogContainerActivity extends Activity { private static DialogContextPr原创 2016-11-23 22:23:16 · 354 阅读 · 0 评论 -
activity的startActivity和context的startActivity区别
我们以 startActivity(Intent) 这个最常用的 api 来讲。1. 首先,Context 类有一个 abstract 方法 /** * Same as {@link #startActivity(Intent, Bundle)} with no options * specified. * * @param intent原创 2016-11-26 21:41:22 · 9215 阅读 · 2 评论 -
Android开发内存优化方式? 避免 Out Of Memory(OOM)
1. 使用更加轻量的数据结构例如,我们可以考虑使用ArrayMap/SparseArray而不是HashMap等传统数据结构。通常的HashMap的实现方式更加消耗内存,因为它需要一个额外的实例对象来记录Mapping操作。另外,SparseArray更加高效,在于他们避免了对key与value的自动装箱(autoboxing),并且避免了装箱后的解箱。2. 避免在Android里原创 2016-11-26 21:47:41 · 367 阅读 · 0 评论 -
我的2016
时间过的真快,我们经常用这句俗不可耐的话作为总结年底的开头,的确,一晃真就到年底了。忙忙碌碌者有,碌碌无为者有,百尺竿头者有,不好不坏者有。我们不得不慨叹,12月,它真就是个好月份,除了这一年发生的大事件和我们各自不同的收获之外,有一点大家是相同的,那就是,即将集体又老一岁…… 一年的时间,你发生了什么样的故事呢? 收获了什么呢? 留下了什么美好的印象呢?原创 2016-12-02 23:02:58 · 1310 阅读 · 0 评论 -
AIDL使用和Binder机制详解
一、AIDL的使用1.AIDL的简介AIDL (Android Interface Definition Language) 是一种接口定义语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生原创 2017-02-28 15:36:24 · 852 阅读 · 0 评论 -
Android Crash抓取处理
程序因未捕获的异常而突然终止, 系统会调用处理程序的接口UncaughtExceptionHandler;处理未被程序正常捕获的异常,只需实现这个接口里的UncaughtExceptionHandler方法,UncaughtExceptionHandler方法回传了 Thread 和 Throwable 两个参数。文/Mur(简书作者)原文链接:http://www.jianshu.com/p/0e9bf00512ec著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。原创 2016-10-12 17:05:48 · 1097 阅读 · 0 评论