- 博客(83)
- 收藏
- 关注
原创 Java assert关键字
一、概述在C和C++语言中都有assert关键,表示断言。在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。二、语法在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查
2012-07-10 17:09:22
1043
原创 String.format用法
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。下面我们着重讨论一下
2012-07-10 14:33:19
1178
原创 android中AudioRecord使用
一 什么是音频的采样率和采样大小 自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码。即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。抽样:在音频采集中叫做采样率。由于声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,
2012-07-04 19:07:27
13117
10
原创 jni中 对c++类的重新封装
前段时间用C++实现了一个数据库连接的类,类中包含了一些连接和断开操作。我想在java中调用这些功能。jni方法提供了只是函数接口的调用而没有类的调用(有关函数接口调用的网上有很多资料非常简单,可以自行查阅),后来决定采用用c/c++函数重新封装类里的操作的方法,使得java在调用时直接调用c/c++提供里面的函数接口而不直接调用类。在看该文时建议先看一下jni的使用。现在一步步往下做。为了简
2012-06-26 18:42:45
1090
原创 android开发 NDK 编译和使用静态库、动态库
NDK 编译和使用静态库、动态库情况一:编译静态库情况二:编译动态库情况三:编译动态库+静态库情况四:已有第三方静态库(动态库),编译静态库(动态库)默认所有代码和文件在$project/jni下,否则特殊说明。情况一:编译静态库文件Android.mk:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
2012-06-25 16:17:44
1990
1
原创 如何在Android NDK中调用第三方库文件(.so) .
第一次在Android NDK的C++代码中调用第三方so文件时吃了点亏, 以为只用把.so文件放到libs/armeabi目录下即可, 没想到一ndk-build, 该so就被删除了, 报告链接错误. 通过了解, 发现NDK下调用.so时需要对其作PREBUILT处理, 步骤如下:1.在project/jni目录下创建prebuilt子目录(目录名可自定义).2.将第三方.so放到p
2012-06-25 14:33:01
4953
原创 android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
第一、四大组件间数据传递方式:启动四大组件通过Intent对象来实现,Intent的功能包括启动四大组件以及相关信息+传递数据。其中传递数据Intent提供了putExtra和对应的getExtra方法来实现:putExtra和getExtra 其实是和Bundle put和get方法一一对应的,在Intent类中有一个Bundle的mExtras成员变量所有的putExtra和g
2012-06-12 23:44:09
781
转载 JVM的内存机制介绍 .
本文分为两个部分:1,JVM specification s(JVM 规范) 对JVM 内存的描述2,Sun 的JVM 的内存机制。JVM specification 对JVM 内存的描述首先我们来了解JVM specification 中的JVM 整体架构。如下图:主要包括两个子系统和两个组件: Class loader(类装载器) 子系统,Execution eng
2012-06-06 23:58:08
319
原创 java发送post请求并接收返回
package com.test.net;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.ne
2012-06-05 23:33:08
1431
原创 Activity intent经常使用的 FLAG 集合
首先简单说下Task和Activity的关系。 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最上面。从Task中取出东西(Activity)是从最顶端取出,也就是说最先取出的是最后添加的东西(Activity),以此类推,最后取出的是第一次添加的Activity,而Activity在
2012-05-28 22:35:46
546
原创 怎样在Android中解析doc、docx、xls、xlsx格式文件?
可以直接复制实验, 解析doc,要tm-extractors-0.4.jar这个包 解析xls,要jxl.jar这个包view sourceprint?01public static String readDOC(String path) { 02
2012-05-24 15:59:33
544
原创 Android版本检测与更新
由于大家提出的注释的问题,我做了一些修改,进行了一定的注释说明,更新一下,希望大家多多支持,谢谢!package com.autoupdate;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;impor
2012-05-24 15:58:50
799
1
转载 在android中使用proguard混淆代码出现“Conversion to Dalvik format failed with error 1”错误的解决方法
在Android2.3版本以后的开发环境中,google提供了proguard代码混淆的功能(之前可以自己添加),用来保护我们辛辛苦苦写的一点代码。对于新建的工程,根目录上会自动添加proguard.cfg文件,用于代码混淆,无论你建的target是android的那个版本,都会自动的添加上。在想使用代码混淆的时候,在default.properties文件中添加proguard.conf
2012-05-15 17:41:07
377
原创 认识Android 多媒体数据库MediaStore
MediaStore这个类是android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提取。这个MediaStore包括了多媒体数据库的所有信息,包括音频,视频和图像,android把所有的多媒体数据库接口进行了封装,所有的数据库不用自己进行创建,直接调用利用ContentResolver去掉用那些封装好的接口就可以进行数据库的操作了。首先,要得到一个ContentR
2012-05-12 17:39:19
484
原创 android屏幕截图
android屏幕截图 importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importandroid.app.Activity; im
2012-05-12 15:46:57
516
原创 Android app中加载jar插件
插件的引入1、UI方面有些自定义的通用控件代码,并不局限于一个项目中使用,当需要共享使用时虽然可以采用源码方式合入新项目,但是这种原始方式增加代码布局上的复杂程度的同时,也增大了通用控件的不安全性。2、有些功能性模块,或是第三方开发,或是分阶段开发的,为了方便程序的功能扩展,我们同样考虑将功能代码封装为插件包的形式。那么在Android中是否支持插件呢?也就是是否支持类似Windows
2012-05-12 15:36:51
395
原创 VelocityTracker 使用
这个类的话是用来得到手势在屏幕上滑动的速度,也许我们用的比较少,但是还是在这里写下怎样使用VelocityTracker这个类, 第一步的话,当然是得到该类的一个实例 mVelocityTracker = VelocityTracker.obtain(); 第二步,需要告诉mVelocityTracker 这个对象你要对那个MotionEvent 进行监控(也就
2012-05-11 15:14:43
390
转载 Android中View绘制流程以及invalidate()等相关方法分析
前言: 本文是我读《Android内核剖析》第13章----View工作原理总结而成的,在此膜拜下作者 。同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 。 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的
2012-05-10 19:59:58
538
原创 android 使用ViewFlow实现左右滑动
是的,你没看错,是ViewFlow,不是ViewPager,也不是ViewFlipper。ViewFlow是一个开源的android UI库。它提供了三个组件ViewFlow、FlowIndicator和TitleFlowIndicator。它使得由Adapter产生的ViewGroup中的View可以水平滑动。一、使用ViewFlow库那么什么时候可以使用这个组件呢?文档上说,当
2012-05-07 11:06:37
1369
2
原创 Android Animation 高手必读 之一 Tweened Animations 代码实现
Android提供了两种动画的机制,可以通过SurfaceView来一帧一帧的绘制,同样也可以通过Animation机制。Animations分类Animations分为两种机制:Tweened Animations和Frame-by-FrameAnimations。Tweened类似于flash,通过旋转、移动、缩放等实现动画效果,而Frame-by-FrameAnimations是
2012-04-25 19:44:09
893
原创 android系统自带的主题与样式(theme and style)(
android中自带的主题(theme)的集锦:•android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式•android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏•android:theme="@android:style/Theme.N
2012-04-25 13:56:53
900
原创 Android开发调试时logcat不显示问题
网上搜了N多解决方法,但是很多将log级别的,用法的,更多的是如何在logcat中设置filter进行log的过滤与查看,但是我遇到的问题是,模拟器怎么着都OK,但真机、手机进行开发调试的时候却看不到log信息,这是很恼人的事情(毕竟模拟器跑起来太慢了)。刚开始没有查到好的方法,就用try catch把exception打到一个alertdialog中,但是这样只能看个大概,绕这个圈子没用,最
2012-04-15 23:28:59
420
原创 android背景选择器selector使用方法
方法一:代码实现1. 自定义状态效果可以通过代码实现,也可以通过xml定义style实现。2. 下面先介绍代码实现,通过StateListDrawable定义Button背景。3. 由于View类中PRESSED_ENABLED_STATE_SET值不是公共常量,所以通过继承来访问了。特注:其他控件的效果,比如ImageView,也可以通过这种方法实现,但是由于ImageView默
2012-03-25 00:56:12
328
原创 在Android中使用Notification
用惯了Android的人在刚拿到iPhone的时候,总是会习惯性的用手指从状态栏往下拖一下,这都是给Notification闹的。不过Notification也确实是1个不错的提示工具,不干扰正常的操作,事后还可以再翻看详细的内容,点击后还可以进入相关的画面查看更具体的内容。今天我就以代码为主的形式来介绍Notification的使用,包括基本用法,自定义的View,以及更多的控制方法。
2012-03-25 00:54:38
379
原创 Android开发中用到的几种多线程
在开发工程中线程可以帮助我们提高运行速度,Android开发中我知道的线程有四个一个是老生长谈的Thread,第二个是asyncTask,第三个:TimetTask,第四个是Looper,四个多线程各有个的有点,Thread的运行速度是最快的,AsyncTask的规范性是最棒的,其它两个也有自己的优点,下面先贴上三个列子1.Thread与Handler组合,比较常见Handler主要是帮助
2012-03-13 10:27:54
669
原创 Java命名规范
定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性。包的命名 (全部小写,由域名定义)Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都 可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。 由于互联网上的域名称是不会重复的,所以程序员一般采
2012-03-12 17:18:09
306
原创 android之ConnectivityManager简介,网络连接状态
[java] view plaincopyprint?/** * 测试ConnectivityManager * ConnectivityManager主要管理和网络连接相关的操作 * 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。 * 想访问网络状态,首先得添加权限 * Networ
2012-02-28 14:05:07
456
原创 java里面关键字throws和throw的区别
这两者虽然看起来只有一个s的区别,但是作用完全不一样/////java处理异常方式///////////////////////////////在java代码中如果发生异常的话,jvm会抛出异常对象,导致程序代码中断,这个时候jvm在做的操作就是:创建异常对象,然后抛出,比如:int i= 1;int j = 0;int res = 0;res = i/j;//除0错误System
2012-02-01 11:16:49
731
原创 软引用 弱引用 缓存
1、概述 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。 但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食
2012-01-31 16:12:48
389
原创 onRetainNonConfigurationInstance和getLastNonConfigurationInstance
第一篇: 很多网友可能知道Android横竖屏切换时会触发onSaveInstanceState,而还原时会产生onRestoreInstanceState,但是Android的Activity类还有一个方法名为onRetainNonConfigurationInstance和getLastNonConfigurationInstance这两个方法。 我们可以通过 onRetai
2012-01-31 15:12:27
316
原创 浅析 Java Thread.join()
一、在研究join的用法之前,先明确两件事情。1.join方法定义在Thread类中,则调用者必须是一个线程,例如:Thread t = new CustomThread();//这里一般是自定义的线程类t.start();//线程起动t.join();//此处会抛出InterruptedException异常 2.上面的两行代码也是在一个线程里面执行的。 以上
2012-01-12 15:25:34
324
原创 Android应用如何反馈Crash报告
为什么需要反馈Crash报告? 做Android应用程序,要尽量避免程序Crash的发生。虽然说零Crash是程序员追逐的最终目标,但是现实的情况是,程序员只能尽量的减少Crash的发生,而几乎不可能完全杜绝Crash。也许,你认为你的应用的健壮性已经近乎完美,轻松的经受住了测试部门魔鬼般的考验,但是当你的应用发布到市场,面对百万甚至千万级别的用户的时候,可能就没有那么幸运了。基于以上
2011-12-30 15:39:59
336
原创 Context类中openFileOutput ()函数的使用
函数声明:FileOutputStream openFileOutput (String name, int mode)作用:可以方便地再手机中创建文件,并返回文件输出流,用于对文件做写入操作。name:用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android会自动创建它。创建的文件保存在/data/data//files/目录中。如:/data/data
2011-12-29 15:30:25
370
原创 android的TextView使用Html来处理图片显示、字体样式、超链接等
一、[Android实例]实现TextView里的文字有不同颜色转eoe:http://www.eoeandroid.com/thread-4496-1-1.htmlimport android.text.Html;TextView t3 = (TextView) findViewById(R.id.text3); t3.setText( H
2011-12-21 18:54:07
380
原创 XmlResourceParser解析XML
xml如下: <provider id="netease_126" label="126" domain="126.com" largeicon="@drawable/provider_126_large" smallicon="@drawable/provider_126_small"> <provider id="netease_yeah" label="
2011-12-21 15:31:00
1649
原创 Android 实用工具Hierarchy Viewer实战
在Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率。其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地在开发者设计,调试和调整界面时,提高用户的开发效率。本文将以一个实际例子讲解如何使用该款工具运用在Android的开发过程中。本文的读者对象为具备初步Android知识的用户。 步骤1 设计界面
2011-12-20 23:36:23
402
原创 Android的merge用法
单独将标签做个介绍,是因为它在优化UI结构时起到很重要的作用。目的是通过删减多余或者额外的层级,从而优化整个Android Layout的结构。将通过一个例子来了解这个标签实际所产生的作用,这样可以更直观的了解的用法。建立一个简单的Layout,其中包含两个Views元素:ImageView和TextView 默认状态下我们将这两个元素放在FrameLayout中。其效果是在主视图中全屏显
2011-12-20 23:28:29
1529
原创 Android * HandleMessage的模型
Android是参考Windows的消息循环机制来实现Android自身的消息循环的。 Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环)。 Android系统中,Looper负责管理线程的消息队列和消息循环。我们可以通过Looper.myLooper()得到当前线程的Looper对象,通过Loo
2011-12-20 12:15:20
686
转载 Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用!
今天我们的教程是根据前面一节扩展进行的,如果你没有看,请点击 Android高手进阶教程(三) 查看第三课,这样跟容易方便你的理解! 在xml文件里定义控件的属性,我们已经习惯了android:attrs="",那么我们能不能定义自己的属性能,比如:test:attrs=""呢?答案是肯定的. 好了我就不卖关子了,直接进入主题。大致以下步骤: 一、在res/values
2011-12-01 09:51:56
906
转载 Android高手进阶教程(三)之----Android 中自定义View的应用.
大家好我们今天的教程是在Android教程中自定义View的学习,对于初学着来说,他们习惯了Android传统的页面布局方式,如下代码: view plainprint?"1.0" encoding="utf-8"?> "http://schemas.android.com/apk/res/android" android:orientation="vert
2011-12-01 09:49:26
798
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人