Android
Army_jun
移动开发,喜欢探讨一些新技术,学习新知识。
你考了98分,学霸考了100分,不要觉得你就离学霸很近了,你考了98是实力只有这么多,学霸考100是因为试卷只有100分。
展开
-
Android 智能语音相关知识-PCM设备
一、Audio说明Android上的应用一般都是通过AudioTrack类来播放音频,通过AudioRecord类来录制音频。AudioTrack类和AudioRecord类是Android Frameworks封装提供给应用使用的音频接口类。这些类经过层层的Binder、JNI等调用后会调用Audio HAL层提供的相关接口。这些接口实现了对音频设备、通路等一系列操作。就这样最终完成Android App和硬件的交互,实现声音的播放或者录制。我们知道,在Linux系统中,所有的设备最终都是抽象成一个或原创 2020-11-24 22:53:20 · 1660 阅读 · 0 评论 -
Android 6.0运行时权限
最近研究了一下android6.0的运行时权限(公司项目需要)我开始项目中用的很乱都是直接在需要申请权限Activity页面中直接重写requestCameraPermission和onRequestPermissionsResult()方法(为了赶项目)之后都改为封装了把权限全部封装看着也爽用着更爽O(∩_∩)O哈哈~ 最后总结了以一下从 Android 6.0(API 级别 23)开原创 2017-01-10 18:03:56 · 539 阅读 · 0 评论 -
详解使用LruCache来解决图片OOM的问题
LruCache 什么是LruCache? LruCache实现原理是什么?这两个问题其实可以作为一个问题来回答,知道了什么是 LruCache,就自然而然的知道 LruCache 的实现原理;Lru的全称是Least Recently Used ,近期最少使用的!所以我们可以推断出 LruCache 的实现原理:把近期最少使用的数据从缓存中移除,保留使用最频繁的数据,那具体代码要怎么实现呢原创 2017-03-09 17:18:06 · 903 阅读 · 0 评论 -
Android 各种屏幕截图方法
最近项目有相关的一些截图需求,经过翻阅资料也就了一些截图方法分享给大家下面就是 android截图代码 包括截取长屏(listview,scrollview等)代码在Android开发中,有时候会遇到需要截屏分享到朋友圈或者QQ,截屏有截取当前屏幕,也有需要截取不仅一个屏幕,可能会很长。 1、先给出保存图片的代码吧 // 保存到sdcard public static void saveP原创 2016-11-15 12:08:20 · 757 阅读 · 0 评论 -
Android中图片的三级缓存(内存、文件、网络)
最近项目中图片太多起初只做了二级缓存(其实就是做了一个文件缓存)但是总感觉不够好,于是就研究了一下三级缓存并用到项目中。下面就谈谈三级缓存吧。1、为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响原创 2016-12-01 19:05:40 · 3719 阅读 · 2 评论 -
Android架构详解
android应用开发框架是 Application Framework. 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications下面将详细介绍这5个部分。自底向上分析各层。Android架构: 1、Linux Kernel Android基于Linux原创 2016-11-09 16:53:20 · 441 阅读 · 0 评论 -
Android 6.0 运行时权限处理
运行时权限介绍 Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上, 又新增了运行时权限动态检测,以下权限都需要在运行时判断:身体传感器日历摄像头通讯录地理位置麦克风电话短信存储空间运行时权限处理 Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限, 所以如果你以前的APP设置的targ转载 2016-10-22 10:59:13 · 486 阅读 · 0 评论 -
Webview里JS跳转到Activity页面
有两种方法.第一种是通过webview提供的js和java沟通的接口进行public void addJavascriptInterface(Object object, String name) 一、然后,在javascript里可以通过name来引用到object对象里有@JavascriptInterface注解的方法Java代码 WebView wv; @Override p原创 2016-09-19 11:50:04 · 2332 阅读 · 0 评论 -
Android动画详解(二)属性动画完全解析(上)
Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起转载 2016-08-11 12:30:25 · 523 阅读 · 0 评论 -
VideoView视频开发
Android自带了一个VideoView,用来播放视频和网络视频,它是继承SurfaceView使用MediaPlayer来做播放的类通过VideoView播放视频的步骤: 1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件 2、调用VideoView的如下两个方法来加载指定的视频 setVidePath(String path):加原创 2016-08-11 11:16:25 · 604 阅读 · 0 评论 -
Android 手动显示和隐藏软键盘
1、如果输入法在窗口上已经显示,则隐藏,反之则显示InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 2、强制显示或隐藏键盘InputMeth原创 2016-08-18 16:26:38 · 1037 阅读 · 0 评论 -
好用的城市选择(三级联动)
最近公司项目中用到了关于收货地址的功能,所以就根据实际情况剖析一下我做的三级联动,其实也就是我想总结一下我自己的代码了。 三级联动肯定都不陌生,因为现在很多项目中都会有应用,比如 淘宝、京东、美团、饿了么等等,这些都有,我项目中做的其实就是和淘宝的差不多当然我们都叫做仿淘宝项目。废话不多说了下面就直接上代码,根据代码来分析具体的用法,我们主要贴出来一些关键代码。 三级联动d原创 2017-02-27 15:43:21 · 2301 阅读 · 0 评论 -
OnTrimMemory的使用
今天偶然看见了OnTrimMemory的一些知识,于是就总结了一下有兴趣的同志可以看一下OnLowMemory OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory。系统提供的回调有:Application/Activity/Fragementice/Servi原创 2016-01-27 17:57:59 · 1994 阅读 · 0 评论 -
View刷新 invalidate() 、postInvalidate()、requestLayout() requestFocus()总结。
① invalidate() :请求重绘View树,即draw()过程。把例子中他是整个刷新着UI,并且从头到尾并不会触发onMeasure()方法(控制大小用)。如果是View就重绘View,如果是ViewGroup就全部重绘。一般引起invalidate()操作的函数如下:1、直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。 2、setSelec...原创 2018-04-13 19:17:32 · 804 阅读 · 0 评论 -
android 7.0 使用FileProvider在应用间共享文件(相机适配)
好久没记录我的工作了,事太多了,今天刚好有点时间就捋一捋上一个项目中做的有关7.0的相机适配吧,主要是FileProvider的使用,当时主要是因为7.0手机拍照功能引出的我对FileProvider的深入,下面就记录下我是怎么适配的吧一、FileProvider概述FileProvider是我们对所有实现了IFileProvider接口的所有类型以及对应对象的统称。 总的来说,以Fil原创 2018-01-18 15:09:11 · 1364 阅读 · 0 评论 -
总结Android开发中必备的代码Review清单
清理操作1.页面退出时,是否完成必要的清理操作 1) 是否调用Handler的removeCallbacksAndMessages(null)来清空Handler里的消息; 2) 是否取消了还没完成的请求; 3) 在页面里注册的监听,是否反注册; 4) 假如自己用到观察者模式,是否反注册;原创 2017-08-21 16:38:47 · 482 阅读 · 0 评论 -
简单的IPC机制学习
IPC 机制IPC场景:只有在多进程情况下才会考虑使用进程间通信。 给四大组件在AndroidMenifest中指定android:process属性来开启多线程模式使用android:process(进程)会带来的问题 1、静态成员和单例模式完全失效; 2、线程同步机制完全失效 3、SharedPreferences可靠性下降; 4、Application会多次创建; Binder的工原创 2017-07-28 15:28:45 · 784 阅读 · 0 评论 -
Android,App 常用图标尺寸规范
一、 程序启动图标:LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。HDPI (High Density Screen, 240 DPI),其图标大小为 72 x 72 px。xhdpi (Extra-high density scr原创 2017-08-03 17:02:26 · 706 阅读 · 0 评论 -
第一章、Activity 的生命周期和启动模式
Activity 的生命周期和启动模式先上一张图解析生命周期过程的一张经典图 提示: 1、configuration 当设备配置发生改变时候Activity会被重新创建 解决方法:在Activity中指定configChanges属性,常用的有locale、orientation、keyboardHidden这三个选项,还可能用到screenSize。我们只要在AndroidMenifes原创 2017-05-12 14:23:16 · 850 阅读 · 0 评论 -
APP支付报错ALI40247处理方案
今天项目中突然遇到APP支付报错ALI40247,于是就总结记录了一下这个问题处理方案。下面就是APP支付报错ALI40247处理方案第一步:进入管理中心:https://openhome.alipay.com/platform/appManage.htm 第二步:选择或者创建一个应用,再选择功能信息-》申请功能-原创 2017-04-05 18:02:11 · 4795 阅读 · 1 评论 -
JAVA面试题总结
JAVA相关基础知识1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象原创 2017-03-23 16:55:49 · 528 阅读 · 0 评论 -
Android 剖析Activity管理栈
activity栈一直以来总有点不清晰的感觉,今天就彻底的梳理一下。 在android中,一个activity组件可以激活另一个activity组件(可能属于另一个应用程序)。 若新的被激活的activity组件属于另一个应用程序,则那个activity组件会运行在那个应用程序的进程中,但是从用户的角度来看,好像就是属于本应用程序一样。Android是通过将之前的act原创 2016-08-18 11:30:28 · 1089 阅读 · 0 评论 -
Android线程中消息处理(Handle,Looper)
Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理。handler其实可以看做是一个工具类,用来向消息队列中插入消息的。(1) Looper类用来为一个线程开启一个消息循环。 默认情况下android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。) Looper对象通过Me原创 2016-06-21 18:23:26 · 1331 阅读 · 0 评论 -
Android 支持表情功能
概述1.原理和实现思路2.表情图片显示3.表情面板4.表情的输入框插入和删除5.表情添加脚本Android中表情功能,一般都不是用ImageView去设置图片实现的, 表情一般会嵌套在文本之中,那么如何实现呢,这里就介绍一下其中的原理,此外还有相关功能的实现思路和具体代码1.原理和思路a.表情内容的数据格式 表情看上去是图片,但是在数据传输的时候本质上是一个特殊文本 比如QQ表情就是一个 “/原创 2016-03-31 10:51:04 · 2565 阅读 · 0 评论 -
彻底解决Android 应用方法数不能超过65K的问题
作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常:Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536可能有些同学会说,解决这个问题很简单,我们只需要在Project.原创 2016-02-23 16:24:37 · 953 阅读 · 0 评论 -
Android WebView开发问题及优化汇总
我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题。就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来。有些是老生常谈,有些则是个人摸索得出解决方法。下面就是整理得到的些干货。 1.加快HTML网页装载完成的速度 默认情况html代码下载到WebView后,webkit开始解析网页各个节点,发现有外部样式文件或者外部脚本文件时,会异步发起网络转载 2016-03-18 16:16:12 · 1331 阅读 · 0 评论 -
android图片压缩
首先该文章是总结, 不是原创, 是通过看网上其他大神的文章和自己的一些实践总结出来的. 一.图片的存在形式 1.文件形式(即以二进制形式存在于硬盘上) 2.流的形式(即以二进制形式存在于内存中) 3.Bitmap形式 这三种形式的区别: 文件形式和流的形式对图片体积大小并没有影响,也就是说,如果你手机SD卡上的如果是100K,那么通过流的形式读到内存中,也一定是占100K的内存,注意是流转载 2016-03-18 14:46:20 · 421 阅读 · 0 评论 -
PullToRrefresh自定义下拉刷新动画
首先,下载著名的刷新框架https://github.com/chrisbanes/Android-PullToRefresh,其中simple为demo,library和extras作为项目包导入到simple中 一,定义刷新动画的layout 在library下的com.handmark.pulltorefresh.library.internal包中的FlipLoadingLayout和R原创 2016-03-29 15:13:29 · 735 阅读 · 0 评论 -
从案例学RxAndroid开发
原文链接:RxAndroid Basics: Part 1如果你在阅读这篇文章,相信你一定很想了解RxJava以及如何在Android应用中使用它。可能你已经见过RxJava的代码了,但仍然有些疑惑,愿你能在这篇文章里找到答案。当我第一次使用RxJava的时候我只是在照搬代码,这些代码能跑起来,但是我对RxJava的基础部分仍然存在误解,而且我找不到好的源码来学习。所以为了理解RxJava,我不得不转载 2016-03-29 15:08:46 · 943 阅读 · 0 评论 -
Android下使用正则表达式
常用的正则表达式匹配:^[1-9]\d{3}匹配非0开头的4位整数([1−9]\d0,3) 匹配非0开头的4位整数 ^([1-9]\d{0,3}) 非零的最大4位数字,可以是1位,2位,3位// 只允许字母和数字 // String regEx = "[^a-zA-Z0-9]"; // 清除掉所有特殊字符 String regE原创 2016-03-16 15:56:45 · 681 阅读 · 0 评论 -
Android高效加载大图、多图解决方案,有效避免程序OOM
我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过下面的代码看出转载 2016-01-22 15:50:10 · 399 阅读 · 0 评论 -
Android Studio 快捷键
Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) Ctrl+E或者Alt+Shift+C 最近更改的代码 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+Shift+Space 自动补转载 2016-01-05 09:40:06 · 559 阅读 · 0 评论 -
WebView上显示HTML内容
在WebView上显示HTML内容,包括英文以及中文。有3种方法可以有用: (1)使用loadData方法。 这种方法需要先将HTML内容进行编码,否则显示的中文会有乱码。 编码方法为: Java代码 收藏代码private String fmtString(String str){String notice = "";try{notice = URLEncoder.encode(st原创 2016-03-09 16:36:10 · 835 阅读 · 0 评论 -
Android数据缓存
Android数据缓存 1、http://blog.csdn.net/lnb333666/article/details/84601592、https://github.com/Trinea/android-common http://www.trinea.cn/android/android-common-lib/3、http://blog.163.com/zhou_411424/blog/原创 2016-03-21 18:16:27 · 517 阅读 · 0 评论 -
Android APP的字体设置
Android系统自带有对字体的设置,这些设置是对字体的显示方式的设置,比如加粗,倾斜,下划线,字号等,但是对于字体本身,比如设置为楷体,隶书等貌似没有。Android系统只有一种默认的,如果需要修改字体,或者引用自己喜欢的字体,那么就需要自己设置或修改。 修改系统的字体可以下载修改字体的app即可,但是如果是对于开发者想在自己的app中使用具有自己个性的文字,可以按下面介绍的方法做(这里只是其中原创 2016-05-30 19:48:53 · 3484 阅读 · 0 评论 -
Android全屏模式,沉浸模式。粘性沉浸模式
1、普通全屏模式 (Fullscreen) 普通全屏模式通过设置下面的标记位实现:var uiOpts = SystemUiFlags.LayoutStable | SystemUiFlags.LayoutHideNavigation | SystemUiFlags.LayoutFullscreen | SystemUiFlags.Fullscree原创 2016-04-21 15:24:29 · 2316 阅读 · 2 评论 -
Git 的使用和配置
Git 常用命令git init here – 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息、标记等内容git remote add origin git@github.com:winter1991/helloworld.git – 把本地仓库和远程仓库原创 2016-04-19 16:22:55 · 381 阅读 · 0 评论 -
android 动画详解(一)
一、Animations介绍Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转、缩放、淡入淡出等,这些效果可以应用在绝大多数的控件中。 二、Animations的分类Animations从总体上可以分为两大类: 1 . Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Al原创 2016-05-10 14:48:01 · 875 阅读 · 0 评论 -
android三种动画
在Android3.0(即API Level11)以前,Android仅支持2种动画:分别是Frame Animation(逐帧动画)和Tween Animation(补间动画),在3.0之后Android支持了一种新的动画系统,称为:Property Animation(属性动画)。一、Frame Animation:(逐帧动画)这个很好理解,一帧帧的播放图片,利用人眼视觉残留原理,给我们带来动画原创 2016-03-28 11:43:31 · 422 阅读 · 0 评论 -
Android Studio使用相关博客汇总
Android Studio相关博客: Android Studio(一):介绍、安装、配置 Android Studio(二):快捷键设置、插件安装 Android Studio(三):设置Android Studio编码 Android Studio(四):Android Studio集成Genymotion Android Studio(五):修改Android Studio项目包名原创 2016-03-16 16:49:47 · 2134 阅读 · 0 评论