JackPeng

Keep on going never give up

Android o

一 什么是 Android O? Android O 是下一版本的 Android 系统,它优化了电源及性能,并提供了多种全新方式来扩展您的应用,主要新功能如下: 通知渠道 画中画 自动填充 自适应图标 二 Android 计划概览 O Developer Preview 从 2017 年 3 月 21 日开放下载,到向 AOSP 和 OEM 提供最终的 Andr...

Android Bitmap小技巧 - 压缩时保留图片的Exif信息

背景 大家都知道,相机在照相时是会为照片生成Exif,里面包含有拍照时间、图片尺寸、旋转角度、GPS定位等信息,有时候,我们的APP在展示图片的时候需要获得并展现这些信息。 但是在android中,当我们将手机本地照片decod为bitmap后,bitmap对象中是没有这些Exif信息的,而一般情况下用户拍照后将照片上传是肯定不会让上传原图的,都会对图片进行适当压缩。无论是Bitma...

Xposed模块开发指南

开发指南 本篇翻译自xposed作者,原文链接:https://github.com/rovo89/XposedBridge/wiki/Development-tutorial 你想要学习如何创建一个Xposed的module吗?通过阅读本文就可以,不仅包括技术上“创建这个文件,并插入…”等等,同时让你知道背后的实现原理,知其然,也知其所以然。当然你也可以只看最后的源代码和阅读“...

Xposed框架介绍与安装

Xposed Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。 基于Xposed框架可以制作出许多功能强大的模块,且在功能...

Android ShapeDrawable之OvalShape、RectShape、PaintDrawable、ArcShape

Android图形图像基础之OvalShape、RectShape、PaintDrawable、ArcShape。写一个例子说明。 准备一个布局,布局里面竖直方向排列若干TextView: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.androi...

Android 安全机制(1)uid 、 gid 与 pid

1、概述        Android 安全机制来源于Linux,并且以Linux权限管理为基础,要了解Android的安全机制,需要从linux中的安全机制了解开始,而用户的权限管理又是linux安全机制的最基本的一个组成 2、linux中的用户(UID)、组(GID)、进程(PID)       在 Linux...

记一个launcher的bug

关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决 复现步骤 在package installers 安装界面安装完一个应用后,直接打开app,然后进入了 Activity_1, 此时再通过此activity用startActivity(intent)的方...

汽车变速箱原理

前言 为了更好的理解变速箱的工作原理,下面让我们先来看一个2档变速箱的简单模型,看看各部分之间是如何配合的。 #原理 输入轴(绿色)通过离合器和发动机相连,轴和上面的齿轮是一个部件。   轴和齿轮(红色)叫做中间轴。它们一起旋转。轴(绿色)旋转通过啮合的齿轮带动中间轴的旋转,这时,中间轴就可以传输发动机的动力了。   轴(黄色)是一个花键轴,直接和驱动轴相连,通过差速器来驱动汽...

Charles从入门到精通

简介 Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 S...

Vector 是线程安全的吗?

背景 大家应该经常被问到:Vector 与 ArrayList 的区别? 好多人一拍脑门就出:Vector 是线程安全的 (在任何情况下都是?)。。。 这样回答的原因应该是因为 Vector 的所有方法加上了 synchronized 关键字,从而保证访问 vector 的任何方法都必须获得对象的 intrinsic lock (或叫 monitor lock),也即,在vector内部...