第二种:使用bindService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的onUnbind()-->onDestory(),想主动解除绑定可使用Contex.unbindService(),系统依次调用onUnbind()-->onDestory();
2.2.3 内容提供者(Content Provider)
内容提供者(Content Provider)提供了一种通用的接口机制以便应用程序之间的数据共享。通过引入一个抽象层来隐藏数据的来源,Conient Provider解除了应用程序与数据之间的耦合性,让应用服务开发者不必了解数据来源地具体实现。内容提供者是基于权限控制的,调用者通过URL的形式对其进行访问。如果两个应用程序共享同一内容,那么该内容需要保证两个程序均有读写权限。在Content Provider机制下,对于某一应用程序的内容,只要另一个应用程序具有适当的权限,后者就可以对其内容进行增加、删除以及更新。所以通过内容提供者封装一个应用程序的数据,此应用程序就可以达到与其他程序交互以及扩充数据的目的。
Android系统本身实现了多个Content Provider供应用程序使用,这些本地Content Provider可以在Android.provider包中找到,如下:
(l)Browser
可用于读取和修改网页浏览器的书签、浏览历史以及网页搜索等。
(2)CallLog
用于查看和更新呼叫历史,包括呼入列表、呼出列表和通话细节(如接听时间、呼叫人及持续时间)。
(3)Contacts
用于读取、修改和保存通讯录的信息。
(4)Mediastore
针对设备上的多媒体文件,Mediastore提供了集中的托管式访问方式,第三方的应用程序可以通过它来保存音频、视频及图片等文件,并可以设置文件访问权限为全局可见以便共享。
(5)Settings
用于访问和修改设备的设置,如蓝牙设置、手机铃声等。
2.2.4 广播接收器(Broadcast Receiver)
广播接收器(Broadcast Receiver)是一个专门用来接收广播通知信息,并作出相应处理的组件。很多广播是来源于系统本身的,比如通知时区改变、电池电量低、拍摄照片、来电或者发短信等。应用程序也可以进行广播,例如通知其他应用程序数据下载完成并处于可以状态。它可以拥有任意数量的广播接收器以对它所有感兴趣的通知信息予以响应。所有的接收器均继承自Broadcast Receiver:基类[23]。
Broadcast Receiver有两种注册方式:一种是通过AndroidManifest.xml,另一种是通过Context.registerReceiver()进行注册。一个应用程序可以注册多个Broadcast Reeeive。一个程序不但可以使用广播接收器接收广播的Intent,而且可以向系统广播Intent,此时就需要调用Context.SendBroadcast()方法来实现。
广播接收器没有用户界面,然而其可以启动一个Activity来响应它们收到的信息,或者用NotificationManage和Toast组件来快速显示通知信息。通知可以用很多种方式来吸引用户的注意力:比如背灯闪动、震动及播放声音等。一般来说是在状态栏上放一个持久显示的图标,用户就可以打开它并获取消息。
2.3 申请Google Map Api Key
1、在命令行进入其路径地址,进入到:C:\Users\用户名\.android下:然后 输入
keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android,按回车即可,这样就把MD5显示出来了。如图2.5所示
图2.5 查找MD5
2、有了MD5密码之后,就可以到Google Map API密钥的生成页面(需要谷歌邮箱):http://code.google.com/intl/zh-CN/android/maps-api-signup.html 申请Map API密钥了,在其中的MD5 fingerprint一栏中输入刚才生成的MD5密纹(目前需要翻墙才能显示MD5输入框),如图2.6所示。即可获得Api Key。 基于Android的码表程序的实现(5):http://www.youerw.com/jisuanji/lunwen_8538.html