随笔分类 -  Android

摘要:Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Camera程序。由于自写Camera需要对Camera API了解很充分,而且对于通用的拍照和摄像应用只需要借助系统Camera App程序就能满足要求了,为此先从调用系统Camera App应用开始来对Android Camera做个简单的使用小结。调用系统Camera App实现拍照 阅读全文
posted @ 2012-07-24 19:36 water0504 阅读(384) 评论(0) 推荐(0)
摘要:1. 显示系统中全部Android平台: android list targets2. 显示系统中全部AVD(模拟器): android list avd3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号4. 启动模拟器: emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)5. 删除AVD(模拟器): android delete avd --name 名称6. 创建SDCard: mksdcard 1024M ~/名称.img7. AVD(模拟器)所在位置: Linux(~/.a 阅读全文
posted @ 2012-07-24 19:34 water0504 阅读(228) 评论(0) 推荐(0)
摘要:一:不同的layoutAndroid手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。二:hdpi、mdpi、ldpi在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。 . 阅读全文
posted @ 2012-07-22 21:44 water0504 阅读(181) 评论(0) 推荐(0)
摘要:术语和概念屏幕尺寸屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如2.8寸,3.5寸)。简而言之,Android把所有的屏幕尺寸简化为三大类:大,正常,和小。程序可以针对这三种尺寸的屏幕提供三种不同的布局方案,然后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不需要程序员用代码来干预的。屏幕长宽比屏幕的物理长度与物理宽度的比例。程序可以为制定长宽比的屏幕提供制定的素材,只需要用系统提供的资源分类符long和notlong。分辨率屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在Android系统中,程序一 阅读全文
posted @ 2012-07-22 21:02 water0504 阅读(469) 评论(0) 推荐(0)
摘要:英文词典是手机中经常使用的应用。因此,在本文将结合Android来讨论如何实现一个Android版的英文词典。实现英文词典的方法很多。在本文使用了SQLite数据库来保存英文单词信息。系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息。当然,实现这样一个英文词典需要解决一系列技术问题。例如,如何将保存英文单词信息的数据库文件随程序(apk文件)一起发布;发布后如何打开数据库;如何在输入前几个字母后,在AutoCompleteTextView组件提示列表中显示以所输入字符串开头的所有单词。在本章将逐渐给出这些问题的详细答案。实现电子词典要解决的技术问题及初步的解答 在这里 阅读全文
posted @ 2012-07-18 13:07 water0504 阅读(489) 评论(0) 推荐(0)
摘要:本文介绍Android中的5种数据存储方式。数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:1使用SharedPreferences存储数据; 2文件存储数据;3SQLite数据库存储数据;4使用ContentProvider存储数据;5网络存储数据;下面将为大家一一详细介绍。第一种:使用SharedPreferences存储数据SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPr 阅读全文
posted @ 2012-07-18 11:49 water0504 阅读(240) 评论(0) 推荐(0)
摘要:SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。图 1. SQLite 内部结构SQLite 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQLite。SQLi 阅读全文
posted @ 2012-07-18 11:10 water0504 阅读(316) 评论(0) 推荐(0)
摘要:查阅了网上很多的资料但是对于环境变量设置介绍的不够详细,可能对于大虾来说是不屑看的,但是对于刚入门的小菜鸟还是比较高深的,呵呵。 因为我的电脑是Win7,就只有Win7的介绍。 首先你已经成功安装Android的SDK。第一步根据图示找到环境变量窗口第二步看到如下图所示窗口然后单击用户变量处新建按钮,可以用绝对路径和相对路径设置两种方式先介绍相对路径设置,不废话上图,变量名:ANDROID_SDK_HOME,变量值是android-SDK-windows的路径下面我们新建一个Path变量,变量值方框里输入.;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_ 阅读全文
posted @ 2012-07-18 10:03 water0504 阅读(246) 评论(0) 推荐(0)
摘要:'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。在座android开发中我们都离不开使用adb来操作一些东西,但是当我们在命令行中使用adb的时候,有时会出现'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。这样的提示,这是我们就需要要做一些处理了。错误的原因主要是找不到adb.exe文件,在最初的android sdk中adb.exe是位于sdk目录下的tools文件夹下,因为我们只要在系统环境变量PATH中加入sdk\tools就可以了,但是后来的android sdk将adb.exe移动到platform-tools下。因为在 阅读全文
posted @ 2012-07-18 10:02 water0504 阅读(1064) 评论(0) 推荐(0)
摘要:作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容:[ht 阅读全文
posted @ 2012-07-17 18:08 water0504 阅读(191) 评论(0) 推荐(0)
摘要:这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。一、反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7- 阅读全文
posted @ 2012-07-17 18:07 water0504 阅读(175) 评论(0) 推荐(0)
摘要:AsyncTask实际上就是一个线程池,AsyncTask在代码上比handler要轻量级别,而实际上要比handler更耗资源,因为AsyncTask底层是一个线程池!而Handler仅仅就是发送了一个消息队列,连线程都没有开。但是,如果异步任务的数据特别庞大,AsyncTask这种线程池结构的优势就体现出来了。android的ui线程操作并不是安全的,并且和用户直接进行界面交互的操作都必须在ui线程中进行才可以。这种模式叫做单线程模式。我们在单线程模式下编程一定要注意:不要阻塞ui线程、确保只在ui线程中访问ui组件当我们要执行一个复杂耗时的算法并且最终要将计算结果反映到ui上时,我们会发 阅读全文
posted @ 2012-07-17 10:41 water0504 阅读(228) 评论(0) 推荐(0)
摘要:本文主要介绍Android的Handler的使用方法。Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列。每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联。1. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器。2)线程间通信。在Android的应用启动时,会 创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该 对象向父线程的消息队列发送消息了。由于Android要求在UI线程 阅读全文
posted @ 2012-07-17 10:39 water0504 阅读(456) 评论(2) 推荐(0)
摘要:在Android 下面也有多线程 的概念,在C/C++中,子线程可以是一个函数 ,一般都是一个带有循环的函数,来处理某些数据 ,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束,线程就销毁。对于那些需要控制的线程,一般我们都是和互斥锁相互关联,从而来控制线程的进度,一般我们创建子线程,一种线程是很常见的,那就是带有消息循环的线程。消息循环是一个很有用的线程方式,曾经自己用C在Linux下面实现一个消息循环的机制 ,往消息队列里添加数据,然后异步的等待消息的返回。当消息队列为空的时候就会挂起线程,等待新的消息的加入。这是一个很通用的机制。在 Android,这里的 阅读全文
posted @ 2012-07-17 10:35 water0504 阅读(377) 评论(0) 推荐(0)
摘要:角色综述(回顾): (1)UI thread 通常就是main thread ,而Android 启动程序时会替它建立一个MessageQueue 。(2) 当然需要一个Looper 对象,来管理该MessageQueue 。(3) 我们可以构造Handler 对象来push 新消息到Message Queue 里;或者接收Looper( 从Message Queue 取出) 所送来的消息。(4) 线程A 的Handler 对象可以传递给别的线程,让别的线程B 或C 等能送讯息来给线程A( 存于A 的Message Queue 里) 。(5) 线程A 的Message Queue 里的消息,只 阅读全文
posted @ 2012-07-17 10:33 water0504 阅读(129) 评论(0) 推荐(0)
摘要:android 有一种叫消息队列的说法,这里我们可以这样理解:假如一个隧道就是一个消息队列,那么里面的每一部汽车就是一个一个消息,这里我们先忽略掉超车等种种因素,只那么先进隧道的车将会先出,这个机制跟我们android 的消息机制是一样的。一、 角色描述1.Looper:(相当于隧道) 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 车队,消息隧道) 。2.Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里;或者接收Looper( 从Message Queue 取出) 所送来的消 阅读全文
posted @ 2012-07-17 10:32 water0504 阅读(155) 评论(0) 推荐(0)
摘要:Android 的Timer 一般如下面所写Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }; final Handler handler = new Handler() { public void handleM... 阅读全文
posted @ 2012-07-17 09:36 water0504 阅读(181) 评论(0) 推荐(0)
摘要:Android Timer计时器,实际上Timer和TimerTask都是JDK自带的功能,两个类结合可以实现定时任务执行一次,或者定期重复执行任务。这个例子实现的模拟发射火箭……package basic.android.timer;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;imp 阅读全文
posted @ 2012-07-17 09:31 water0504 阅读(206) 评论(0) 推荐(0)
摘要:Timers主要是用来在后台运行一些任务。可以把Timer设置为守护线程。当调用cancel时所有已经安排的任务都没会被取消。Timer中的任务是依次执行的,如果一个任务花很长时间才执行完,那么它就可能影响下一个任务的开始执行的时间。TimerTask对任务的实时调度并没有保证,因为作为底层的实现依赖于Object.wait(long)方法。多个线程可以共享不为自己同步的一个定时器。Timer有两种调度模式fixed-rate(固定的调度周期),fixed-period(完整的执行周期)。默认的是fixed-period。fixed-period:public void schedule (T 阅读全文
posted @ 2012-07-17 09:25 water0504 阅读(528) 评论(0) 推荐(0)
摘要:网上很多的Android在IDE eclipse的开发环境教程,ADT的就安装肯定也在里面啦ADT的安装都是一个在线安装地址https://dl-ssl.google.com/android/eclipse/但是发现是这种在线安装方法不好,麻烦,时间长,所以都去找离线安装包啦,根据关键词,你可以找到ADT 12的zip下载地址:http://dl.google.com/android/ADT-12.0.0.zip但是我的eclipse 是最新版本的3.7.1,开发环境也要跟上吧,那现在ADT的最新版本是什么呢?这里有一个技巧,那就是,可以利用在线安装地址获取当前适合eclipse 3.7.1的 阅读全文
posted @ 2012-07-15 17:25 water0504 阅读(257) 评论(0) 推荐(0)