12 2016 档案

摘要:总结了iOS开发过程中的一些常用宏,以后会陆陆续续添加进来。 字符串是否为空 1 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO  阅读全文
posted @ 2016-12-29 16:10 brave-sailor 阅读(153) 评论(0) 推荐(0) 编辑
摘要:前言 iOS 实现主题切换,相信在未来的app里也是会频繁出现的,尽管现在只是出现在主流的APP,如(QQ、新浪微博、酷狗音乐、网易云音乐等),但是现在是看颜值、追求个性的年代,所以根据用户喜好自定义/切换主题也是未来app的必备功能了。 实现思路 为了降低耦合度,决定采用的方案是使用NSObjec 阅读全文
posted @ 2016-12-29 16:08 brave-sailor 阅读(496) 评论(0) 推荐(0) 编辑
摘要:在升级到Xcode8版本以后大多数人会碰到这个问题-开开心心开发好一款app以后上传到iTunes后台提交审核,然而iTunes Connect后台活动栏里没有出现我们上传的app,确切的说是显示一会儿之后平白无故的消失,也不见Apple的邮件告知原因,只能借助强大的网络和那些具有分享精神的巨人! 阅读全文
posted @ 2016-12-29 11:50 brave-sailor 阅读(1366) 评论(1) 推荐(0) 编辑
摘要:最近iOS10出来了 Xcode也跟着升级到了8 想着App做个更新 于是修改好了代码打算上传新包 ,无奈总是发现构建不了新版本 经过各种蛋疼的查找.我列一下我的经验 1.如果是收费的App,那么是要去同意一个协议,才能构建新版本的 || 如果是免费App,那就忽略这条 2.如果你上传了新包,无论是 阅读全文
posted @ 2016-12-29 11:09 brave-sailor 阅读(695) 评论(0) 推荐(0) 编辑
摘要:本文转载至 http://blog.csdn.net/fengsh998/article/details/8307424 Key:Application can be killed immediately after launch(NSSupportsSuddenTermination)Value: 阅读全文
posted @ 2016-12-29 11:03 brave-sailor 阅读(607) 评论(0) 推荐(0) 编辑
摘要:新版本发布总会有很多坑,也会有很多改动。 一个一个填吧。。。 一、遇到的问题 1、权限以及相关设置 iOS10系统下调用系统相册、相机功能,或者苹果健康都会遇到闪退的情况,调用系统相册报错描述如下: This app has crashed because it attempted to acces 阅读全文
posted @ 2016-12-29 10:46 brave-sailor 阅读(339) 评论(0) 推荐(0) 编辑
摘要:写在前面 APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事; 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对 阅读全文
posted @ 2016-12-29 10:13 brave-sailor 阅读(1444) 评论(0) 推荐(0) 编辑
摘要:假如有 大于2 台的Tomcat servers,如何实现sticky session特点的高可靠web 服务? 方案设计: 前端使用nginx(最好是淘宝的 tengine)作为we 流量分发器,向后端的两台tomcat分发web 流量。同时为了实现sticky session功能和高可靠的web 阅读全文
posted @ 2016-12-29 10:08 brave-sailor 阅读(286) 评论(0) 推荐(0) 编辑
摘要:悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有 阅读全文
posted @ 2016-12-29 10:07 brave-sailor 阅读(393) 评论(0) 推荐(0) 编辑
摘要:我们平时写程序需要经常用到集合类,比如ArrayList、HashMap等,但是这些集合不能够实现并发运行机制,这样在服务器上运行时就会非常的消耗资源和浪费时间,并且对这些集合进行迭代的过程中不能进行操作,否则会出现错误,例如下面程序: [Java] public class CollectionM 阅读全文
posted @ 2016-12-29 10:06 brave-sailor 阅读(428) 评论(0) 推荐(0) 编辑
摘要:悲观锁: 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 阅读全文
posted @ 2016-12-29 10:06 brave-sailor 阅读(378) 评论(0) 推荐(0) 编辑
摘要:1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。 本 阅读全文
posted @ 2016-12-29 10:05 brave-sailor 阅读(290) 评论(0) 推荐(0) 编辑
摘要:Selector允许单线程处理多个Channel,能够检测一到多个Channel,并能够知晓通道是否为诸如读写事件做好准备。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个 阅读全文
posted @ 2016-12-29 10:03 brave-sailor 阅读(460) 评论(0) 推荐(1) 编辑
摘要:java.nio.channels 类 SocketChannel 针对面向流的连接套接字的可选择通道。 套接字通道不是连接网络套接字的完整抽象。必须通过调用 socket 方法所获得的关联 Socket 对象来完成对套接字选项的绑定、关闭和操作。不可能为任意的已有套接字创建通道,也不可能指定与套接 阅读全文
posted @ 2016-12-29 09:49 brave-sailor 阅读(5859) 评论(0) 推荐(0) 编辑
摘要:java.nio.channels 类 ServerSocketChannel java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.n 阅读全文
posted @ 2016-12-29 09:48 brave-sailor 阅读(2182) 评论(0) 推荐(0) 编辑
摘要:java.nio.channels 类 Selector SelectableChannel 对象的多路复用器。 可通过调用此类的 open 方法创建选择器,该方法将使用系统的默认选择器提供者创建新的选择器。也可通过调用自定义选择器提供者的 openSelector 方法来创建选择器。通过选择器的 阅读全文
posted @ 2016-12-29 09:47 brave-sailor 阅读(1812) 评论(0) 推荐(0) 编辑
摘要:面是本次学习的笔记。主要分异常类型、交互原理、Socket、ServerSocket、多线程这几个方面阐述。 异常类型 在了解Socket的内容之前,先要了解一下涉及到的一些异常类型。以下四种类型都是继承于IOException,所以很多之后直接弹出IOException即可。 UnkownHost 阅读全文
posted @ 2016-12-29 09:46 brave-sailor 阅读(320) 评论(0) 推荐(0) 编辑
摘要:java.nio.channels 类 SelectionKey 表示 SelectableChannel 在 Selector 中的注册的标记。 每次向选择器注册通道时就会创建一个选择键。通过调用某个键的 cancel 方法、关闭其通道,或者通过关闭其选择器来取消 该键之前,它一直保持有效。取消某 阅读全文
posted @ 2016-12-29 09:46 brave-sailor 阅读(6481) 评论(0) 推荐(1) 编辑
摘要:不错的文章,推荐一下。 http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们, 阅读全文
posted @ 2016-12-29 09:45 brave-sailor 阅读(250) 评论(0) 推荐(0) 编辑
摘要:实现五:统计一个单词可重复的英文文件(假设4G)中每个单词出现的次数,把结果按照英文排序放入一个文件中。并能够检索特定单词的出现次数。由于文件过大,不重复单词总数有限,需要考虑到执行速度和内存使用情况。(淘宝笔试技术题) [java] view plain copy print? import ja 阅读全文
posted @ 2016-12-29 09:43 brave-sailor 阅读(263) 评论(0) 推荐(0) 编辑
摘要:在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需 阅读全文
posted @ 2016-12-29 09:42 brave-sailor 阅读(513) 评论(0) 推荐(0) 编辑
摘要:本例是把一个大的数组求和的计算的大任务分解到在小范围内求和的小任务,然后把这些小任务之和加起来就是所求之结果。 技术:JDK8.0, Java fork-join模式下的RecursiveTask技术,override compute(). [java] view plain copy print? 阅读全文
posted @ 2016-12-29 09:42 brave-sailor 阅读(653) 评论(0) 推荐(0) 编辑
摘要:本文是Java并发包探秘的第一篇,旨在介绍一下Java并发容器中用的一些思路和技巧,帮助大家更好的理解Java并发容器,让我们更好的使用并发容器打造更高效的程序。本人能力有限,错误难免。希望及时指出。 Java并发包中有很多精心设计的高并发容器。有ConcurrentHashMap、Concurre 阅读全文
posted @ 2016-12-29 09:41 brave-sailor 阅读(316) 评论(0) 推荐(0) 编辑
摘要:它是一个基于链接节点的无界线程安全队列。该队列的元素遵循先进先出的原则。头是最先加入的,尾是最近加入的。 插入元素是追加到尾上。提取一个元素是从头提取。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。该队列不允许null元素。 Th 阅读全文
posted @ 2016-12-29 09:41 brave-sailor 阅读(320) 评论(0) 推荐(0) 编辑
摘要:Java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文 阅读全文
posted @ 2016-12-29 09:40 brave-sailor 阅读(360) 评论(0) 推荐(0) 编辑
摘要:1. 引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现, 阅读全文
posted @ 2016-12-29 09:38 brave-sailor 阅读(243) 评论(0) 推荐(0) 编辑
摘要:Java 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。AtomicInteg 阅读全文
posted @ 2016-12-29 09:34 brave-sailor 阅读(1362) 评论(0) 推荐(0) 编辑
摘要:线程不安全的HashMap 因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下H 阅读全文
posted @ 2016-12-29 09:33 brave-sailor 阅读(237) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地 阅读全文
posted @ 2016-12-29 09:32 brave-sailor 阅读(316) 评论(0) 推荐(0) 编辑
摘要:跳跃表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间),并且对并发算法友好。 关于跳跃表的具体介绍可以参考MIT的公开课:跳跃表 跳跃表的应用 Skip list(跳表)是一种可以代替平衡树的数据结构,默认是按照Key值升序的。Skip list让已排序的数据分布在多层链表中,以0-1随机数决定一个数据的向上攀升与否,通过“空间来... 阅读全文
posted @ 2016-12-29 09:30 brave-sailor 阅读(1988) 评论(0) 推荐(0) 编辑
摘要:比较Java原生的 3种Map的效率。 1. TreeMap 2. HashMap 3. ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中) 10W 50W 100W 15 阅读全文
posted @ 2016-12-29 09:29 brave-sailor 阅读(694) 评论(0) 推荐(0) 编辑
摘要:Java SE5的Java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor在客户端和执行任务之间提供了一个间接层,Executor代替客户端执行任务。Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周 阅读全文
posted @ 2016-12-29 09:28 brave-sailor 阅读(459) 评论(0) 推荐(0) 编辑
摘要:1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。 本 阅读全文
posted @ 2016-12-28 09:48 brave-sailor 阅读(448) 评论(0) 推荐(0) 编辑
摘要:我们平时写程序需要经常用到集合类,比如ArrayList、HashMap等,但是这些集合不能够实现并发运行机制,这样在服务器上运行时就会非常的消耗资源和浪费时间,并且对这些集合进行迭代的过程中不能进行操作,否则会出现错误,例如下面程序: [Java] public class CollectionM 阅读全文
posted @ 2016-12-28 09:47 brave-sailor 阅读(237) 评论(0) 推荐(0) 编辑
摘要:在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需 阅读全文
posted @ 2016-12-28 09:42 brave-sailor 阅读(316) 评论(0) 推荐(0) 编辑
摘要:图片发自简书App 图片发自简书App 在判断一个字符串类型的变量是否与某字符时相等,你可能写下这样一行代码 然后你会得到这样一行黄色提醒 原因在于 == :比较的是指针指向的地址,OC中的对象都是用指针表示的,但在这里并不能保证activityType与0相等 那么很自然可以想到使用用isEqua 阅读全文
posted @ 2016-12-27 17:01 brave-sailor 阅读(2096) 评论(0) 推荐(0) 编辑
摘要:btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlStateNormal]; //设置按钮上的自体的大小 //[btn setFont: [UIFont systemFon 阅读全文
posted @ 2016-12-27 11:59 brave-sailor 阅读(213) 评论(0) 推荐(0) 编辑
摘要:一、photoup 介绍: photoup 是一款开源的相册类app,主要功能是将本地图片提交到facebook上去,虽然他的功能和facebook的远程服务相关,但是本身是可以被当作一款 相册应用的,具有相册应用需要的绝大多数功能,可以很流畅的浏览相册,裁剪图片,缩放图片,图片的编辑;不仅如此,还 阅读全文
posted @ 2016-12-26 17:37 brave-sailor 阅读(7175) 评论(0) 推荐(1) 编辑
摘要:http://p.codekk.com/ 阅读全文
posted @ 2016-12-26 17:29 brave-sailor 阅读(356) 评论(0) 推荐(0) 编辑
摘要:从 Facebook 的 GitHub 账户中可以看到,Facebook 已经开源的开源项目有近 300 个,领域涉及移动、前端、Web、后端、大数据、数据库、工具和硬件等。Facebook 开源项目负责人 James Pearce 曾在 OSCON 解释过 Facebook 究竟为何要使用、支持和 阅读全文
posted @ 2016-12-26 17:15 brave-sailor 阅读(2065) 评论(0) 推荐(0) 编辑
摘要:标签: UI EGOTableViewPullRefresh – 最早的下拉刷新控件。 SVPullToRefresh – 下拉刷新控件。 MJRefresh – 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。 阅读全文
posted @ 2016-12-26 11:47 brave-sailor 阅读(905) 评论(0) 推荐(0) 编辑
摘要:1. 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresc 阅读全文
posted @ 2016-12-26 10:14 brave-sailor 阅读(300) 评论(0) 推荐(0) 编辑
摘要:Android开源框架库分类,挑选出最常用,最实用的开源项目,本篇主要介绍的是优秀开源框架库和项目,UI个性化控件会独立介绍。UI个性化控件 Index Dependency Injections AndroidAnnotations Butter Knife Dagger Networking A 阅读全文
posted @ 2016-12-26 10:13 brave-sailor 阅读(7379) 评论(0) 推荐(0) 编辑
摘要:假如下面的一张图片,是用来做按钮的背景图片的,原始尺寸是(128 * 112) 按钮背景图片.png 按钮背景图片.png 我们通过代码将这张图片设置为按钮的背景图片,假如我们将创建好的按钮的宽高设置为:(W=200, H=50)代码如下: 这是你发现运行的结果完全出乎你的意料(搓的无极限),如图: 阅读全文
posted @ 2016-12-24 14:27 brave-sailor 阅读(289) 评论(0) 推荐(0) 编辑
摘要:“UIButton实现上显示图片,下显示文字”这个需求相信大家在开发中都或多或少会遇见。比如自定义分享View的时候。当然,也可以封装一个item,上边imageView,下边一个label。但是既然有现成的,稍微改造下,设置下就可以,干嘛还要重复造轮子。有时候好多东西不是他们没有给设置,而是暂时没 阅读全文
posted @ 2016-12-24 14:11 brave-sailor 阅读(1290) 评论(0) 推荐(0) 编辑
摘要:Queue的成员函数 add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuch 阅读全文
posted @ 2016-12-24 10:09 brave-sailor 阅读(258) 评论(0) 推荐(0) 编辑
摘要:最近碰到一个这样的功能要求:怎么在一个类里面,实现高效并发处理下只可以初始化一次的方法? 实现方式: 1)volatile方式: [java] view plain copy /** * Created by Chengrui on 2015/7/28. */ public class MyThre 阅读全文
posted @ 2016-12-24 10:03 brave-sailor 阅读(911) 评论(0) 推荐(0) 编辑
摘要:最近在做一个项目,其中涉及到音乐播放器。当用到Genres和Art album时花费了一些时间才搞定,今天把方法草草列出,以供自己以后忘记时查看,也希望可以帮助碰到同样问题的道友!! 一、Genres的获取 先获取audioId(这个都知道吧,就不再多说了) public String getGen 阅读全文
posted @ 2016-12-23 17:09 brave-sailor 阅读(356) 评论(0) 推荐(0) 编辑
摘要:CoordinatorLayout是support.design包中的控件,它可以说是Design库中最重要的控件。 本文通过模仿知乎介绍了自定义Behavior,通过模仿百度地图介绍了BottomSheetBehavior的使用。 1.CoordinatorLayout介绍 官方对Coordina 阅读全文
posted @ 2016-12-23 14:05 brave-sailor 阅读(991) 评论(0) 推荐(1) 编辑
摘要:前言:这几天做客户回访,感触很大,用户只要是留反馈信息,总是一种恨铁不成钢的心态,想用你的app,却是因为你的技术问题,让他们不得不放弃,而你一个回访电话却让他们尽释前嫌,当最后把手机号留给他们以便随时沟通的时候,总会发来一条条的鼓励短信,让我不自主的开始内疚。哎,多么可爱的用户,多么无耐的现实。 阅读全文
posted @ 2016-12-23 11:57 brave-sailor 阅读(949) 评论(0) 推荐(0) 编辑
摘要:Behavior是Android新出的Design库里新增的布局概念。Behavior只有是CoordinatorLayout的直接子View才有意义。可以为任何View添加一个Behavior。Behavior是一系列回调。让你有机会以非侵入的为View添加动态的依赖布局,和处理父布局(Coord 阅读全文
posted @ 2016-12-23 11:00 brave-sailor 阅读(296) 评论(0) 推荐(0) 编辑
摘要:众所周知,想要让ImageView旋转的话,可以用setRotation()让其围绕中心点旋转,但这个旋转是不带动画的,也就是旋转屏幕时图片噌的一下就转过去了,看不到旋转的过程,此UI体验不大好,为此需要自定义带旋转动画的ImageView.虽然Google SDK里基本控件里没有,但在Camera 阅读全文
posted @ 2016-12-23 10:59 brave-sailor 阅读(1192) 评论(0) 推荐(0) 编辑
摘要:一、问题描述 在android开发中,使用最多的数据刷新方式就是下拉刷新了,而完成此功能我们使用最多的就是第三方的开源库PullToRefresh。现如今,google也忍不住推出了自己的下拉组件SwipeRefreshLayout,下面我们通过api文档和源码来分析学习如何使用SwipeRefre 阅读全文
posted @ 2016-12-22 10:38 brave-sailor 阅读(353) 评论(0) 推荐(0) 编辑
摘要:效果如下: 理解:Xfermode的16总模式如图 第一步: 第二步 阅读全文
posted @ 2016-12-20 10:00 brave-sailor 阅读(442) 评论(0) 推荐(0) 编辑
摘要:首先我们来创建一个叫Image的类,这个类主要用来处理与图有关的一些操作。 [java] view plain copy package org.cn.tools; import java.io.IOException; import java.io.InputStream; import andr 阅读全文
posted @ 2016-12-20 09:58 brave-sailor 阅读(568) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文为博主原创文章,未经博主允许不得转载。 版权声明:本文为博主原创文章,未经博主允许不得转载。 1.修改色相、饱和度、亮度 参看:http://blog.csdn.NET/sjf0115/article/details/7267063 2.使用透明度通道,获取图片轮廓 参看:http:/ 阅读全文
posted @ 2016-12-20 09:53 brave-sailor 阅读(3752) 评论(0) 推荐(0) 编辑
摘要:基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。 1. Java的简单类型及其封装器类 Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型b 阅读全文
posted @ 2016-12-16 19:20 brave-sailor 阅读(116) 评论(0) 推荐(0) 编辑
摘要:WebView在现在的项目中使用的频率应该还是非常高的。我个人总觉得HTML5是一种趋势。找了一些东西,在此总结。本篇最后有一个非常不错 的 Html5Activity 加载类,不想看的可以直接跳下载。 WebSettings WebSettings webSettings = mWebView . 阅读全文
posted @ 2016-12-14 13:53 brave-sailor 阅读(3221) 评论(0) 推荐(0) 编辑
摘要:package rbq.codedemo;import java.util.regex.Pattern;/** * Created by rbq on 2016/12/13. */public class NumUtils { public static boolean isNum(String s 阅读全文
posted @ 2016-12-14 09:26 brave-sailor 阅读(6001) 评论(0) 推荐(0) 编辑
摘要:Android的Studio 2.2 已经可以在官网下载了。在谷歌I / O 2016年发布了的Android Studio 2.2, 他是世界各地的数百万的Android开发人员使用的IDE的最新版本。 以加强版方式发布,2.2版本有三大主题:速度,智慧和Android平台的支持。发展与快的特点, 阅读全文
posted @ 2016-12-13 19:13 brave-sailor 阅读(283) 评论(0) 推荐(0) 编辑
摘要:android studio 中 添加.so 文件,Android Studio中添加.jar文件和.so文件无疑是一件很重要也是很头疼的问题! 1、在src/main中添加 jniLibs文件夹 ,把.so复制进去 2、在build.gradle中就添加这么几行 , 看图 复制内容到剪贴板 sou 阅读全文
posted @ 2016-12-13 17:24 brave-sailor 阅读(607) 评论(0) 推荐(0) 编辑
摘要:Android:inputType参数类型说明 androandroid:inputType="textCapCharacters"--输入普通字符 单词首字母大android:inputType="textCapSentences"--仅第一个字母大小 android:inputType="tex 阅读全文
posted @ 2016-12-13 16:52 brave-sailor 阅读(255) 评论(0) 推荐(0) 编辑
摘要:我们在做安卓开发中,一定会遇到判断某字符串是否是数字的问题,本文使用正则表达式可以很方便的判断出来,希望本文对安卓开发者有所帮助。 1 public boolean isNumeric(String str){ 2 3 Pattern pattern = Pattern.compile("[0-9] 阅读全文
posted @ 2016-12-13 16:51 brave-sailor 阅读(340) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文为博主原创文章,未经博主允许不得转载。 版权声明:本文为博主原创文章,未经博主允许不得转载。 为什么int类型的取值范围会是-2^31 ~ 2^31-1 ,为什么要减一呢? 计算机里规定,8位二进制为一个字节,拿byte来说,一个BYTE类型的数据是占1BYTE(字节)的,那么他的取值 阅读全文
posted @ 2016-12-13 15:59 brave-sailor 阅读(1418) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文为博主原创文章,未经博主允许不得转载。 版权声明:本文为博主原创文章,未经博主允许不得转载。 先看一段代码public class Hello{ public static void main(String[] args){ int i = 5 , j = 2; System.out. 阅读全文
posted @ 2016-12-13 15:58 brave-sailor 阅读(2175) 评论(0) 推荐(0) 编辑
摘要:例1: public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); System.out.p 阅读全文
posted @ 2016-12-13 15:50 brave-sailor 阅读(387) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 不得不说在AS2.2以上的版本进行开发就一个字——爽 阅读全文
posted @ 2016-12-13 13:45 brave-sailor 阅读(675) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 1.简单介绍一下NDK和JNI NDK:NDK是Na 阅读全文
posted @ 2016-12-13 13:42 brave-sailor 阅读(6470) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 一:函数指针 1.函数指针顾名思义就是定义一个指针变 阅读全文
posted @ 2016-12-13 12:00 brave-sailor 阅读(610) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 一:什么是静态内存什么又是动态内存呢? 静态内存:是 阅读全文
posted @ 2016-12-13 11:58 brave-sailor 阅读(2050) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 一:前面我们介绍了一级指针的相关概念和用发,今天我们就来说一说多级指针。 1.定义多级指针 #include<stdio.h> #include<stdlib.h> /** 多级指针 指针指向的 阅读全文
posted @ 2016-12-13 11:57 brave-sailor 阅读(794) 评论(1) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 一.什么是指针? 简单来说: 指针就是内存地址 内存 阅读全文
posted @ 2016-12-13 11:56 brave-sailor 阅读(1090) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 在学习C语言数据类型之前,我们先来回顾一下Java中 阅读全文
posted @ 2016-12-13 11:54 brave-sailor 阅读(1127) 评论(0) 推荐(0) 编辑
摘要:版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[+] 目录(?)[+] 一:JNI是什么呢? JNI:JNI是Java Na 阅读全文
posted @ 2016-12-13 11:51 brave-sailor 阅读(1121) 评论(0) 推荐(0) 编辑
摘要:相信很多人在刚开始学习Android JNI编程的时候,需要输出Log,在百度Google搜索的时候都是说需要在Android.mk中加入LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib -llog ,其实这是在eclipse开发上的方式,Android Studio并不是这么 阅读全文
posted @ 2016-12-13 11:49 brave-sailor 阅读(7273) 评论(0) 推荐(0) 编辑
摘要:前言:面对“byte b1=3;byteb2=7;byte b=b1+b2;”报错,而“int i1=3;int i2=7;int i=i1+i2;”不报错,进行了深入探究,从而引申出java基本类型之间赋值与运算操作的规律。通过自己制作的图例分析,达到对不同基本数据类型之间的赋值与运算结果的正确判 阅读全文
posted @ 2016-12-13 11:15 brave-sailor 阅读(932) 评论(0) 推荐(1) 编辑
摘要:如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将字串 String 转换成Integer ? Integer integer=Integer.val 阅读全文
posted @ 2016-12-13 11:11 brave-sailor 阅读(194) 评论(0) 推荐(0) 编辑
摘要:本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 。 在JNI的世界里也存在类似的数据类型,与Java比较起来,其范围更具严格性,如下: 1、primitive types 基本数据类型,如:i 阅读全文
posted @ 2016-12-13 10:45 brave-sailor 阅读(213) 评论(0) 推荐(0) 编辑
摘要:本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在掌握了JNI函数的使用和相关类型的映射后,以及知晓何利用javah工具生成对应的jni函数以及如何生成动态 链接库 (windos下就是.dll库,Linux就是.so库了,不懂在Window下生成dll动态库 阅读全文
posted @ 2016-12-13 10:45 brave-sailor 阅读(4631) 评论(1) 推荐(1) 编辑
摘要:本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 最近一段时间,在工作方面比较闲,分配的Bug不是很多,于是好好利用这段时间就着源代码看了些许模块, 主要方式 还是贼看贼看代码, 同时利用烧机的便利,加Log观看,基本上都能弄个脸熟 。心里想着该写点什么了?可是 阅读全文
posted @ 2016-12-13 10:44 brave-sailor 阅读(595) 评论(0) 推荐(0) 编辑
摘要:在前面的一篇博客《Android NDK开发简介》,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发。今天我再详细说明一下自己的学习经验。 JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器。 两者的沟通,首要的一 阅读全文
posted @ 2016-12-13 10:43 brave-sailor 阅读(465) 评论(0) 推荐(0) 编辑
摘要:已hello.cpp为源文件,构建一个CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(hello) add_executable(hello hello.cpp) 在目录中的build 文件夹中进行cmake ..和make ,就可以编译源文件生成可运行文件. cmake的常用命令: project 命令... 阅读全文
posted @ 2016-12-13 10:04 brave-sailor 阅读(659) 评论(0) 推荐(0) 编辑
摘要:在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑。因为很多开源的程序,比如png,都是自带编译脚本的。我们可以使用下列脚本来进行编译: 1 2 3 ./configure --prefix=/xxx/xx --enable-static=YES make 阅读全文
posted @ 2016-12-13 10:02 brave-sailor 阅读(2311) 评论(0) 推荐(0) 编辑
摘要:这里写代码片Android开发常常遇到Java调用so文件的情况,本文介绍一下Google最近新推出的应用在android studio中的方法–cmakelist.txt格式调用。 so文件分为jni格式的和非jni格式的,java只能调用jni格式的so文件。本文介绍的是针对ndk生成的非jni 阅读全文
posted @ 2016-12-13 09:48 brave-sailor 阅读(5447) 评论(0) 推荐(0) 编辑
摘要:一、JNI(Java Native Interface) 1、什么是JNI: JNI(Java Native Interface):java本地开发接口 JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++) 外部的c/c++代码也可以调用java代码 2、为什么使用JNI: 阅读全文
posted @ 2016-12-12 15:36 brave-sailor 阅读(486) 评论(0) 推荐(0) 编辑
摘要:一 javah引发的问题 BUG:D/dalvikvm( 1704): Trying to load lib /data/data/com.ulang/lib/libulangaudio.so 0x41052a38D/dalvikvm( 1704): Shared lib '/data/data/c 阅读全文
posted @ 2016-12-12 14:53 brave-sailor 阅读(703) 评论(0) 推荐(0) 编辑
摘要:自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle种配置的区别(提示:在第一次用CMake时,最好在新建项目时勾选Include C++ Suppor 阅读全文
posted @ 2016-12-12 10:00 brave-sailor 阅读(553) 评论(0) 推荐(0) 编辑
摘要:在linux 下进行开发很多人选择编写makefile 文件进行项目环境搭建,而makefile 文件依赖关系复杂,工作量很大,搞的人头很大。采用自动化的项目构建工具cmake 可以将程序员从复杂的makefile 文件中解脱出来。cmake 根据内置的规则和语法来自动生成相关的makefile 文 阅读全文
posted @ 2016-12-12 09:51 brave-sailor 阅读(26031) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.yxkfw.com/?p=7223 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj.jni; public class TestJNI { public native boolean 阅读全文
posted @ 2016-12-10 15:45 brave-sailor 阅读(1718) 评论(0) 推荐(0) 编辑
摘要:ndroid JNI 提供了很强大的支持,不仅可以采用基本类型做为参数和返回值,同时也支持自定义对象做为参数和返回值,以下举例说明。 一、定义作为输入和返回的自定义类 (仅提供两个简单类型和一个打印函数) 二. 定义和JNI通信的java封装 功能:测试输入参数和返回值都为自定义对象的本地方法,同时 阅读全文
posted @ 2016-12-10 11:15 brave-sailor 阅读(1764) 评论(0) 推荐(0) 编辑
摘要:1.c中的jstring数据类型就是java传入的String对象,经过jni函数的转化就能成为c的char*。 Java 类型 本地c类型 说明 boolean jboolean 无符号 8 位 byte jbyte 无符号 8 位 char jchar 无符号 16 位 short jshort 阅读全文
posted @ 2016-12-10 11:05 brave-sailor 阅读(1351) 评论(0) 推荐(0) 编辑
摘要:Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从Socket接收到的数据流返回给Java层。我简单地总结了一下,从Java层到Jni层, 阅读全文
posted @ 2016-12-10 11:04 brave-sailor 阅读(479) 评论(0) 推荐(0) 编辑
摘要:介绍Java如何将数据传递给C和C回调Java的方法。 java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java。C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需要调用java的方法。 Android中使用JNI七个步骤: 1.创建一个android工程 2.Java代码中写声明native 方法 public native String helloF... 阅读全文
posted @ 2016-12-10 10:35 brave-sailor 阅读(859) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.yxkfw.com/?p=7223 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj.jni; public class TestJNI { public native boolean 阅读全文
posted @ 2016-12-10 09:57 brave-sailor 阅读(228) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.shaoqun.com/a/105310.aspx 在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,工程目录下图: 以上方式的存在的问题: 1、缺少灵活性比较类似静态加 阅读全文
posted @ 2016-12-10 09:55 brave-sailor 阅读(579) 评论(0) 推荐(0) 编辑
摘要:1、 使用NDK去编译官方的FFmpeg原版的话,还得自己实现JNI层与Java层,工程量比较大。所以移植FFmpeg到Android平台时,可以移植一些已经实现JNI与JAVA层的开源项目,毕竟软件行业从来都是站在巨人肩膀上发展的。 2、移植havlenapetr/FFMpeg havlenape 阅读全文
posted @ 2016-12-10 09:33 brave-sailor 阅读(471) 评论(0) 推荐(0) 编辑
摘要:1、 在Android的Java层实现文件的读写操作是非常简单的,可以参看之前写的博文:http://blog.csdn.net/conowen/article/details/7296121 在JNI层实现文件的读写操作的话,就要使用到Linux的读写函数了。 2、打开文件 [cpp] view 阅读全文
posted @ 2016-12-10 09:32 brave-sailor 阅读(974) 评论(0) 推荐(0) 编辑
摘要:1、JNINativeMethod 结构体的官方定义 [cpp] view plain copy print? typedef struct { const char* name; const char* signature; void* fnPtr; } JNINativeMethod; [cpp 阅读全文
posted @ 2016-12-10 09:31 brave-sailor 阅读(382) 评论(0) 推荐(0) 编辑
摘要:在Java中有两类数据类型:primitive types,如,int, float, char;另一种为reference types,如,类,实例,数组。 注意:数组,不管是对象数组还是基本类型数组,都作为reference types存在,有专门的JNI方法取数组中每个元素。 1、void j 阅读全文
posted @ 2016-12-10 09:30 brave-sailor 阅读(639) 评论(0) 推荐(0) 编辑
摘要:1、Android NDK简介 NDK全称为native development kit本地语言(C&C++)开发包。而对应的是经常接触的Android-SDK,(software development kit)软件开发包(只支持Java语言开发)。 简单来说利用NDK,可以开发纯C&C++的代码 阅读全文
posted @ 2016-12-10 09:29 brave-sailor 阅读(1682) 评论(0) 推荐(0) 编辑
摘要:1、JNI简介 JNI全称为Java Native Interface(Java本地调用)。从Java1.1开始,JNI成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C++)进行交互。并非从Android发布才引入JNI的概念的。 2、JNI与NDK 简单来说,Android的NDK提供了一些交叉编译工具链和Android自带的库,这些Androi... 阅读全文
posted @ 2016-12-10 09:28 brave-sailor 阅读(550) 评论(0) 推荐(0) 编辑
摘要:百度了一下,google了一下,关于NDK引用的介绍无10篇中就有9.9篇是相同的,对于这种问题,我只能呜呼哀哉了!! 局部引用(函数内部对象类型变量):在C或C++中,局部变量表示只运行范围局限在该变量最近的 “{}”花括号里,常见的就是函数中的变量了,但局部引用和局部变量不同了,引用的主体是对象,指针, 因此,设涉及到内存回收问题。同局部变量一样,局部对象在函数执行完成后会被立即销... 阅读全文
posted @ 2016-12-09 19:07 brave-sailor 阅读(1290) 评论(0) 推荐(0) 编辑
摘要:Android studio 2.2 已经进入beta版本,新功能添加众多,NDK编程也得到了简化。官方博客介绍。本文介绍如何使用新版android studio调用 c++代码,为了超级通俗易懂,例子是最最最基本的例子,就是调用c++代码所需的最基本的地方,其余的自行添加即可。 1.下载最新版an 阅读全文
posted @ 2016-12-09 16:52 brave-sailor 阅读(728) 评论(0) 推荐(0) 编辑
摘要:1. NDK简介 Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK” 1.1 NDK产生的背景 Android平台从诞生起,就已经支持C、C++开发。 众所周知,Android的SDK基于Java实现,这意味 阅读全文
posted @ 2016-12-09 15:52 brave-sailor 阅读(990) 评论(0) 推荐(0) 编辑
摘要:1.配置Anroid Studio(这步是关键) 使用[command+,] 打开Preferences,选择External Tools,点击加号框如下图: Paste_Image.png Paste_Image.png 点击+号之后,打开Macros 配置宏命令界面,如下图: Paste_Ima 阅读全文
posted @ 2016-12-09 15:41 brave-sailor 阅读(396) 评论(0) 推荐(0) 编辑
摘要:最近在将一个小应用从eclipse开发迁移到android studio,程序中有native代码实现,在eclipse是靠Android.mk这么个mk文件来组织编译的,但到android studio上就不行了,因其是靠gradle组织,所以makefile里的配置要转换为build.gradl 阅读全文
posted @ 2016-12-09 14:50 brave-sailor 阅读(250) 评论(0) 推荐(0) 编辑
摘要:编写一个可以与C代码交互的android工程需要如下步骤: 1、JAVA代码中写声明native 方法 2、 创建jni目录,编写c代码,方法名字要对应 3、编写Android.mk文件(交叉编译的规范) 4、Ndk编译生成动态库 5、Java代码load 动态库.调用native代码 具体实现如下 阅读全文
posted @ 2016-12-09 11:15 brave-sailor 阅读(193) 评论(0) 推荐(0) 编辑
摘要:JNI(Java Native Interface,JAVA本地接口) 可以使Java代码和其他语言写的代码(如C/C++代码)进行交互。为什么要进行交互? 首先,Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低,如下图所示。其次,Jav 阅读全文
posted @ 2016-12-09 11:14 brave-sailor 阅读(177) 评论(0) 推荐(0) 编辑
摘要:参考文章: http://www.th7.cn/Program/Android/201509/550864.shtml http://www.open-open.com/lib/view/open1451917048573.html http://blog.csdn.NET/sodino/artic 阅读全文
posted @ 2016-12-09 10:29 brave-sailor 阅读(381) 评论(0) 推荐(0) 编辑
摘要:Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 阅读全文
posted @ 2016-12-09 10:10 brave-sailor 阅读(248) 评论(0) 推荐(0) 编辑
摘要:做上一个项目的时候因为与C引擎交互频繁,有时候会突然莫名其妙的的整个应用程序直接挂掉。因为我是学Java 开始的,所以对主动释放内存没多大概念(GC直接帮忙回收),后查询原因才知道是因为JNI 有些对象内存未释放引起。下面介绍下相关的资源释放。 JNI 编程实现了 native code 和 Jav 阅读全文
posted @ 2016-12-09 09:57 brave-sailor 阅读(154) 评论(0) 推荐(0) 编辑
摘要:接着上篇文章继续讲。主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输。 1、主要流程 1、 String 字符串传输 a) 上层定义一个native的方法,需要一个String 参数 ,返回一个String b) JNI对应上层的方法,打印出上层传输下来的String数据,并返回处 阅读全文
posted @ 2016-12-09 09:56 brave-sailor 阅读(180) 评论(0) 推荐(0) 编辑
摘要:刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与“([Ljava/lang/String;)V”的东西的时候肯定会很“蛋疼”,完全不懂这是啥东西,怎么来的,有啥用处? 今天就讲讲这个“蛋疼”的东西把,俗称 方法签名 直接来个Demo 把 : 观察下面四个方法对应的签名 public voi 阅读全文
posted @ 2016-12-09 09:55 brave-sailor 阅读(192) 评论(0) 推荐(0) 编辑
摘要:之前的一些文章都有涉及到上层和中间层的数据传输,简单来说,也就是参数和返回值的使用。因为中间层要做的最多的也就是数据传输与转换,下面来介绍下这方面的知识。 数据传输可分为 基本数据类型传输 和 引用数据类型的传输 , 因为数组传输也比较特别(其实数组也是引用类型),所以这里也专门分出来讲讲。 1、主 阅读全文
posted @ 2016-12-09 09:55 brave-sailor 阅读(191) 评论(0) 推荐(0) 编辑
摘要:随便谈谈为什么要Java调用C 吧: 我认为: 1、 有些公司开发Android项目的时候, 许多组件功能可能是C中已经实现了,所以我们没必要同样的功能又在java中实现一遍。例如我之前做的一个项目,公司C引擎已经很成熟了,所以直接在java中封装好接口,由C去实现。 2、 C的速度一般是java的 阅读全文
posted @ 2016-12-09 09:54 brave-sailor 阅读(158) 评论(0) 推荐(0) 编辑
摘要:许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现。 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态方法。 1、主要流程 1、 新建一个测试类TestProvider.java a) 该类提供了2个方 阅读全文
posted @ 2016-12-09 09:54 brave-sailor 阅读(129) 评论(0) 推荐(0) 编辑
摘要:经典老套流程,学编程语言东西,先学它最基础的数据类型,JNI也是如此。JNI 定义了一系列基本数据类型和引用数据类型与java想对应。 1、基本数据类型 下面一张表是描述了 Java 基本数据类型和JNI中基本数据类型的相对应关系已经占用空间大小。 随便观察就能发现,其实就基本数据类型而已,JNI基 阅读全文
posted @ 2016-12-09 09:52 brave-sailor 阅读(168) 评论(0) 推荐(0) 编辑
摘要:Hello World作为所有编程语言的起始阶段,占据着无法改变的地位,所有中/英/法/德/美……版本的编程教材中,hello world总是作为第一个TEST记录于书本之中,所有的编程第一步就在于此了!经典之中的经典!hello world! 下面介绍下NDK开发的Hello World 1、An 阅读全文
posted @ 2016-12-09 09:51 brave-sailor 阅读(152) 评论(0) 推荐(0) 编辑
摘要:程序都是调出来的。 下面我介绍下JNI层的log打印方法的使用,类似与Android sdk提供的log 1、Android 应用层 MainActivity.java 主要功能代码 a) 静态载入 So 库 b) 声明本地方法 c) 调用本地方法 代码附有注释如下: public class Ma 阅读全文
posted @ 2016-12-09 09:51 brave-sailor 阅读(264) 评论(0) 推荐(0) 编辑
摘要:工欲善其事 必先利其器 , 下面介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建。 1、Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。 1) 下载 JDK 2) 下载 Eclipse 3) 阅读全文
posted @ 2016-12-09 09:50 brave-sailor 阅读(160) 评论(0) 推荐(0) 编辑
摘要:一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。 一个工程中的源 阅读全文
posted @ 2016-12-09 09:50 brave-sailor 阅读(142) 评论(0) 推荐(0) 编辑
摘要:前些日子做了个Android项目, 引擎层 用C的, 准备写这个系类的文章,借此跟朋友来分享下我NDK开放的经验以及自己知识的总结和备忘。希望能给需要这方面资料的朋友提供一定的帮助。 主要涉及到: 环境的搭建 Android.mk 文件的 配置 HelloWorld NDK 打印信息 JNI 数据类 阅读全文
posted @ 2016-12-09 09:49 brave-sailor 阅读(132) 评论(0) 推荐(0) 编辑
摘要:package com.ble.gsense.rbq.view; /** * Created by rbq on 2016/12/8. */ import java.util.Random; import java.util.concurrent.atomic.AtomicBoolean; import android.content.Context; import android.gra... 阅读全文
posted @ 2016-12-08 15:00 brave-sailor 阅读(894) 评论(0) 推荐(0) 编辑
摘要:WebView控制调用相应的WEB页面进行展示。当碰到页面有下载链接的时候,点击上去是一点反应都没有的。原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置WebView的DownloadListener,通过实现自己的DownloadListener来实现文件的下 阅读全文
posted @ 2016-12-08 10:53 brave-sailor 阅读(351) 评论(0) 推荐(0) 编辑
摘要:摘要: 转载请注明出处:http://blog.csdn.net/allen315410/article/details/42914501 概述 今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情... 转载请 阅读全文
posted @ 2016-12-08 09:38 brave-sailor 阅读(743) 评论(0) 推荐(0) 编辑
摘要:前段时间有这样一个需求,webview显示一个带音乐的网页,在播放音乐的时候进入第三方软件暂停播放,返回时继续播放。后来参考了两篇文章解决了这个问题。 AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); OnAudioFocusChangeLis... 阅读全文
posted @ 2016-12-06 17:16 brave-sailor 阅读(3613) 评论(0) 推荐(0) 编辑
摘要:1.首先贴上项目结构图: 2.先添加一个接口文件BackHandledInterface.java,定义一个setSelectedFragment方法用于设置当前加载的Fragment在栈顶,主界面MainActivity须实现此接口,代码如下: package com.example.testde 阅读全文
posted @ 2016-12-05 20:36 brave-sailor 阅读(293) 评论(0) 推荐(0) 编辑
摘要:浏览器控件是每个开发环境都具备的,这为马甲神功提供了用武之地,windows的有webbrowser,android和ios都有webview。只是其引擎不同,相对于微软的webbrowser,android及ios的webview的引擎都是webkit,对Html5提供支持。本篇主要介绍andro 阅读全文
posted @ 2016-12-05 20:29 brave-sailor 阅读(252) 评论(0) 推荐(0) 编辑
摘要:这种方式不用在配置文件加东西 变量声明 [java] view plain copy LocalBroadcastManager broadcastManager; IntentFilter intentFilter; BroadcastReceiver mReceiver; [java] view 阅读全文
posted @ 2016-12-05 20:29 brave-sailor 阅读(591) 评论(1) 推荐(1) 编辑
摘要:WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。 webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要处理解析,渲染网页等浏览器做的事情 setWebChromeClient:辅助WebView处理Ja 阅读全文
posted @ 2016-12-05 18:08 brave-sailor 阅读(216) 评论(0) 推荐(0) 编辑
摘要:1.通常情况下 大家可能都想使用WebView打开网页内部链接而不想再调用手机浏览器,我们可以通过以下两种方法实现: (1)为WebView设置一个WebViewClient,并重写shouldOverrideUrlLoading(WebView view, String url)方法。 [java 阅读全文
posted @ 2016-12-05 17:40 brave-sailor 阅读(569) 评论(0) 推荐(0) 编辑
摘要:浏览器控件是每个开发环境都具备的,这为马甲神功提供了用武之地,windows的有webbrowser,android和ios都有webview。只是其引擎不同,相对于微软的webbrowser,android及ios的webview的引擎都是webkit,对Html5提供支持。本篇主要介绍andro 阅读全文
posted @ 2016-12-05 17:40 brave-sailor 阅读(377) 评论(0) 推荐(0) 编辑
摘要:前言: Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的onActivit 阅读全文
posted @ 2016-12-02 15:16 brave-sailor 阅读(609) 评论(0) 推荐(0) 编辑
摘要:由于项目要改成MVP模式,自然会用到了Fragment,有时候可能会需要一个Fragment里面嵌套多个Fragment,并且add完成后需要立即刷新子Fragment的View,那么这个时候就会抛出异常,先看一段代码: MainActivity.java MessageFragment.java 阅读全文
posted @ 2016-12-02 15:12 brave-sailor 阅读(2293) 评论(0) 推荐(0) 编辑
摘要:Android有碎片化的问题,当然本文说的碎片化不是指的系统版本碎片化的问题,而是Fragment组件碎片化的问题。 很久之前,在Android 3.1系统发布的时候,Google推出了使用Fragment来更加容易地开发平板和手机应用,虽然Activity还是页面结构的主体,但是却可以在其基础上使 阅读全文
posted @ 2016-12-02 15:09 brave-sailor 阅读(2387) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示