前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上,一直没有看到支持Java8的消息.Android到底会不会支持Java8呢?答案是肯定的,Android N已经开始支持Java 8 了. 关于Java 8 (1.)使用Lambda表达式 Java 8的一大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.当开发者在编写Lambda表达式时…
前言: 最近在看<Android深度探索(卷1)HAL与驱动开发>安装随书带的虚拟环境浪费了很多时间,说是虚拟环境的安装倒不如说是虚拟环境的导入,其实没什么技术含量,也没有什么复杂的,只是作为一个无人指导的资深小白,难免在这无关紧要的细节上浪费时间,为了避免更多的人在这上面进行不必要的浪费,总结一下我的导入过程. 随书光盘中只带了一个虚拟环境名字是Ubuntu12.04.vmwarevm(7z的压缩文件),由于有些电脑的cpu不支持虚化,原作者还做了另外一个虚拟系统ubuntu10.04LTS…
运行时类型识别(RTTI, Run-Time Type Information)是Java中非常有用的机制,在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型:还有一种,是利用反射机制,在运行时再尝试确定类型信息. 本篇博文会结合Thinking in Java 的demo 和实际开发中碰到的例子,对Java反射和获取类型信息做总体上整理.文章主要分为三块: Java类加载和初始化 Java中RTTI Java利用反射获取运行时类型信息 一:Java类加载和初始…
一:Java类加载和初始化 1.1 类加载器(类加载的工具) 1.2 Java使用一个类所需的准备工作 二:Java中RTTI 2.1 :为什么要用到运行时类型信息(就是RTTI) 2.2  :RTTI在运行时如何表示 2.3   :  Class对象 2.3 : RTTI形式总结: 三:Java利用反射获取运行时类型信息 3.1 : 获取的方式 3.2 :   动态代理 四: Java反射在实际开发中应用 4.1  :在web项目中创建统一的拦截层 4.2 : 用于webService服务 :…
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就总结了一下关于四大内部类的知识. 备注: java语言中允许类中再次定义类,这种在其它类内部定义的类叫内部类,内部类分为四种:常规内部类(成员内部类),局部内部类(方法内部类),匿名内部类,静态嵌套内部类 一.常规内部类 其实常规的内部类就是第一种(成员内部类) 当然 成员内部类由于高内聚,不对外开…
第一章 介绍Android驱动开发和移植技术 主要对android和linux做了总体的介绍,让我们有了个感性的认识. 一.Android的四层系统架构: a) Linux内核:Android是基于Linux内核的,所以它和linux的其他部分差异非常小,包括Linux的驱动以及内存管理,进程管理,带电源管理等程序. b) C/C++的代码库:C/C++编写的代码库,也就是Linux下的.so文件以及dalvik虚拟机的运行时哦! c) Android SDK API:用java语言编写的各种L…
"工欲善其事必先利其器"学习安卓开发的第一步,安装Android Studio. 一.什么是Android Studio? Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试. 二.为什么用Android Studio而不用Eclipse? eclipse开发Android所需插件已经停止更新维护,相比,android…
1.Android介绍 1.1 Android的系统架构 下面这张图展示了Android的系统架构: 图中可见,Android大致可以分为四层架构,五块区域: Linux内核层(Linux Kernel) Android系统时基于Linux2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动.音频驱动.照相机驱动.蓝牙驱动.WiFi驱动.电源管理等. 系统运行层 这一层通过一些C/C++库来为Android系统提供了主要的热性支持,比如SQLite库提供了数据库的支持,…
原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过JNI的可以看看我之前的博客(Windows下利用Visual Studio开发的过程):http://cherishlc.iteye.com/admin/blogs/1328136 以及自动生成工具swig的…
Action bar 是你可以为你的应用的Activity实现的最为重要的设计元素之中的一个.它提供了集中UI特性.而且通过提供和其它的Android应用的一致性体验让你的应用可以非常快被用户熟悉.基本的功能包含: 一个专用的显示应用表示的地方,而且可以指出用户当前在应用中的位置. 用户可以非常方便地訪问重要的功能(比如搜索). 提供视图切换导航(通过tab.或者下拉列表). 这次的训练课程提供了对action bar基础知识的高速引导. 有关action bar的各种特性的很多其它信息.请查看…
手势操作在我们使用智能设备的过程中奉献了不一样的体验.Android开发中必然会进行手势操作方面的编程.那么它的原理是怎样的呢?我们如何进行手势操作编程呢? 手势操作原理 首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象. 3. 通过GestureDetector(手势识别器)转发次MotionEvent对…
本系列是阅读<Pro Android4>的读书笔记,也包括网络阅读资料的整理,以及个人心得. 由于智能手机引入AP(应用处理器),Android在某种意义上是个人计算机,具有桌面计算机的完整架构,采用Linux-based OS stack来管理设备.内存和进程.Android的Java库覆盖电话,视频.连接.图形.UI编程等多个方面.Android SDK支持几乎全部的J2SE,除去UI的AWT和Swing部分,而用Android UI framework取而代之. Android针对手持设…
Android中的日志工具Log(android.util.Log): 1.打印日志的方法(按级别从低到高排序): Log.v():级别verbose,用于打印最为烦琐,意义最小的日志 Log.d():级别debug,打印一些调试信息,用于打印一些对你调试程序和分析问题有帮助的信息 Log.i():级别info,用于打印一些比较重要的信息,这些信息是你非常想看到的,可以帮你分析用户的行为数据 Log.w():级别warn,用于打印一些警告信息,提示程序在该处可能会有潜在的风险,最好去修复一下这些…
ADT(Android Development Tools):目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具.SDK(Software Development Kit):一般是一些被软件工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合.在Android中,他为开发者提供了库文件以及其他开发所用到的工具.简单理解…
在前边的博文中,我已经介绍了Java核心的容器IO等,现在我来说一下java中的数据类型.在java中,一切东西皆为对象(这句话意思是java中绝大数情况都用对象),极少数不是对象的,也存在与之对应的对象(比如基本数据类型存在与之对应的包装类,数组有List对象可以代替) Java中数据类型 主要有“基本数据类型”.“String”.“引用类型” (基本的引用类型不多做介绍,在下一篇博文中着重介绍“枚举”,也算是引用类型的一种) 一:基本数据类型 1.1基本数据类型的定义 byte.char.i…
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听器技术来实现这个功能了. 1 package me.gacl.web.listener; 2 3 import javax.servlet.ServletContext; 4 import javax.servlet.http.HttpSessionEvent; 5 import javax.ser…
java泛型是对Java语言的类型系统的一种扩展,泛型的本质就是将所操作的数据类型参数化.下面我会由浅入深地介绍Java的泛型. 一:泛型出现的背景 在java代码里,你会经常发现类似下边的代码: public class Test { public static void main(String[] args) { List list = new ArrayList(); list.add("hah"); //list.add(new Test()); // list.add(1);…
IO是java绕不过去的槛,在开发中io无处不在, 正如同 世界上本没有路,java io写多了,也就知道了大体是什么意思,在读完thinking in java 感觉就更清晰了,结合具体的业务场景,整理一下 ,什么是IO.为什么JAVA要这么设计IO. 先来一道开胃菜 我想要读取控制台输入的字符 解释一下:我从控制台读取一行字符,然后打印一下.这就是一个简单的流了. 整理一下: 就是我先 得到一个用于读取 控制台输入的流,然后 我·打印我得到的东西,这里有个细节就是 流一定得关闭,这是底线,关…
前言: 一直致力于为公司寻找更加高效的解决方案,作为一款K12在线教育App,功能中难免会有LaTeX数学公式的显示需求,这部分公司已经实现了此功能,只是个人觉得在体验和效率上还是不太好,今天来聊一下如何让原生渲染LaTeX数学公式. 先了解一下LaTeX数学公式 什么是Latex?感兴趣的同学可以查看百科:Latex百科. Latex数学公式:就是通过Latex来表示一个数学公式,举例说明: 例如:$$ \\[ \\sum_{k=1}^n k^2 = \\frac{1}{2} n (n+1).…
前言: 一直致力于提高开发效率降低项目耦合,今天想抽空学习一下MVP架构设计模式,学习一下如何运用到项目中. MVP架构设计模式 MVP模式是一种架构设计模式,也是一种经典的界面模式.MVP中的M代表Model, V是View, P是Presenter. Model 一部分是处理业务逻辑,一部分是提供View显示的数据. View 代表的是一个接口,一个将UI界面提炼而抽象出来的接口. Presenter Model和View之间的桥梁 为什么采用MVP 降低耦合度 模块职责划分明显 利于测试驱…
前言: 关于Android渠道打包是一个比较老的话题,今天主要记录总结一下多渠道打包以及如果动态配置修改一些资源属性.今天以公司实际需求为例进行演示,由于项目复用很多公共的业务组件,而且业务组件之间的跳转采用Scheme协议,每个业务组件的host地址不变,所以需要在打包的时候动态修改scheme协议名字.为了方便举例,首先我们这里假设我们一个App要打出两个不同的渠道,方便进行数据统计. 第一步声明一个渠道参数 AndroidManifest.xml中 <meta-data android:n…
OpenCV java API的文档说明在OpenCV-2.4.10-android-sdk/sdk/java/javadoc/index.html的文件夹下. 想用java API的方式进行OpenCV4android 应用开发还是挺简单,首先就这些API先熟悉一下,然后对自己要开发的应用设计好流程,需要用到什么的数据结构进行存储,用到什么算法.然后对算法进行了解,输入参数是什么,输出参数是什么.有哪些fields和methods. 1.Packages:org.opencv.core Cor…
刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与“([Ljava/lang/String;)V”的东西的时候肯定会很“蛋疼”,完全不懂这是啥东西,怎么来的,有啥用处? 今天就讲讲这个“蛋疼”的东西把,俗称 方法签名 直接来个Demo 把 : 观察下面四个方法对应的签名 public void test(){}              ()V public void test1(int i){}              (I)V public int test2(){ return…
第三方海马玩模拟器 第一天的学习android采用的模拟器是海马,因此就分享给大家海马模拟器的相关步骤: 海马玩模拟器官网: http://droid4x.haimawan.com 下载相关平台的模拟器,我在此采用的是wins7 平台下的. 首先重要的一点补充下: 关于android开发环境 现在主流的Android开发环境有:  ①Eclipse + ADT + SDK ②Android Studio + SDK ③IntelliJ IDEA + SDK 现在国内大部分开发人员还是使用的Ecl…
/** *Title:总结昨天下午至今天上午的学习成果 *Author:zsg *Date:2017-8-13 / 一.了解Android 1.Android架构 Android大致可分为四层架构:Linux内核层.系统运行库层.应用框架层.应用层. Linux内核层:各种底层驱动:如蓝牙驱动.WiFi驱动等. 系统运行库层:为Android系统提供主要的特性支持.如SQLite提供数据库支持.   应用框架层:各种API. 应用层:手机上所有应用程序. 2.Android开发特色 a.四大组件…
一.全局获取Context的技巧 前面我们很多地方都使用到了Context,弹出Toast的时候.启动活动的时候.发送广播的时候.操作数据库的时候.使用通知的时候等等.或许目前来说我们并没有为得不到Context而发愁,因为我们很多地方都是在活动中进行的,而活动本身就是一个Context对象,但是,当应用程序的架构逐渐开始复杂起来的时候,很多的逻辑代码都将脱离Activity类,但此时又恰恰需要使用Context,特许这个时候就会感到有些伤脑筋了. 举个例子,在前面网络编程的最佳实践中,我们编写…
一.基于位置的服务简介 LBS:基于位置的服务.随着移动互联网的兴起,这个技术在最近的几年里十分火爆.其实它本身并不是什么时髦的技术,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置,而这种技术早在很多年前就已经出现了. 那么为什么LBS技术直到最近几年才开始流行呢?这主要是因为,在过去移动设备的功能及其有限,即使定位到了设备所在的位置,也就仅仅只是定位到了而已,我们并不能在位置的基础上进行一些其他的操作.而现在就大大不同了,有了Android系统作为载体,我们可…
昨天与今天都在配置安卓的开发环境, 搞的头都大了,步骤比较多 1. 先下载安装 java 的 jdk ,这个是最基础的组件 2. 再下载 android SDK,  http://developer.android.com/sdk/index.html  这个地址我本地打不开,结果我只能在自己的VPS服务器中先下载好,再下传到本地 下载后,解压出来,直接打开 Android SDK Manager 进行配置,下载所需的 这里至少要选中最新的Android 4.0 SDK 平台 和 Extras…
高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行解释 JVM:(Java virtual machine) java虚拟机负责解释执行字节码文件,是java程序跨平台的关键部分. 跨平台原理:所有平台的JVM向上提供给java字节码程的接口完全相同-+,向向适应不同平台的接口互不相同. 小贴士:windows操作系统(不区分大小写)通过Path环…
我是用VS2008和VS2010开发.NET程序,通过MyEclipse8.5开发JAVA程序,下面从IDE.语言.插件的不同点来做下简单的说明.但由于经验知识还有限,本篇文章只能从比较表面的以及自己常用的功能点来说明我所看到的不同点. IDE的不同点: 给我的第一感觉就是MyEclipse在开发过程编写查看代码也非常便利,甚至有很多VS没有的功能,下面列举自己现在遇到的一些不同点: 1.MyEclipse没有像VS里的#region,#endregion一样的代码段区域,在一个方法或类里,可以…