
Android
Hfengxiang
这个作者很懒,什么都没留下…
展开
-
从安卓应用开发的角度去理解4+1模型
4+1视图是这样一种方法,它将系统的不同方面分解为五个关键视图,每个视图都专注于系统的一个特定方面,以便我们能够全面考虑和设计应用。通过这种4+1视图的方法,开发团队可以更清晰地分析和讨论应用的不同方面,确保设计和开发过程中的全面性和一致性。在安卓应用开发中,开发视图可以展示应用的代码结构、使用的框架和工具,以及开发团队之间的协作方式。- 这个视图关注的是应用在运行时的行为,特别是它如何处理并发和多任务。在安卓应用中,过程视图可以展示应用如何同时处理用户输入、后台任务和网络请求,以确保系统的稳定性和效率。原创 2024-07-07 23:59:09 · 253 阅读 · 0 评论 -
Android的 Binder 原理剖析
一. Binder 概述简单介绍下什么是 Binder。Binder 是一种进程间通信机制,基于开源的 OpenBinder 实现;OpenBinder 起初由 Be Inc. 开发,后由 Plam Inc. 接手。从字面上来解释 Binder 有胶水、粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信。对于 Binder 更全面的定义,等我们介绍完 Binder 通信原理后再做详细说明。1.1 为什么必须理解 Binder ?作为 Android 工程师的你,是不是常常会有这样的疑问:..原创 2022-05-29 00:39:34 · 506 阅读 · 0 评论 -
图片围绕某个点旋转演示模型
package com.hfengxiang.example.myphotoview;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PointF;import android.graph.原创 2021-08-20 04:54:14 · 244 阅读 · 0 评论 -
Hfengxiang常用工具类
1.CrashHandler/** * Created by Hfengxiang on 2020/05/08. * Version 1.0 * Description: 单例的设计模式的异常捕捉 */public class ExceptionCrashHandler implements Thread.UncaughtExceptionHandler { private static ExceptionCrashHandler mInstance; private s原创 2021-08-02 13:25:48 · 130 阅读 · 0 评论 -
AndroidStdio中CMakeList.txt语法笔记
一,cmake几个字段或方法的含义1.最低支持版本2.真正使用版本3.find_library查找系统库(系统库所在位置与以下位置有关)如果loca.properties文件没指定版本号系统就选择最新的system_libs.cmakeset(NDK_SYSTEM_LIBS "libEGL.so;libGLESv1_CM.so;libGLESv2.so;libGLESv3.so;libOpenMAXAL.so;libOpenSLES.so;lib.原创 2021-05-16 20:06:38 · 897 阅读 · 4 评论 -
编译ffmpeg并集成到安卓工程中
一,下载资源并配置环境变量1.配置ndk编译环境具体操作参考:ndk交叉编译这篇博客2.下载并解压ffmpeg此处下载ffmpeg4.0.2这个版本其他版本不能保证成功,下载地址:http://www.ffmpeg.org/releases/wget http://www.ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2tar -xvf ffmpeg-4.0.2.tar.bz2解压后可以看到下面的目录结构二,编译ffmpeg1.原创 2021-05-15 02:19:39 · 366 阅读 · 2 评论 -
交叉编译安卓动态/静态链接库
一,环境变量配置1.root用户下打开/etc/profile追加下方内容并保持#NDK PATHexport NDK="/home/administrator/android/ndk/tool/android-ndk-r17c"#GCC PATHexport NDK_GCC_X64="$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-gcc"export NDK_GCC_arm="$ND原创 2021-05-14 20:00:12 · 1348 阅读 · 1 评论 -
Linux下交叉编译安卓下可执行文件
一,下载NDK工具链1.1上ndk官网复制链接并下载wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip?hl=zh_cn此处下载的版本是r17c各版本之间会有差异,使用其他版本不能保证成功1.2解压ndk并配置环境变量export NDK_GCC=/home/administrator/android/ndk/tool/android-ndk-r18b/toolch.原创 2021-05-14 10:40:45 · 1248 阅读 · 2 评论 -
远程控制安卓终端步骤笔记
远程控制安卓终端步骤1.root设备2.安装termux3.termux下执行pkg install openssh4.访问端创建私钥并生成公钥文件5.pc端安装并配置adb环境,用usb线连接设备6.adb push 公钥路径 storage/self/primary/7.adb shell8.su9.cd storage/self/primary/10.cp <公钥>.pub data/data/com.termux/files/home/.ssh/11.cat &原创 2021-02-20 15:33:00 · 1008 阅读 · 0 评论 -
安卓调用shell命令
一,使用的apiRuntime.getRuntime().exec("<commond>");二,提升权限Runtime.getRuntime().exec("su");三,获取输入输出流Process su= Runtime.getRuntime().exec("su");OutputStream outputStream = su.getOutputStream();DataOutputStream dataOutputStream = new DataOutpu原创 2021-02-20 15:30:14 · 740 阅读 · 0 评论 -
安卓pm命令笔记
一、pm命令介绍与包名信息查询1.pm命令介绍pm工具为包管理(package manager)的简称可以使用pm工具来执行应用的安装和查询应用宝的信息、系统权限、控制应用pm工具是Android开发与测试过程中必不可少的工具,shell命令格式如下:pm <command>2.包名信息查询shell模式下:pm list packages [options] [FILTER]打印所有的已经安装的应用的包名,如果设置了文件过滤则值显示包含过滤文字的内容原创 2021-02-20 15:09:49 · 722 阅读 · 0 评论 -
编译安卓6.0的SystemUI模块
导火索:由于公司开发的安卓终端项目要霸占整个设备屏幕且永不退出,不允许用户退出。所以必须要干掉系统默认的导航栏和状态栏,但是系统提供的api只能暂时隐藏,手指下拉或者弹窗还是会冒出来。直接删除systemUI.apk重启虽然可以解决但是太过粗暴,系统壁纸之类炸七杂八的东西都看不到了,于是只能通过修改SystemUI源码,重新编译打包替换一.下载安卓源码,直接通过镜像下载比较慢,我是在网上找的别人已经下载好的源码地址:链接:https://pan.baidu.com/s/1EYDFSFFE94w原创 2020-05-14 17:29:24 · 1010 阅读 · 0 评论 -
覆盖CentOS自带的openjdk
CentOS系统默认会带上jdk,这本是一个很人人性化的功能,但是当我要编译安卓源码的时候发现的centos7带的却是1.8的jdk,然而安卓需要1.7,于是我想当然的就再装一个1.7配置下。结果一顿操作后,java -version发现还是特么1.8。还以为自己哪里配错了,然后在~/.bashrc下添加下环境变量,不行!然后在/etc/profile上再配置下,还是不行。这就有点骚了。感觉那个默认的1.8就是阴魂不散。然后百度centos自带jdk。有人建议把自带的干掉。于是我就照做了步骤一:查询系统原创 2020-05-14 11:43:06 · 569 阅读 · 0 评论 -
adb以粗暴的方式干的状态栏和底部导航栏
//打开设置adb shell am start com.android.settings/com.android.settings.Settings//结束adb服务adb kill-server //启动adb服务adb start-server//获取adb设备列表 adb devices //连接设备adb connect [设备ip地址(192.168.18.119)]//部署应用adb install [安装包位置(E:/Data/app_1.0.apk)] //拉取系.原创 2020-05-12 18:38:40 · 3770 阅读 · 0 评论 -
获取安卓设备ip(GPRS/WIFI/以太网)地址
public static String getIPAddress() { NetworkInfo info = ((ConnectivityManager) Hz.getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info != null && info.isConnect..转载 2020-05-12 18:30:22 · 495 阅读 · 0 评论 -
AndroidStdio 同步项目报 Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"
最近下载了AS4.0预览版尝了个鲜,开始觉得还好,后来发现很多老版本的设置的地方都改了,这还少次要的,用了没几天突然我跑着好好的项目同步不成功了,一直报:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request",网上一百度,千篇一律的都是改gradle配置,比如这篇:https://www.cnblogs.co...原创 2019-12-27 10:03:57 · 890 阅读 · 1 评论 -
OKHttp简单二次封装
倒入依赖:compile 'com.squareup.okhttp3:okhttp:3.6.0' compile 'com.google.code.gson:gson:2.8.0'代码部分: 1,定义请求结果回调接口public interface CallBack<T> { //请求数据成功时回调的方法 形参类型不确定 所以写成泛型的形式 void onSuc...转载 2018-02-27 10:19:36 · 421 阅读 · 0 评论 -
OkGO使用详解
1.支持的常用功能一般的 get,post,put,delete,head,options请求基于Post的大文本数据上传,postString(),postJson()等多文件和多参数统一的表单上传(允许监听上传进度)支持一个key上传一个文件,也可以一个Key上传多个文件大文件下载和下载进度回调大文件上传和上传进度回调支持cookie的内存存储和持久化存储,支持传递自定义cookie提供网络缓...转载 2018-02-27 14:59:12 · 12127 阅读 · 0 评论 -
如何优雅地使用NDK
在Android Studio上使用了一段时间的NDK,感觉官方的插件com.android.tools.build.gradle-experimental还是不够稳定,存在一定问题,不过谷歌也声明了这个插件是在实验性阶段。幸好官方在Android Studio上提供了另一种方式使用NDK,这篇博客就讲讲这种到目前为止我觉得非常赞的方法。开发环境基础的安卓开发环境:Android Studio、S...转载 2018-02-27 15:14:44 · 344 阅读 · 0 评论 -
LayoutInflater中inflate方法两个参数和三个参数的区别
关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个东东。本篇博客我们不讲源码,只看使用。源码的解读会在下一篇博文中带来。inflate方法从大范围来看,分两种,三个参数的构造方法和两个参数的构造方法。在这两类中又有细分,OK,那我们就把各种情况都来演...转载 2018-03-09 09:50:53 · 261 阅读 · 0 评论 -
Android Shape参数详解
一、简单使用刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用。1、新建shape文件首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.xml内容是这样的:(先不需要理解,先看shape怎么用)[html] view plaincopy<?xml version="1.0" encoding="utf-8"?> <shap...转载 2018-03-12 09:40:38 · 1069 阅读 · 0 评论 -
Glide使用详解
一、简介Glide,一个被google所推荐的图片加载库,作者是bumptech。这个库被广泛运用在google的开源项目中,包括2014年的google I/O大会上发布的官方app。(PS:众所周知的简介就到此为止了)Glide 对于 Android SDK 的最低要求是 API level 10Glide滑行的意思,可以看出这个库的主旨就在于让图片加载变的流畅。现在被广泛使用,当然还是有很多...转载 2018-04-04 10:30:55 · 574 阅读 · 0 评论 -
Android LayerList详解
1. layer-list 是啥?有啥作用?点击查看 安卓官方开发指南中关于layerlsit的说明(1). layer-list 是啥?简单理解,layer 是层,list 是列表,那么 layer-list 就是层列表的意思。但是,是什么层列表呢?? 其实 layer-list 是用来创建 LayerDrawable 的,LayerDrawable 是 DrawableResource 的一种...转载 2018-05-07 14:23:09 · 978 阅读 · 0 评论 -
集成微信分享和微信支付爬坑之路
最近项目需要接入分享和支付的功能,于是上网百度一番发现了个好东西---ShareSDK,这个sdk提供了聚合分享,聚合支付,以及推送和moblink多种功能,这正是项目当前和后期需要的。一次集成就能用上所有功能,不得不说是个不错的东西。废话不多说,依据官方文档一步步来就能很快集成。这里我记录一下自己集成过程中遇到的一些坑。先简单贴一下集成ShareSDK步骤,分两阶段,一阶段是基础配置,另...原创 2018-10-31 15:15:51 · 1404 阅读 · 0 评论 -
Android Studio中使用Git进行代码管理(分支、合并)
打开Android Studio选择,选择从Git检出代码 也可以从VCS如下点击 去远程仓库复制地址,这里以码云Gitee第三方代码托管为例,类似Github的界面,点击右边复制项目地址 填一下配置,点击Clone开始检出代码 一直点OK即可 不一会儿代码就检出成功并打开 接下来我们来打个分支,命名为V1,右击项目--Git--Repository...转载 2018-11-13 17:33:54 · 2108 阅读 · 0 评论 -
Android Studio 导入项目时遇到sdk location not found错误
根据提示:Gradle sync failed: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.修改local.properties下的sdk路径,结果路径正确,然后配置安卓SDK环...原创 2018-02-27 10:23:29 · 6592 阅读 · 1 评论