随笔分类 - Android基础
摘要:上文说到获取手机所在地的经纬度,那么有几种方式呢?通过GPS,network.而地位API中提供了LocationManager,以及Location。其中LocationManager用来获得位置服务,Location用来获取位置。具体代码如下:View Code private GeoPoint getGeoPoint(){ LocationManager locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location=location...
阅读全文
摘要:这一节我们主要讲述google map在android手机中的使用,我们一般是用google map API+Location API,就是地图API+地位API,如果加上一些服务端以及网络方面的知识,我们可以制作出很有创意的应用,而这些正是现在流行的LBS,主要涉及技术有地图API+地位API+javaee 服务端+手机通信+XMPP协议(主要是及时通信)。可以发挥自己的想象作出好的有创意的应用,比如说,我们在车上看见一美女,而又不好意思打招呼,但她手机中也有该LBS应用,那么我们可以查询当前多少米范围内有多少人使用这个应用,然后进一步锁定到车上的她,然后,你懂的。又或者我们出差在某地,打.
阅读全文
摘要:上一节中我们讲解了本地Service,这一节主要是讲解远程Service,这里涉及到了AIDL。好吧,老规矩,先来点基础知识:一.基础知识AIDL的作用 在Android平台,每个应用程序App都运行在自己的进程空间。通常一 个进程不能访问另一个进程的内存空间(一个应用不能访问另一个应用),如果想沟通,需要将对象分解成操作系统可以理解的基本单元,Android提供了AIDL来处理。 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess commun..
阅读全文
摘要:android中服务是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。你可以在服务中开一一个线程,在线程中做耗时动作。那么究竟Service怎么使用呢?老规矩,先来点基础知识。一.基础知识服务一般分为两种:1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startSe
阅读全文
摘要:Android 系统里定义了各种各样的广播,如电池的使用状态,电话的接收和短信的接收,开机启动都会产生一个广播。当然用户也可以自定义自己的广播。既然说到广播,那么必定有一个广播发送者,以及广播接收器。系统广播的发送者为系统,自定义广播当然是用户定义的了。我们可以定义一个广播接收器,用来接收我们感兴趣的广播,不论是系统广播还是用户自定义广播。这个广播接收器必须继承至BroadcastReceiver。老规矩,先来点基础知识。一.基础知识1:定义一个广播接收器,继承BroadcastReceiver。2:在广播接收器中onReceive接收广播的Action并作出处理。不同的广播对于一组不同的Ac
阅读全文
摘要:通常在android应用中,数据都是在本应用沙盒之内的,其他外部应用不能够访问,那么如果一个应用需要访问另外一个应用的数据,怎么办呢?那就把另外一个应用的数据公布出来,比如android中的通讯录数据,这些数据是以ContentProvider方式提供与其他应用访问的。 那么我们也可以定义自己的ContentProvider来使跨应用共享数据。数据具体的存贮方式可以为数据库、文件,持久化或非持久化存储的其他形式。在这里我们还是使用sqlite数据库存贮数据吧。老规矩,先来点基础知识。一.基础知识1:URI是什么?统一资源标识符,用来标识某一资源的。通常一个Uri主要由以三部分组成:schem.
阅读全文
摘要:我想大家对于android的系统配置界面应该不会陌生吧,即便陌生,那么下面的界面应该似曾相识吧,假若还是不认识,那么也没有关系,我们这一节主要就是介绍并讲解android 中系统配置界面的使用,相信大家看完本节后,一定能知道怎么使用这些东西了。从上述界面中(其实是一个界面),我们可以看到有2组元素,第一组为:自动更新,更新频率。第二组为:是否登录,账号,密码。其实分组是为了方便管理而已。这里主要使用到了选择,列表,编辑框等Preference.我们还是来温习下基础知识吧。一.基础知识通常我们开发一个程序时,会需要给用户提供一个设置界面,使用户可以对程序的一些参数进行设置。通常我们使用Prefe
阅读全文
摘要:上一节中我们通过http协议,采用HttpClient向服务器端action请求数据。当然调用服务器端方法获取数据并不止这一种。WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。 我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,做过JAVA ME的人都知道有KSOAP这个第三方的类库,可以帮助我们获取服务器端webServ
阅读全文
摘要:在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有一:基于Http协议获取数据方法。二:基于SAOP协议获取数据方法,三:忘了-------那么我们的这篇文章主要是将关于使用Http协议获取服务器端数据,这里我们采取的服务器端技术为java,框架为Struts2,或者可以有Servlet,又或者可直接从JSP页面中获取数据。那么,接下来我们便开始这一路程:首先:编写服务器端方法,我这里采用的MVC框架是Struts2,目的很单纯,就是为了以后做个完整的商业项目,技术配备为:and
阅读全文
摘要:前面几章节所讲的SimpleAdapter、CursorSimpleAdapter,ArrayAdapter都是继承自BaseAdapter的,他们都有各自的使用特点,如下:ArrayAdapter 适用于数据源通常是Sring[] 或者是List<String>SimpleAdapter 适用于数据源通常是List<? extends Map<String, ?>> CursorSimpleAdapter 适用于数据源通常是Cursor但是他们都有各自的适用范围,有些时候我们必须自定义一个Adapter类,继承之BaseAdpater。那么如何来实现呢?具
阅读全文
摘要:上一节中使用ListView+SimpleAdapter来展示列表数据,但是它只接受List<? extends Map<String, ?>> 类型数据,很多时候我们的数据是从SQLite数据库中来的,通常SQLite返回的是一个Cursor类型数据,要完全使用在SimpleAdapter中,只能把Cursor数据取出再放在List<? extends Map<String, ?>>中,这样一来做了一些无用功,耗费了计算,那么有没有更好的办法直接把Cursor放在一个适配器中,用来为ListView展示数据呢? 很明显的,有了SimpleCur
阅读全文
摘要:上一节中一些列表集合数据到手机屏幕时,通常采用ListView组件+ArrayAdapter.虽然它能为我们提供展示数据列表的能力,但是展示的项却不能定制,如果我们的项是由2个TextView组成的,它就无能为力了。项目中大部分的不单单是展示简单的项模板,更多时候,我们可以对项模板进行一些定制,来满足我们的需求,假设项模板需要展示2个TextView 呢?怎么办?我们可以使用SimpleAdapter+ListView来实现。SimpleAdapter其中一个构造函数如下:public SimpleAdapter (Context context, List<? extends Map&
阅读全文
摘要:通常我们需要展示一些列表集合数据到手机屏幕时,通常采用ListView组件,该组件提供一些可以定制的列表展示功能,但是它需要数据源,android通过数据适配器来沟通ListView与数据源。可以充当ListView数据设配器的adapter有很多,可定制性也更加广泛。通常有如下几种:ArrayAdapter SimpleAdapter CursorAdapter ,他们都来继承自BaseAdapter。结构继承关系public interface ListAdapter extends Adapter android.widget.ListAdapter子类及间接子类直接子类 ArrayAd
阅读全文
摘要:上一节中,我们使用SAX方式解析xml文档, SAX方式是基于事件驱动的。当然android的事件机制是基于回调函数的。在这一节中,我们用另外一种方式解析xml文档,这种方式也是基于事件驱动的,与SAX方式一样,它就是PULL方式。只不过PULL方式读xml回调方法返回的是数字。 读取到xml的声明返回 START_DOCUMENT; 读取到xml的结束返回 END_DOCUMENT ; 读取到xml的开始标签返回 START_TAG 读取到xml的结束标签返回 END_TAG 读取到xml的文本返回 TEXT xml数据结果还是采用我们先前使用的river.xml文件。采用PULL方式与SA
阅读全文
摘要:上一节中,我们使用DOM方式解析xml文档,该方式比较符合我们日常思维方式,容易上手,但是它直接把文档调入内存中,比较耗内存。在这里我们可以用另外一种方式解析xml,这个就是SAX方式。SAX即是:Simple API for XMLSAX是基于事件驱动的。当然android的事件机制是基于回调函数的,在用SAX解析xml文档时候,在读取到文档开始和结束标签时候就会回调一个事件,在读取到其他节点与内容时候也会回调一个事件。既然涉及到事件,就有事件源,事件处理器。在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并产生事件。事件处
阅读全文
摘要:在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xml,xml是与平台无关的特性,被广泛运用于数据通信中,那么在android中如何解析xml文件数据呢?通常有三种方式:DOM,SAX,PULL在这一节中我们使用DOM方式来处理。DOM方式解析xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据的,但是这样一来,如果xml文件很大呢?手机CPU处理能力当然不能与PC机器比,因此在处理效率方面就相对差了,当然这是对于其他方式处理xml文档而言。解析xml文档,当然必须有xml文档文件啦,我自己胡乱弄了一个river,放
阅读全文
摘要:在第一节中,我们使用Handler、Thread/Runnable 、URL、HttpURLConnection等等来进行异步下载网络图片。然后第二节中换了AsyncTask方式。那么这一节我们再应用其他方式,这个方式与第一节有点雷同,感觉走了一圈回到原地,只是风景更加美丽。人生很多时候也是如此,从NULL中来再回到NULL中。那么它是谁呢?java.util.concurrentjava.util.concurrent 是在并发编程中很常用的实用工具类。ExecutorService类:具有服务生命周期的Executors。Executors 类:执行器,将为你管理Thread 对象。我们知
阅读全文
摘要:在上一节中,我们使用Handler、Thread/Runnable 、URL、HttpURLConnection等等来进行异步下载网络图片。但是采用这种方式有一些缺点,如下:线程的开销较大,如果每个任务都要创建一个线程,那么程序的效率要低很多。线程无法管理,匿名线程创建并启动后就不受程序的控制了,如果有很多个请求发送,那么就会启动非常多的线程,系统将不堪重负。 另外,前面已经看到,在新线程中更新UI还必须要引入handler,这让代码看上去非常臃肿。那么有没有比较更好好的实现方式呢?这个可以有!它就是AsyncTaskAsyncTask的特点是任务在主UI线程之外运行,而回调方法是在主UI线程
阅读全文
摘要:项目中有时候需要获取网络上的图片,并下载下来到手机客户端显示。怎么做呢?实现思路是:1:在UI线程中启动一个线程,让这个线程去下载图片。2:图片完成下载后发送一个消息去通知UI线程2:UI线程获取到消息后,更新UI。这里的UI线程就是主线程。这两个步骤涉及到一些知识点,即是:ProgressDialog,Handler,Thread/Runnable,URL,HttpURLConnection等等一系列东东的使用。现在让我们开始来实现这个功能吧!第一步:新建项目。第二步:设计好UI,如下所示View Code <?xml version="1.0" encodi
阅读全文