7 Google_acmer

尚未进行身份认证

暂无相关简介

等级
TA的排名 3w+

Android跨进程通信:详解 Binder机制原理

前言如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无法形成一个完整的Binder概念本文采用 清晰的图文讲解方式,按照 大角度 -> 小角度 去分析Binder,即:先从 机制、模型的角度 去分析 整个Bi...

2019-02-19 18:00:59

手把手教你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

Android 快速多渠道打包上线实践

前言今天向大家介绍的便是目前我们智课批改项目组使用的App多渠道打包方案,目前这个方案已经经过几个迭代的检验,效率和稳定性都有保障,希望能对大家的多渠道上线打包有所帮助。传统打包方案//build.gradleproductFlavors { channel{ manifestPlaceholders =[CHANNEL_ID_VALUE: c

2018-01-07 19:25:24

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

LeetCode刷题总结【一】

前言第一周刷LeetCode,好久没有写算法题,有点手生,但总体表现还是很棒,最起码将这个计划坚持了下来。有天下班回到家累的一动不想动,但最后还是坚持起来刷了一道题。废话少说,先写题解,希望下周可以继续加油!题解Two Sum原题描述:Given an array of integers, return indices of the two numbers such

2017-08-11 15:02:45

Android自绘控件开发与性能优化实践——以录音波浪动画为例

前言本文实战性较强,主要目的是通过一个自定义控件的开发,引出我对自定义控件性能优化的一些思考和实践,欢迎各位喜欢移动开发的小伙伴来拍砖~本文由于篇幅有限,只讲解思路,并没有放出大量源代码,如果对本项目感兴趣,文末会放出Demo,可以自行去Github上fork和star。动画效果这是最近正在开发功能里的一个录音控件,我们的UI设计说做成某软件的效果,于是仿照它做了一个,相似度还是很高的:知识储备众所

2017-08-09 19:18:50

学Python写算法系列(一) | 直接插入排序

前言最近刚把HeadFirsrt的Python啃完说实话这本书自我感觉不太适合我这本书主要是围绕一个例子一步步展开的知识体系不够系统吧感觉比较适合编程基础薄弱的小白不过看完了以后也对Python的语法有了一个很简单的了解了吧正好最近还想复习复习算法于是就拿刚学的Python来练手吧一举两得希望每天都能下班之后更新一篇也算是一种自我充电吧直接插入排序直接排序是一组数据a0n从i初始i 1个开始假

2017-07-03 23:31:45

Android ANR 错误LOG查看

问题描述当我们遇到ANR的时候如何查看错误日志?解决方案adb shell "cat /data/anr/traces.txt" | less

2017-02-13 12:04:19

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

Android 自定义View 9Path图片绘制

Android 自定义View 9Path图片绘制

2017-02-10 16:13:14

一款美观的自定义SeekBar,支持单、双向、阶段滑动、刻度、负数等多种强大自定义属性

效果图前言篇幅有限,本文只讲解关键关键思路,伸手党和想看详细思路的请移步 传送门点我点我!!,如果喜欢,欢迎 Star 和 Fork !实现思路本控件其实奔着双向滑动的SeekBar实现的,不过兼容了单向滑动(隐藏一个拖动按钮不就是单向的了嘛),所以我以 双向滑动思路为例。RangeSeekBar主要包括两个类,一个是RangeSeekbar类,主要负责绘制进度条以及处理滑动相关逻辑,计算当前滑动值

2017-02-10 16:03:46

听云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

兼容Android N 调用相册和相机获取图片及Crash- FileUriExposedException解决方案

原因Android N 文件系统权限发生了变化 ,为了提高私有文件的安全性,在targetSdk版本为N或者以后版本的app中,其私有目录将会限制访问。这可以防止私有文件元数据的泄露,比如文件大小或者是文件是否存在。但这给开发者带来了很多不利的影响:文件的owner不能放宽文件权限,如果你使用MODE_WORLD_READABLE或者 MODE_WORLD_WRITEABLE操作文件,将会触发Sec

2017-02-07 14:32:01

如何处理解析Json中的key为中文或数字等变态数据

这篇文章是介绍如何处理Json中一些key为中文或数字开头的奇葩数据,使用的工具是Google提供的Gson工具,采用的方法是编写Java bean类对应json数据中相应的对象及数组等。默认各位已掌握这些知识,关于gson的基本使用请自行百度。Json变态数据案例{ "名称1": "这是个案例而已", "这是个demo": { "1e-3": 65.3,

2017-01-12 15:09:34

【Android 声音处理】MediaPlayer和SoundPool

一、new SoundPool(4, AudioManager.STREAM_MUSIC, 100);第一个参数是允许有多少个声音流同时播放,第2个参数是声音类型,第三个参数是声音的品质。二、使用MediaPlayer来播放音频文件存在一些不足:如:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。 这些缺点决定了MediaPlayer在某些场合的使用情况不会很理想,例如在对时间精准度要求相

2017-01-07 09:59:39

Android 听筒扬声器切换(多机型兼容、兼容5.0以上)

目录目录亲测有效机型案例有限仅供参考代码用法DemoFeature本以为是个很简单的切换,没想到搞了快一天。网络上各种答案,各种坑,浪费了大量的时间。亲测有效机型(案例有限、仅供参考)三星系:SM-A9000、SM-S5 魅族系:魅蓝E(yun os)、魅蓝note5 小米系:红米1s、小米note Vivo系:忘了什么型号了代码/** * ==================

2017-01-06 18:28:22

Android 获取创建各种存储路径工具类(内置权限获取)

外部存储和内部存储前言最近工作比较轻,从项目中总结抽象出一些工具类,利人利己,欢迎交流完善~概念介绍1、内部存储 Internal Storage:注意内部存储不是内存。内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后

2016-08-18 17:39:18

Android反射简单应用

转载自:http://blog.csdn.net/jia4525036/article/details/26272851获得手机SIM卡状态try{ Class<?> managerClass = Class.forName("Android.telephony.TelephonyManager"); Method methodDefa

2016-08-17 16:00:04

自定义Notification及几个坑介绍

**背景** 最近做了下推送,涉及到Notification,看到一篇不错的文章感觉好多坑都介绍到了,于是先转载并补充一下,下一篇再介绍推送。相关链接: 原文链接 原文Demo下载**实现**RemoteViews 自定义View这是最基础的知识点,虽然做过自定义通知的应该都清楚,但我觉得还是有必要带一下。它主要被用于AppWidget和Notification,它描述一个在其它进程中显示的

2016-08-15 17:49:33

判断Activity是否在运行、应用是否在前台、是否安装

**前言: 仅为总结,以备不时之需。** **一、判断Activity是否在运行** 注意:am.getRunningTasks(1)可以获得当前运行的task数量,设置为1则可以判断当前Activity是否正在前台运行,如果设置task数量很大时可以判断Activity是否已经已经finish /** * 判断某个界面是否在前台 * * @param c

2016-08-15 16:57:03

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!