- 博客(85)
- 资源 (14)
- 收藏
- 关注
转载 Android跨进程通信:详解 Binder机制原理
前言如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无法形成一个完整的Binder概念本文采用 清晰的图文讲解方式,按照 大角度 -> 小角度 去分析Binder,即:先从 机制、模型的角度 去分析 整个Bi...
2019-02-19 18:00:59
1415
原创 手把手教你Android如何使用NDK实现一个MP3转码库
上周由于业务需要,需要实现一个支持ReactNative的MP3录音库,这里我抽离了其中转码的部分来系统的演示如何使用NDK调用C/C++代码。通过本文你可以学到以下知识:如何实现一个Android MP3转码库一些和音频转码相关的基础知识如何使用NDK将C/C++项目移植到Android端,并使用Java调用C/C++代码如何使用CMake构建NDK项目如何生成不同CPU架构所...
2018-04-19 15:39:06
1412
2
原创 Android 快速多渠道打包上线实践
前言今天向大家介绍的便是目前我们智课批改项目组使用的App多渠道打包方案,目前这个方案已经经过几个迭代的检验,效率和稳定性都有保障,希望能对大家的多渠道上线打包有所帮助。传统打包方案//build.gradleproductFlavors { channel{ manifestPlaceholders =[CHANNEL_ID_VALUE: c
2018-01-07 19:25:24
1245
原创 Android 如何快速写满存储空间
方法一:通过如下 adb 命令在 /mnt/sdcard/ 目录下产生一个名为 bigfile 的文件,让其自动增长到磁盘剩余空间大小。adb shell dd if=/dev/zero of=/mnt/sdcard/bigfile方法二:使用的是android sdk工具创建一个sdcard.img文件,由于Android单个文件传输大小限制,注意不要超过4G。mksdcard 3G sdcar
2017-12-21 11:54:10
3751
原创 LeetCode刷题总结【一】
前言第一周刷LeetCode,好久没有写算法题,有点手生,但总体表现还是很棒,最起码将这个计划坚持了下来。有天下班回到家累的一动不想动,但最后还是坚持起来刷了一道题。废话少说,先写题解,希望下周可以继续加油!题解Two Sum原题描述:Given an array of integers, return indices of the two numbers such
2017-08-11 15:02:45
2363
原创 Android自绘控件开发与性能优化实践——以录音波浪动画为例
前言本文实战性较强,主要目的是通过一个自定义控件的开发,引出我对自定义控件性能优化的一些思考和实践,欢迎各位喜欢移动开发的小伙伴来拍砖~本文由于篇幅有限,只讲解思路,并没有放出大量源代码,如果对本项目感兴趣,文末会放出Demo,可以自行去Github上fork和star。动画效果这是最近正在开发功能里的一个录音控件,我们的UI设计说做成某软件的效果,于是仿照它做了一个,相似度还是很高的:知识储备众所
2017-08-09 19:18:50
2566
原创 学Python写算法系列(一) | 直接插入排序
前言最近刚把HeadFirsrt的Python啃完说实话这本书自我感觉不太适合我这本书主要是围绕一个例子一步步展开的知识体系不够系统吧感觉比较适合编程基础薄弱的小白不过看完了以后也对Python的语法有了一个很简单的了解了吧正好最近还想复习复习算法于是就拿刚学的Python来练手吧一举两得希望每天都能下班之后更新一篇也算是一种自我充电吧直接插入排序直接排序是一组数据a0n从i初始i 1个开始假
2017-07-03 23:31:45
4366
原创 Android ANR 错误LOG查看
问题描述当我们遇到ANR的时候如何查看错误日志?解决方案adb shell "cat /data/anr/traces.txt" | less
2017-02-13 12:04:19
2216
原创 FATAL: UNABLE TO CREATE ‘…GIT/INDEX.LOCK’ FILE EXISTS
问题描述使用AndroidStudio的git工具时,有时候add的时候会提示“UNABLE TO CREATE ‘…GIT/INDEX.LOCK’ FILE EXISTS”错误。解决方案方案一:rm -f ./.git/index.lock方案二:rm .git/index.lock
2017-02-13 11:56:56
1633
原创 一款美观的自定义SeekBar,支持单、双向、阶段滑动、刻度、负数等多种强大自定义属性
效果图前言篇幅有限,本文只讲解关键关键思路,伸手党和想看详细思路的请移步 传送门点我点我!!,如果喜欢,欢迎 Star 和 Fork !实现思路本控件其实奔着双向滑动的SeekBar实现的,不过兼容了单向滑动(隐藏一个拖动按钮不就是单向的了嘛),所以我以 双向滑动思路为例。RangeSeekBar主要包括两个类,一个是RangeSeekbar类,主要负责绘制进度条以及处理滑动相关逻辑,计算当前滑动值
2017-02-10 16:03:46
14190
2
原创 听云SDK影响其他项目报Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/networkbench/agent
问题描述最近集成了听云SDK,装了它的探针,完美运行。后来再运行我的另一个之前完美运行的项目时,傻眼了。闪退!闪退!闪退!一看Log, Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/networkbench/agent等等。顿时无语,后来发现原来是Android Studio缓存导致的问题。原因因为And
2017-02-07 17:57:57
12398
2
原创 兼容Android N 调用相册和相机获取图片及Crash- FileUriExposedException解决方案
原因Android N 文件系统权限发生了变化 ,为了提高私有文件的安全性,在targetSdk版本为N或者以后版本的app中,其私有目录将会限制访问。这可以防止私有文件元数据的泄露,比如文件大小或者是文件是否存在。但这给开发者带来了很多不利的影响:文件的owner不能放宽文件权限,如果你使用MODE_WORLD_READABLE或者 MODE_WORLD_WRITEABLE操作文件,将会触发Sec
2017-02-07 14:32:01
1885
原创 如何处理解析Json中的key为中文或数字等变态数据
这篇文章是介绍如何处理Json中一些key为中文或数字开头的奇葩数据,使用的工具是Google提供的Gson工具,采用的方法是编写Java bean类对应json数据中相应的对象及数组等。默认各位已掌握这些知识,关于gson的基本使用请自行百度。Json变态数据案例{ "名称1": "这是个案例而已", "这是个demo": { "1e-3": 65.3,
2017-01-12 15:09:34
14303
8
转载 【Android 声音处理】MediaPlayer和SoundPool
一、new SoundPool(4, AudioManager.STREAM_MUSIC, 100);第一个参数是允许有多少个声音流同时播放,第2个参数是声音类型,第三个参数是声音的品质。二、使用MediaPlayer来播放音频文件存在一些不足:如:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。 这些缺点决定了MediaPlayer在某些场合的使用情况不会很理想,例如在对时间精准度要求相
2017-01-07 09:59:39
3045
原创 Android 听筒扬声器切换(多机型兼容、兼容5.0以上)
目录目录亲测有效机型案例有限仅供参考代码用法DemoFeature本以为是个很简单的切换,没想到搞了快一天。网络上各种答案,各种坑,浪费了大量的时间。亲测有效机型(案例有限、仅供参考)三星系:SM-A9000、SM-S5 魅族系:魅蓝E(yun os)、魅蓝note5 小米系:红米1s、小米note Vivo系:忘了什么型号了代码/** * ==================
2017-01-06 18:28:22
11538
原创 Android 获取创建各种存储路径工具类(内置权限获取)
外部存储和内部存储前言最近工作比较轻,从项目中总结抽象出一些工具类,利人利己,欢迎交流完善~概念介绍1、内部存储 Internal Storage:注意内部存储不是内存。内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后
2016-08-18 17:39:18
4975
转载 Android反射简单应用
转载自:http://blog.youkuaiyun.com/jia4525036/article/details/26272851获得手机SIM卡状态try{ Class<?> managerClass = Class.forName("Android.telephony.TelephonyManager"); Method methodDefa
2016-08-17 16:00:04
553
转载 自定义Notification及几个坑介绍
**背景** 最近做了下推送,涉及到Notification,看到一篇不错的文章感觉好多坑都介绍到了,于是先转载并补充一下,下一篇再介绍推送。相关链接: 原文链接 原文Demo下载**实现**RemoteViews 自定义View这是最基础的知识点,虽然做过自定义通知的应该都清楚,但我觉得还是有必要带一下。它主要被用于AppWidget和Notification,它描述一个在其它进程中显示的
2016-08-15 17:49:33
6355
原创 判断Activity是否在运行、应用是否在前台、是否安装
**前言: 仅为总结,以备不时之需。** **一、判断Activity是否在运行** 注意:am.getRunningTasks(1)可以获得当前运行的task数量,设置为1则可以判断当前Activity是否正在前台运行,如果设置task数量很大时可以判断Activity是否已经已经finish /** * 判断某个界面是否在前台 * * @param c
2016-08-15 16:57:03
1874
转载 Uri详解之——Uri结构与代码提取
一、URI与Uri名称如此相像的两个类是有什么区别和联系?1、所属的包不同。URI位置在java.net.URI,显然是Java提供的一个类。而Uri位置在android.net.Uri,是由Android提供的一个类。所以初步可以判断,Uri是URI的“扩展”以适应Android系统的需要。2、作用的不同。URI类代表了一个URI(这个URI不是类,而是其本来的意义:通用资源标志符——Unifor
2016-08-11 14:39:06
2759
原创 TextView内容过长加省略号
TextView中有个内容过长加省略号的属性,即ellipsize,之前一直用方法三实现,后来无意发现一个简便的方法,记录下来。方法一:XML代码android:ellipsize = “end” 省略号在结尾 android:ellipsize = “start” 省略号在开头 android:ellipsize = “middle” 省略号在中间 android:elli
2016-04-03 13:01:53
706
原创 Bitmap优化问题
**在Android项目中,如果直接使用ImageView显示Bitmap会占用较多的资源,如果图片过大,会造成程序崩溃。为了解决这个问题需要对Bitmap进行压缩,以节省内存。因为项目中用到,所以写下来,以备不时之需。我们可以使用BitmapFactory的options设置图片压缩比,具体代码如下:**/** * @param absolutePath 图片文件路径 *
2016-03-07 19:54:52
569
原创 startActivityForResult 用在于多个Activity之间传值时一些需要注意的用法
1:如何利用startActivityForResult()传值2:requestCode 请求码作用3:resultCode 结果码作用4:关于调用startActivityForResult后onActivityResult立刻响应,而返回当前页时onActivityResult不响应的问题的
2015-04-22 23:56:35
3615
原创 如何在自己程序跳转至微信,新浪,腾讯微博,QQ空间等
启动应用代码!Intent intent = new Intent();ComponentName cmp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.LauncherUI");intent.setAction(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAU
2015-03-23 21:24:33
1518
原创 Libgdx TexturePacker大图分割为小图
如何将TexturePacker打包的大图还原为之前的小图呢?下面的算法帮你轻松实现!import java.awt.image.BufferedImage;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;impo
2015-03-15 21:06:42
2694
原创 Android常见控件初探
温故而知新。最近复习了一些android常用控件,接下来,根据android 官方API,总结一下它们的一些常见用法。(开发测试环境为Android4.4)一、TextView由官方的关系图可以看出,TextView继承View类,直接子类有Button,CheckedTextView等,间接子类有AutoCompleteTextView, CheckBox等。下面列举一些TextView常见的xm
2015-03-12 22:57:07
1086
原创 Win7下装Ubuntu双系统(Wubi法)
最近帮徒弟装了Ubuntu,总结一下,方便后来人。步骤一: 确定自己电脑操作系统的位数(64位/32位):我的电脑–>鼠标右键–>属性,然后你就可以看到了步骤二: 到Ubuntu官网 http://www.ubuntu.com/download/desktop 选择你需要的操作系统镜像(32位下32位的,64位的随意)步骤三: 用压缩软件打开镜像,找到wubi.exe,将它解压到和镜像文件相同
2015-03-11 17:59:40
2165
原创 Android布局文件中xml里的xmlns:的作用
一些新手经常看到布局文件中都有xmlns:android="http://schemas.android.com/apk/res/android"或者 xmlns:tools=http://schemas.android.com/tools 却不知道是什么意思。其实它是告诉Android开发工具你准备使用Android命名空间里的一些通用属性。在所有Android XML设计文件中最外层的标记
2015-03-08 18:47:02
1712
原创 Android五大布局Layout
Android开发中,我们可能会遇到过一些很复杂的布局,对于初学者来说,可能脑子会嗡的一下,“这么复杂!该怎么整?!”。不要担心!再复杂的布局其实也是由简单地布局组成的,我们要学会将它分解成基本的布局,那么问题就迎刃而解了。Android共有五种常见布局方式,分别是:LinearLayout(线性布局),FrameLayout(单帧布局),AbsoluteLayout(绝对布局),
2015-03-07 20:45:40
3551
转载 Android布局文件layout.xml的一些属性值
第一类:属性值 true或者 falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_
2015-03-07 20:40:25
883
转载 Activity生命周期
子曰:溫故而知新,可以為師矣。《論語》学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓。近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。熟悉javaEE的朋友们都了解servlet技术,
2015-03-05 18:56:25
874
转载 Android程序目录结构
HelloWorld程序的目录结构概述我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹、gen文件夹、Android文件夹、assets、res文件夹、 AndroidManifest.xml、default.properties。在Eclipse的左侧展开HelloWorld项目,可以看到如下图的目录结构:下面将分节介绍上面的各级目录结构。1.sr
2015-03-04 14:55:13
905
原创 android studio环境配置以及出现NO jvm installation found解决方案。
因为目前许多开源项目都是用Android studio写的,似乎eclipse已经过时。为了成为一名IT精英,我们当然也要紧跟时代潮流了。下面是android Stdio中文社区,文件下载,一些基本教程也是非常实用,推荐给大家:http://www.android-studio.org/这是安装教程:http://www.android-studio.org/index.php/docs/
2015-01-08 23:13:40
25565
转载 Activity的四种launchMode
合抱之木,生於毫末;九層之台,起於累土;千里之行,始於足下。《老子》今天在社区看到有朋友问“如何在半年内成为顶级架构师”,有网友道“关灯睡觉,不用半年的...”,的确,做梦还来的快一些。作为一个程序员,树立远大的目标是值得欣赏的,但不能只去空想,要一步一步地实践才行。成大事者,须从小事做起;万事起于忽微,量变引起质变。我们今天要讲的是Activity的四种launchMode。
2014-11-26 15:11:50
633
转载 service如何弹出dialog
我们都知道service是没有界面的,默默的在后台执行逻辑代码,有时候需要和前台有所交互,如:toast或弹出提示框等等在service中弹出toast很简单,只要使用handler就可搞定,代码如下123456hanlder.post(new Runnable() { @Override public void run() {
2014-11-21 23:51:25
966
转载 【Android 声音处理】MediaPlayer和SoundPool
1、new SoundPool(4, AudioManager.STREAM_MUSIC, 100);第一个参数是允许有多少个声音流同时播放,第2个参数是声音类型,第三个参数是声音的品质。2、使用MediaPlayer来播放音频文件存在一些不足:如:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。这些缺点决定了MediaPlayer在某些场合的使用情况不会很理想,例
2014-11-21 15:49:22
1318
原创 Libgdx Box2D实战---放开那小球(三:规则常用的body和精灵结合)
今天介绍规则body如何和图片结合。上一篇文章我介绍了box2D的基本知识,如果你用心的话,你会搜索网上相关简单demo吧。那些我就不写了。那么如果我用图片表示我的那个body,而不是简单线条,那该怎么办?
2014-11-09 22:13:06
1867
原创 Libgdx Box2D实战---放开那小球(二:Box2D介绍)
Box2D官网 : http://box2d.org/Box2D v2.1.0用户手册翻译 : http://blog.youkuaiyun.com/complex_ok/article/category/871440Libgdx使用jni封装了box2d的c++版本,使得其运行效率比其他同级的物理引擎如jbox2d快不少。
2014-11-03 23:02:50
2152
Android 听筒扬声器切换(多机型兼容、兼容5.0以上)
2017-01-06
RxjavaRetrofitOkhttpDemo
2016-08-16
Android五大基本布局demo
2015-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人