# Android 应用

Android开发实践:如何设置NDK的编译选项

本文详细介绍了Android NDK开发中常见的几个编译选项的配置,其中包括:APP_ABI、LOCAL_LDLIBS、LOCAL_CFLAGS、APP_STL等等,让你从此不再对 NDK 的编译参数望而生却。

原创 推荐 点赞1 阅读10000+ 收藏1 评论1 2016-01-13

Android开发实践:Android.mk模板

本文给出了一个可以自动添加源文件列表的 Android.mk 示例模板,供初学者参考。

原创 推荐 点赞2 阅读10000+ 收藏0 评论3 2016-01-10

Android Socket 发送广播包的那些坑

本文主要介绍在Android中使用Socket开发广播包程序时需要注意的编程事项,以及解决方法。

原创 推荐 点赞3 阅读10000+ 收藏0 评论0 2015-10-29

如何在命令行下使用Android NDK交叉编译工具

本文介绍了如何在命令行下像使用gcc那样使用Android NDK编译工具链,从而不用再局限于使用Android.mk来编译Android平台的库文件以及可执行文件。

原创 推荐 点赞0 阅读6423 收藏0 评论0 2015-09-07

Gradle与Makefile构建工具的对比

本文通过对比两大代码构建工具Gradle和Makefile,引导Gradle的初学者快速认识和理解Gradle的基本原理和用法,希望对熟悉Makefile的程序员能快速掌握Gradle构建工具有所帮助。

原创 推荐 点赞2 阅读10000+ 收藏1 评论1 2015-08-26

Android开发实践:实战演练隐式Intent的用法

本文通过完成一个实战任务,一步步介绍了Android开发中隐式Intent的知识点和用法,并给出了示例程序和代码。

原创 推荐 点赞1 阅读10000+ 收藏2 评论0 2015-03-18

Android开发资源推荐

马上要回家过年了,博客暂时就不更新了,作为马年最后一篇博文,给大家推荐一些Android开发资源吧,推荐原则:必须是我看过的和学习过的。因此肯定还有更多的优秀资源不在此列表中,这里也欢迎大家通过留言补充。

原创 点赞3 阅读2175 收藏0 评论2 2015-02-08

Android开发实践:自己动手编写图片剪裁应用(3)

在Android系统中,对图片的操作主要是通过Bitmap类和Matrix类来完成,本文就介绍一下图片剪裁应用中对Bitmap的一些操作,包括:打开、保存、剪裁、旋转等,我已经将这些操作都封装到了一个BitmapHelper.java类中,大家可以方便地集成到自己的项目中。

原创 推荐 点赞0 阅读2910 收藏0 评论0 2015-01-14

Android开发实践:自己动手编写图片剪裁应用(2)

本文主要介绍如何调用Android系统的图片剪裁应用,如何传递图片URL地址和参数。

原创 推荐 点赞2 阅读1663 收藏0 评论0 2015-01-12

Android开发实践:掌握Camera的预览方向和拍照方向

本文重点讨论Android Camera应用开发中的Camera预览方向和拍照方向。

原创 推荐 点赞3 阅读10000+ 收藏3 评论2 2014-12-21

Android开发实践:JNI函数签名生成器

本文简单分析了JNI关于函数签名的定义,并给出了一个Java函数签名字符串生成器。

原创 推荐 点赞0 阅读4267 收藏0 评论0 2014-12-15

Android开发实践:自定义带消息循环(Looper)的工作线程

上一篇文章提到了Android系统的UI线程是一种带消息循环(Looper)机制的线程,同时Android也提供了封装有消息循环(Looper)的HandlerThread类,这种线程,可以绑定Handler()对象,并通过Handler的sendMessage()函数向线程发送消息,通过handleMessage()函数,处理线程接收到的消息。这么说比较抽象,那么,本文就利用基础的Java类库,实现一个带消息循环(Looper)的线程,以帮助初学者理解这样一个Looper到底是怎么工作的。

原创 推荐 点赞2 阅读3965 收藏0 评论1 2014-10-17

Android开发实践:由new Handler()说开去

在Activity里new Handler()和在自己创建的Thread中new Handler()有什么区别?本文主要回答和解析了该问题。

原创 推荐 点赞2 阅读6620 收藏0 评论0 2014-10-15

Android开发实践:多线程编程小结

我们知道,Android系统为了提高程序的实时响应能力,不允许在UI线程中进行耗时的操作,否则会出现ANR异常,因此必须将耗时的任务放到非UI线程中执行。Android/Java提供了很多类来帮助大家完成异步操作,比如:Thread类,Timer类,AsyncTask类,HandlerThread类,以及Executor类。这些类都分别在什么场合下使用呢?本文简单地总结一下Android开发中常见的多线程类型和解决方案,并比较和分析了各个方案的区别,以便更好地理解和应用这些API接口。

原创 推荐 点赞1 阅读3094 收藏0 评论0 2014-10-14

Android开发实践:使用Service还是Thread

Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结。

原创 推荐 点赞1 阅读9776 收藏2 评论1 2014-08-31

Android开发实践:自定义带动画的View

前面两篇文章介绍了自定义View和ViewGroup的onMeasure和onLayout的原理和示例,本文准备介绍自定义View的第三个关键部分,即onDraw()函数的重载。本文实现了一个柱状图动画,View的动画启动后,会显示一排柱状图增长的画面,这种动画多用于财务类或者统计类的APP中。

原创 推荐 点赞2 阅读5441 收藏1 评论1 2014-08-27

Android开发实践:自定义ViewGroup的onLayout()分析

Android开发中,对于自定义View,分为两种,一种是自定义控件(继承View类),另一种是自定义布局容器(继承ViewGroup)。如果是自定义控件,则一般需要重载两个方法,一个是onMeasure(),用来测量控件尺寸,另一个是onDraw(),用来绘制控件的UI。而自定义布局容器,则一般需要实现/重载三个方法,一个是onMeasure(),也是用来测量尺寸;一个是onLayout(),用来布局子控件;还有一个是dispatchDraw(),用来绘制UI。 本文主要分析自定义ViewGroup的onLayout()方法的实现。

原创 推荐 点赞3 阅读10000+ 收藏0 评论2 2014-08-19

Android开发实践:为什么要继承onMeasure()

Android开发中偶尔会用到自定义View,一般情况下,自定义View都需要继承View类的onMeasure方法,那么,为什么要继承onMeasure()函数呢?什么情况下要继承onMeasure()?系统默认的onMeasure() 行为是怎样的 ?本文就探究探究这些问题。

原创 推荐 点赞3 阅读10000+ 收藏0 评论2 2014-08-14

Android开发实践:Android交叉编译工具链的使用

Andriod.mk和ndk-build是Android官方提供了一套封装过的Android交叉编译环境,其实,你可以不用它,而直接通过传统的Makefile文件来编译你的c/c++代码的,本文即介绍如何使用Android的交叉编译工具链来编译可用于Android平台的库文件。

原创 推荐 点赞0 阅读5971 收藏0 评论0 2014-06-29

Android开发实践:在任意目录执行NDK编译

前面一篇文章简单地介绍了Android ndk编译的一些命令行参数,一般情况下,我们都是在Android工程的jni目录下编译本地代码,或许用不到那些参数,但是如果你需要将一些第三方C/C++库,如ffmpeg、libjpeg等,编译为Android可使用的静态库/动态库,那么,你就得尝试在这些第三方库的源码目录中,配置Android的编译环境,使用NDK提供的交叉编译该工具来编译了。

原创 点赞2 阅读5618 收藏0 评论1 2014-06-19

Android开发实践:常用NDK命令行参数

Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加载和运行的库或者应用程序。

原创 点赞0 阅读10000+ 收藏0 评论0 2014-06-13

Android开发实践:拷贝assets到sdcard

本文详细介绍了Android系统的assets和res/raw目录的用法和区别,并给出了将assets目录下的文件拷贝到系统sdcard目录的封装类,供初学者学习和使用。

原创 点赞0 阅读7744 收藏0 评论0 2014-05-20

Android开发实践:利用ProGuard进行代码混淆

由于Android的代码大都是Java代码,所以挺容易被反编译的,好在Android ADT为我们集成了混淆代码的工具,一来可以混淆我们的代码,让程序被反编译后基本看不懂,另外还能起到代码优化的作用。本文主要介绍和总结Android提供的ProGuard工具。

原创 推荐 点赞1 阅读10000+ 收藏0 评论1 2014-05-18

Android开发实践:以“专业”的态度处理多线程

很多时候,我们可以照着教材实现一些基本的功能,比如用Socket发送/接收几个字符,写一个线程完成某个异步任务,但是在实际的项目中,往往不那么简单,比如需要设计Socket通信协议,需要处理Socket的连接异常断开,需要考虑在线程阻塞的情况下如何正常退出和释放资源等等,关于这些“实战经验”,前面的文章也有所涉及,以后有空准备再开个专题跟大家分享探讨一下,今天先简单地说说怎样更“专业”地在Android程序中处理多线程。

原创 点赞1 阅读1645 收藏0 评论3 2014-05-13

Android开发实践:WIFI连接功能的封装

本文则重点讲述一下如何利用Android的API连接WIFI,并给出了一个封装的WIFI连接类,提供简单的接口以供在各个代码工程中复用。

原创 推荐 点赞0 阅读10000+ 收藏0 评论0 2014-05-12

Android开发实践:WIFI扫描功能的封装

网上关于Android WIFI模块开发的博文已经很多,这里我也想给出我对WIFI模块编程的一些消化结果,将Android的一些API封装类,方便在各个Android APP中复用,简化程序开发的复杂度。

原创 推荐 点赞0 阅读9736 收藏0 评论0 2014-04-13

Android开发实践:用脚本编译Android工程

本文简单介绍了如何使用脚本来编译Android工程,并给出了一份通用编译脚本的示例。

原创 推荐 点赞1 阅读4463 收藏0 评论0 2014-03-02

Android开发实践:Java层与Jni层的数组传递

Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从Socket接收到的数据流返回给Java层。我简单地总结了一下,从Java层到Jni层,从Jni层到JAVA层,各有3种传递方式,下面用代码示例简单地介绍一下。

原创 推荐 点赞1 阅读10000+ 收藏0 评论0 2014-02-18

Android开发实践:JNI层线程回调Java函数示例

JNI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码编译生成的动态链接库进行交互。本文主要给出一份示例代码,描述如何在Android的JNI层如何开启一个线程,并在线程中回调Java层的函数。

原创 推荐 点赞2 阅读10000+ 收藏0 评论3 2014-02-12

Android开发实践:检测App的内存占用和泄漏

别以为Android程序是基于Java语言,有强大的垃圾回收机制,就完全不用担心内存问题,其实Android程序也要特别小心你的内存,因为毕竟手机不比PC机,内存是极其有限的,在内存不够的时候,系统随时会Kill掉你的程序。本文主要介绍如何检测应用占用的内存以及如何检测app是否有内存泄漏。

原创 推荐 点赞1 阅读10000+ 收藏0 评论1 2013-12-30
  • 1
  • 2
写文章