摘要:
Contents:概要入门指南管理连接信息基础角色与状态处理数据包服务架构包属性调试Smack隐匿Smack扩展手册概要:Smack 是一个与XMPP服务器进行实时通讯的客户端库,包括即时信息与聊天组。Smack优势:易于使用,且功能强大的API。与用户通讯可以在只有几行代码View Code Connection connection = new XMPPConnection("jabber.org");connection.connect();connection.login("mtucker", "password");Chat 阅读全文
摘要:
这一节我们主要讲述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 阅读全文
摘要:
上一课主要讲WP7应用的一些基本常识,是作为快速上手使用的,但是这往往是不够的,我们还需要知道更多的细节,那么接下来的几课就比较有针对性的讲一些知识。当然,我们一般先从控件开始,WP7的控件基本上是来自silverlight控件,当然它也去除了一些不适合WP7的东西。首先我们来看下布局控件吧。一:StackPanel 这是一个堆栈面板,其子元素一般是按照横排,或是竖排,放置,默认为竖排。可以设置Orientation属性调整子元素排布方式。例如: <StackPanel Orientation="Horizontal"> <Button Content=& 阅读全文
摘要:
上一节中已经介绍了WP7项目组织结构,那么现在就让我们来进行实际开发吧,本来打算写一个helloworld的,但是这未免太对不起观众了,于是就改成做个登陆的例子,当然这个登陆例子我们暂时不连接远程服务,就在文件中写死吧,以后讲到远程服务的时候必然会使用到的,这个登陆例子也可以作为后续开发使用。 一:新建一个Window phone application项目。 因为我们是需要做登陆,那么必定是有用户账号,密码的,那么就建立一个类UerInfo.cs ,添加属性 public String userName; public String passworld;二:我们的登陆是要访问服务端进行验证的 阅读全文
摘要:
上2篇文章已经说明了WP7的软件生命周期,当然我们可能记得不太清楚,没关系,时间能帮我们记住,只要在以后开过程中,多多接触,就行了,现在觉得做一般水平程序员不难,只要熟悉类库API就行了,熟能生巧,当然如果你要成为高级程序员,那就不只是熟悉API那么简单的了,好了,我们开发吧。一:准备好开发环境,win7+VS2010sp1+wp7 sdk7.1注释:操作系统是必须是WIN7的,当然XP上安装VS2010 Express for window phone 也是有的。可参考:http://www.iwp7.com/archives/3882我这里用的是WP7 SDK7.1RC版,最新的,增加了. 阅读全文
摘要:
接下来讲解下:闲置侦测什么是系统闲置侦测呢?WP7系统在一段时间没有操作后,为节省电源,屏幕会变暗,而再经一段时间后,便会锁定设备,将屏幕整个关闭。进入了生命周期中的 Deactivated 事件。但如果我们应用播放音乐呢?这样肯定是不行的,于是出现了“系统闲置侦测”,要设定 Idle detection 。WP7 中,Idle detection 有两种,一种是应用级别的,一股是用户级别的:ApplicationIdleDetectinModeUserIdleDetectionModeApplicationIdleDetection 是应用程序闲置状态侦测,例如经过一段时间没有使用的话,设备 阅读全文
摘要:
很久没有上博客园写文章了,3个月前也是由于写的android文章,帮我找到第一份android工作,让我更加坚信,“机遇往往垂青那些有准备的人”,这句话。android如火如荼,wp7才刚开始,我并非着重于比较哪方技术优劣,我只是一介码农,靠学点技术,增加面试筹码,也借此提高工资而已,不管wp7以后如何,反正。我相信,现在开始,就现在,马上掌握wp7技术开发,能提高工资,不管你信不信,反正我是信了。 这里首先要讲解的就是wp7软件的生命周期,当然,很多人可能会认为这个对开发不重要,但是我要声明一点,不论怎样,你终究会懂得它的重要性,就最常见的来说吧,起码面试官会问你这个问题,于是必须放在第一课 阅读全文
摘要:
上一节中我们通过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文档,并产生事件。事件处 阅读全文
摘要:
上文中我们介绍了com.teleca.jamendo.util.FixedViewFlipper的用法以及作用,现在我们再介绍ListView中的内容,相关布局如下:View Code <android.gesture.GestureOverlayView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gestures" android:layout_width="fill_parent" android:layout_he 阅读全文
摘要:
这里首先显示我们的主界面图片共大家理解。 一步步走到了我们的主界面,首先我们看看主界面的布局文件main.xmlView Code <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2009 Teleca Poland Sp. z o.o. <android@teleca.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use 阅读全文
摘要:
我们从AndroidManifest.xml文件中看到有这么一段。<activity android:name=".activity.SplashscreenActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"></action> <category android:name="android.intent.category.LAUNCHER"></category> 阅读全文
摘要:
Jamendo是一个开源的在线音乐播放器。项目结构如图所示:粗略介绍每个包作用:com.teleca.jamendo.widget.*:用户自定义组建,主要包括进度条、错误条、专辑倒影图片控件、以及相关接口。com.teleca.jamendo.util.:用户自定义视图切换器、图片缓存、自定义触摸监听器(播放进度)、以及分享,计算音乐时间,设置语言等工具帮助类。com.teleca.jamendo.util.download.:提供下载远程音乐任务,以及相关接口回调,同时定义操作数据库相关接口,以及观察类。com.teleca.jamendo.service.*:音乐的播放服务,以及下载服务 阅读全文
摘要:
上文说到获取手机所在地的经纬度,那么有几种方式呢?通过GPS,network.而地位API中提供了LocationManager,以及Location。其中LocationManager用来获得位置服务,Location用来获取位置。具体代码如下:View Code private GeoPoint getGeoPoint(){ LocationManager locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location=location... 阅读全文