07 2012 档案
摘要:ackage com.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ArrayListDemo { public static void main(String args[]){ List<String> list = new ArrayList<String>(); list.add("luojiahui"); list.add("luojiafeng"); //方法1 Iter...
阅读全文
摘要:Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); } 效率高,以后一定要使用此种方式!...
阅读全文
摘要:Android可以通过MediaRecorder和AudioRecord这两个工具来实现录音,MediaRecorder直接把麦克风的数据存到文件,并且能够直接进行编码(如AMR,MP3等),而AudioRecord则是读取麦克风的音频流。本文使用AudioRecord读取音频流,使用AudioTrack播放音频流,通过“边读边播放”以及增大音量的方式来实现一个简单的助听器程序。PS:由于目前的Android模拟器还不支持AudioRecord,因此本程序需要编译之后放到真机运行。先贴出本文程序运行截图:PS:程序音量调节只是程序内部调节音量而已,要调到最大音量还需要手动设置系统音量。使用Au
阅读全文
摘要:AudioRecord类相对于MediaRecorder来说,更加接近底层,为我们封装的方法也更少。然而实现一个AudioRecord的音频录制程序也很简单。本实例代码如下:可惜,本实例测试时有个问题,在录制的时候,会出现buffer over。缓存泄露,待解决。package demo.camera; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; impo...
阅读全文
摘要:在Android中录音可以用MediaRecord录音,操作比较简单。但是不够专业,就是不能对音频进行处理。如果要进行音频的实时的处理或者音频的一些封装就可以用AudioRecord来进行录音了。这里给出一段代码。实现了AudioRecord的录音和WAV格式音频的封装。用AudioTrack和AudioTrack类可以进行边录边播,可以参考:http://blog.sina.com.cn/s/blog_6309e1ed0100j1rw.html我们这里的代码没有播放。但是有封装和详解,如下:package com.ppmeet; import java.io.File; import...
阅读全文
摘要:在android中采集音频的api是android.media.AudioRecord类其中构造器的几个参数就是标准的声音采集参数以下是参数的含义解释public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)Since: API Level 3Class constructor.ParametersaudioSourcethe recording source. See MediaRecorder.AudioSource f
阅读全文
摘要:Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。Client A 发信息给 Client B , A的信息首先发送信息到服务器Server ,Server接受到信息后再把A的信息广播发送给所有的Clients首先我们要在服务器建立一个ServerSocket ,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状态。Socket accept():如果接收到一个客户端Socket的连接请求,该方法将返回一个与客户端S
阅读全文
摘要:android中使用的是java的socket模型,如果你学过java网络编程,那么你对它一定不陌生。今天我主要使用TCP协议实现通信的。小知识点:UDP协议和TCP协议的不同。UDP是把数据都打成数据包,数据包上自带通信的地址,但是数据包发出去之后UDP协议不能保证你能否收到。而TCP协议要求接收方收到数据后给个回应,当发送重要数据的时候就可以选择TCP协议。UDP发送数据的量是有限的,而TCP是没有限制的,当然这导致UDP很快,TCP相对慢点。根据不同的情况,有不同的选择。一,通信的基本结构:客户端和服务器端 客户端这边是Socket类:客户端指定给某个服务器端上的某个端口发送消息。比如向
阅读全文
摘要:Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示。值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。这是两个封装得非常好的类,使用起来很方便!下面将首先创建一个SocketServer的类作为服务端如下,该服务端实现了多线程机制,可以在特定端口处监听多个客户请求,一旦有客户请求,Server总是会创建一个服务纯种来服务新来的客户,而自己继续监听。程序中accept()是一个阻塞函数,所谓阻塞性方法就是说该方法被调用后将等待客户的请求,直到有一个客户启动并请
阅读全文
摘要:1.背景自适应且不失真问题的存在制作自适应背景图片是UI开发的一个广泛问题,也是界面设计师渴望解决的问题,我相信我们彼此都深有体会。比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化;标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大家介绍一下,其实有的时候还是很有用的,但是说起来会比较麻烦,就不说这个非重点了,略去,如果大家真的要介绍,在回复中说明,我再考虑一下。Android针对这种情况,专门制作了一种.9.PNG格式来解决这个问题。2.9.PNG格式。我不想在
阅读全文
摘要:一、什么是9.png: 可能做过任务栏美化的同学都会知道,我靠,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。 千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会 看不见摸不着(详情见下面具体内容)。 9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有 的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子 了,哈哈,这就是9.png图片不能轻
阅读全文
摘要:前言最近公司的Android项目需要用到摄像头做条码或二维码的扫描,Google一下,发现一个以Apache License 2.0 开源的 ZXing项目。Zxing项目里的Android实现太过复杂多余东西太多,得对其进行简化。前提条件下载源代码:点击这里编译核心库:Zxing的主页上有介绍具体步骤,大家也可以参照这篇博文:android 条码识别软件开发全解析(续2详解绝杀!)导入项目打开Eclipse 导入 源码中的 Android 项目,然后右击项目 选择“Build path”——》"Add External Archives" 把核心库 core.jar文件加
阅读全文
摘要:一、main.xml布局文件<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
阅读全文
摘要:Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Camera程序。由于自写Camera需要对Camera API了解很充分,而且对于通用的拍照和摄像应用只需要借助系统Camera App程序就能满足要求了,为此先从调用系统Camera App应用开始来对Android Camera做个简单的使用小结。调用系统Camera App实现拍照
阅读全文
摘要: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
阅读全文
摘要:一:不同的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三个,这三个主要是为了支持多分辨率。 .
阅读全文
摘要:术语和概念屏幕尺寸屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如2.8寸,3.5寸)。简而言之,Android把所有的屏幕尺寸简化为三大类:大,正常,和小。程序可以针对这三种尺寸的屏幕提供三种不同的布局方案,然后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不需要程序员用代码来干预的。屏幕长宽比屏幕的物理长度与物理宽度的比例。程序可以为制定长宽比的屏幕提供制定的素材,只需要用系统提供的资源分类符long和notlong。分辨率屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在Android系统中,程序一
阅读全文
摘要:英文词典是手机中经常使用的应用。因此,在本文将结合Android来讨论如何实现一个Android版的英文词典。实现英文词典的方法很多。在本文使用了SQLite数据库来保存英文单词信息。系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息。当然,实现这样一个英文词典需要解决一系列技术问题。例如,如何将保存英文单词信息的数据库文件随程序(apk文件)一起发布;发布后如何打开数据库;如何在输入前几个字母后,在AutoCompleteTextView组件提示列表中显示以所输入字符串开头的所有单词。在本章将逐渐给出这些问题的详细答案。实现电子词典要解决的技术问题及初步的解答 在这里
阅读全文
摘要:本文介绍Android中的5种数据存储方式。数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:1使用SharedPreferences存储数据; 2文件存储数据;3SQLite数据库存储数据;4使用ContentProvider存储数据;5网络存储数据;下面将为大家一一详细介绍。第一种:使用SharedPreferences存储数据SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPr
阅读全文
摘要:SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。图 1. SQLite 内部结构SQLite 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQLite。SQLi
阅读全文
摘要:查阅了网上很多的资料但是对于环境变量设置介绍的不够详细,可能对于大虾来说是不屑看的,但是对于刚入门的小菜鸟还是比较高深的,呵呵。 因为我的电脑是Win7,就只有Win7的介绍。 首先你已经成功安装Android的SDK。第一步根据图示找到环境变量窗口第二步看到如下图所示窗口然后单击用户变量处新建按钮,可以用绝对路径和相对路径设置两种方式先介绍相对路径设置,不废话上图,变量名:ANDROID_SDK_HOME,变量值是android-SDK-windows的路径下面我们新建一个Path变量,变量值方框里输入.;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_
阅读全文
摘要:'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。在座android开发中我们都离不开使用adb来操作一些东西,但是当我们在命令行中使用adb的时候,有时会出现'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。这样的提示,这是我们就需要要做一些处理了。错误的原因主要是找不到adb.exe文件,在最初的android sdk中adb.exe是位于sdk目录下的tools文件夹下,因为我们只要在系统环境变量PATH中加入sdk\tools就可以了,但是后来的android sdk将adb.exe移动到platform-tools下。因为在
阅读全文
摘要:作为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
阅读全文
摘要:这段时间在学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-
阅读全文
摘要:一.读取Excel文件内容/**读取Excel文件的内容 * @param file 待读取的文件 * @return */ public static String readExcel(File file){ StringBuffer sb = new StringBuffer(); Workbook wb = null; try { //构造Workbook(工作薄)对象 wb=Workbook.getWorkbook(file); } cat...
阅读全文
摘要:jxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。使用如下:搭建环境将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。基本操作一、创建文件拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为“第一页”,
阅读全文
摘要:AsyncTask实际上就是一个线程池,AsyncTask在代码上比handler要轻量级别,而实际上要比handler更耗资源,因为AsyncTask底层是一个线程池!而Handler仅仅就是发送了一个消息队列,连线程都没有开。但是,如果异步任务的数据特别庞大,AsyncTask这种线程池结构的优势就体现出来了。android的ui线程操作并不是安全的,并且和用户直接进行界面交互的操作都必须在ui线程中进行才可以。这种模式叫做单线程模式。我们在单线程模式下编程一定要注意:不要阻塞ui线程、确保只在ui线程中访问ui组件当我们要执行一个复杂耗时的算法并且最终要将计算结果反映到ui上时,我们会发
阅读全文
摘要:本文主要介绍Android的Handler的使用方法。Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列。每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联。1. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器。2)线程间通信。在Android的应用启动时,会 创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该 对象向父线程的消息队列发送消息了。由于Android要求在UI线程
阅读全文
摘要:在Android 下面也有多线程 的概念,在C/C++中,子线程可以是一个函数 ,一般都是一个带有循环的函数,来处理某些数据 ,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束,线程就销毁。对于那些需要控制的线程,一般我们都是和互斥锁相互关联,从而来控制线程的进度,一般我们创建子线程,一种线程是很常见的,那就是带有消息循环的线程。消息循环是一个很有用的线程方式,曾经自己用C在Linux下面实现一个消息循环的机制 ,往消息队列里添加数据,然后异步的等待消息的返回。当消息队列为空的时候就会挂起线程,等待新的消息的加入。这是一个很通用的机制。在 Android,这里的
阅读全文
摘要:角色综述(回顾): (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 里的消息,只
阅读全文
摘要:android 有一种叫消息队列的说法,这里我们可以这样理解:假如一个隧道就是一个消息队列,那么里面的每一部汽车就是一个一个消息,这里我们先忽略掉超车等种种因素,只那么先进隧道的车将会先出,这个机制跟我们android 的消息机制是一样的。一、 角色描述1.Looper:(相当于隧道) 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 车队,消息隧道) 。2.Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里;或者接收Looper( 从Message Queue 取出) 所送来的消
阅读全文
摘要: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...
阅读全文
摘要: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
阅读全文
摘要:Timers主要是用来在后台运行一些任务。可以把Timer设置为守护线程。当调用cancel时所有已经安排的任务都没会被取消。Timer中的任务是依次执行的,如果一个任务花很长时间才执行完,那么它就可能影响下一个任务的开始执行的时间。TimerTask对任务的实时调度并没有保证,因为作为底层的实现依赖于Object.wait(long)方法。多个线程可以共享不为自己同步的一个定时器。Timer有两种调度模式fixed-rate(固定的调度周期),fixed-period(完整的执行周期)。默认的是fixed-period。fixed-period:public void schedule (T
阅读全文
摘要:网上很多的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的
阅读全文
摘要:工欲善其事,必先利其器。学习Android开发, 首先需要搭建开发环境。于是便有了这篇文章,记录了个人配置Android开发环境的过程。如有错误,还请指正。闲言少叙,直接进入主题。使用的操作系统:win7 32bit 。开发环境仅适用Eclipse首先了解Android SDK开发Android应用程序的系统需求:支持的操作系统:Windows XP (32-bit), Vista (32- or 64-bit), or Windows 7 (32- or 64-bit)Mac OS X 10.5.8 or later (x86 only)Linux (tested on Ubuntu Lin
阅读全文
摘要:最近在看android关于定位的方式,查了很多资料,也做了相关实验,在手机上做了测试,下面总结:一共有三种定位方式,一种是GPS,一种是通过网络的方式,一种则是在基于基站的方式,但是,不管哪种方式,都需要开启网络或者GPS首先添加权限 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>在
阅读全文
摘要:在前文Android定位功能(一)中,已经大致介绍了一下在Android平台中,和定位功能相关的类,并举例获取了位置信息。但是前文是基于Criteria定制了一个标准,通过getBestProvider()方法由Android系统自动获取最符合Criteria的LocationProvider,从而实现了定位功能。这样的做法能最大限度的保证定位功能的可实现性,但是却无法保证获取到的位置信息有最大的准确度。因为除了GPS外,其他定位方式都或多或少存在着位置偏移。 在实现GPS定位前,先了解一下GPS的部分特性: 1. GPS定位需要依靠3颗或3颗以上的卫星。 2. GPS定位受环境影响较大...
阅读全文
摘要:废话不多说,直接开始说说与实现Android定位有关的API吧。 这些API都在android.location包下,一共有三个接口和八个类。它们配合使用即可实现定位功能。 三个接口: GpsStatus.Listener: 这是一个当GPS状态发生改变时,用来接收通知的接口。 GpsStatus.NmeaListener: 这是一个用来从GPS里接收Nmea-0183(为海用电子设备制定的标准格式)信息的接口。 LocationListener: 位置监听器,用于接收当位置信息发生改变时从LocationManager接收通知的接口。 八个类: Address: 描述地址的类,...
阅读全文
摘要:其实所谓的静态注册,动态注册,是指接收广播的时候,是静态注册接收还是动态注册接收,发送的时候不分静态,动态以发送intent为例,一共分4种情况,以每次注册两个Broadcast为例:情况一,注册2个静态Broadcast如果是静态注册的,接收的一定是某一个类继承BroadcastReceiver2个java文件如下:BroadcastActivity.javapackage com.broad.test1;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import andr
阅读全文
摘要:大家在设计数据库时,碰到 性别、状态等 这些 值比较固定的列时,数据类型定义通常如下:通常都是采用 :create table `XXX` ( ........ sex int(1) not null comment '0:男 1:女', status int(1) not null comment '0:开启 1:关闭' ) 设置成枚举类型 ,也有它的道理,如下:create table `XXX` ( ........ sex enum('男','女') not null , status enum('开启',
阅读全文
摘要:Mysql给表中每个字段加 注释 COMMENT '注释内容',例如flag int(10) not null default 0 COMMENT '0表示在线,1表示离线',这样就可知道表中这个字段的实际含义我们创建的表中通常有些字段用来表示状态,时间长了,我们自己都不知道这个字段是什么含义。为此我们有时候需要给该字段加注释,使用的是Mysql的COMMENT关键字。方法:create database db_bill_test; create table t_bill_test(name varchar(20) not null default '&
阅读全文
摘要:mysql> create database ssh2;Query OK, 1 row affected (0.04 sec)mysql> use ssh2;Database changedmysql> create table user( -> id integer primary key, -> firstname varchar(200) not null, -> lastname varchar(200) not null, -> age integer -> );Query OK, 0 rows affected (0.46 sec)给
阅读全文
摘要:在Android的应用中,往往需要在执行主界面的操作时,如果要执行耗时的操作,那么应该是另外开线程的,或者是用async或者handler,今天发现其实也可以用android中的一个Intentservice去实现。下面例子讲解下。 1 例子中是一个文本框,当用户输入内容后,模拟slepp 10秒,这个时候要是不分离线程,操作的话,用户再点界面,就会死死地停在那里,甚至是出现提示,要强行CLOSE,代码如下: EditText input = (EditText) findViewById(R.id.txt_input); String strInputMsg = input.getText(
阅读全文
摘要:IntentService是Service类的子类,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService,IntentService通过worker thread处理每个Intent对象,执行完所有的工作之后自动停止Service。 说明:worker thread处理所有通过传递过来的请求,创建一个worker queue,一次只传递一个intent到onHandleIntent中,从而不必担心多线程带来的问题。处理完毕之后自动调用stopSelf()方法;默认实现了Onbind()方法,返回值为null; 模式实现了哦你Sta..
阅读全文
摘要:Android程序中访问资源时需要提供Context,一般来说只有在各种component中(Activity, Provider等等)才能方便的使用api来获取Context, 而在某些工具类中要获取就很麻烦了。为此,我们可以自定义一个Application类来实现这种功能。import android.app.Application;public class MyApplication extends Application {private static MyApplication instance;public static MyApplication getInstance() {r
阅读全文
摘要:1、给EditText追加ChangedListenerEditText editText = (EditText) findViewById(R.id.edittext);editText.addTextChangedListener(watcher); 2、描述监听private TextWatcher watcher = new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO Auto-generated method
阅读全文
摘要:被判断的Service 必须是带包名的全名通过Service的类名来判断是否启动某个服务 private boolean MusicServiceIsStart(List<ActivityManager.RunningServiceInfo> mServiceList,String className){ for(int i = 0; i < mServiceList.size(); i ++){ if(className.equals(mServiceList.get(i).service.getClassName())){ ...
阅读全文
摘要:一、判断网络连接是否可用public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) { } else { //如果仅仅是用来判断网络连接 //则可以使用 cm.getActive...
阅读全文
摘要:1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为...
阅读全文
摘要:什么是URI?Web上可用的每种资源如 HTML文档、图像、视频片段、程序等 都是一个通用资源标志符来(Universal Resource Identifier, 简称"URI")定位的。URI一般由三部分组1、访问资源的命名机制。 2、存放资源的主机名。 3、 资源自身的名称,由路径表示。 考虑下面的URI,它表示了当前的HTML 4.0规范http://www.tf988.com.com/html/html40/这个URI是这样的:这是一个可通过HTTP协议访问的资源,位于主机www.webmonkey.com.cn上,通过路径“/html/html40”访问。在HT
阅读全文

浙公网安备 33010602011771号