1. 首先先要获取你的debug keystore位置:
打开Eclipse--->Windows--->Preferences--->Android--->Build
查看默认的debug keystore位置,我的是C:\Documents and Settings\MYNAME \.android\debug.keystore
2. 在cmd中执行:
keytool路径在C:\Program Files (x86)\Java\jdk1.5.0_09\bin,在jdk安装路径下
keytool -list -keystore ~/.android/debug.keystore
或者是:
keytool -list -alias androiddebugkey -keystore "路径\debug.keystore " -storepass android -keypass android
双引号中的为你keystore位置, 注意,你的双引号一定要有,否则就会报错:keytool error: java.lang.RuntimeException: Usage error, and is not a legal command
执行结果:
androiddebugkey, May 4, 2009, PrivateKeyEntry,
Certificate fingerprint (MD5): XX:XX:XX:XX:XX:XX:XX:XX.............
这里的XX:XX:XX:XX:XX:XX:XX:XX.............就是你的认证指纹
3. 打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html
填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下:
感谢您注册 Android 地图 API 密钥!
您的密钥是:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4. 使用得到的apiKey:
在layout中加入MapView
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
5)同时我们也要在AndroidManifest.xml添加如下几行代码:
在 <application/>前面添加如下代码:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
这都是一些用户的权限,具体的你可以去androidAPI里去查,它里面已经给我们说的很清楚了。
同时,在<application/>里面添加如下代码:
<uses-library android:name="com.google.android.maps"/>(用户库,记住,我们使用的是谷歌公司的地图,所以要在这下面找,而这些在android的SDK里面是没有的)
ps:代码工程继承的是extends MapActivity 否则会报错。
使用Android中的Canvas.drawText()去写一串字符时,是安装这种字符的基线去写的。
Paint.getTextMetricsInt()方法可以获得跟这个text paint中的字符大小和typeface关联的baseline信息,还有ascent和descent信息。ascent是baseline之上的空间(数值为负),descent是baseline之下的空间(数值为正)。
Three of the core components of an application — activities, services, and broadcast receivers — are activated through messages, called intents.
Activity之前看过了,下面是其他部分:
一、Intent
1、Intent属性、解析
Intent是对执行某个操作的一个抽象描述,其描述的内容包括,对执行动作Action的描述、对操作数据的描述、还有4种附加属性的描述。
Action、data、catagory、extra、component、type
当指定了component属性后,就是显式的指定了目标组件,也就是接收端。如果没有明确指定目标组件,那么Android系统会使用 Intent 里的(action,data,category)三个属性来寻找和匹配接收端。
2、IntentFilter
应用程序组件可以使用IntentFilter来向系统说明自己可以响应和处理那些Intent请求。
二、Service
1、Service是运行在后台的程序。启动的方法有两种:
startService()、bindService()
2、Service lifecycle
继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法。
AIDL... 这个以后在看!
三、BroadcastReceiver
Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。
实现BroadcastReceiver:
1、继承BroadcastReceiver类
2、重写onReceive方法
3、AndroidManifest.xml中注册此Receiver,监听action
调用sendBroadcast(intent) 广播出去。
四、Content Provider
1、Content Provider提供了程序之间共享数据的方法,一个程序可以使用Content Provider 定义一个URI,
提供统一的操作接口,其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。
2、ContentResolver
ContentResolver接口可以访问ContentProvider提供的数据。
3、ContentProvider和ContentResolver当中用到了Uri的形式通常有两种,一种是指定全部数据,另一种是指定某个ID的数据。我们看下面的例子。
content://contacts/people/ 这个Uri指定的就是全部的联系人数据。
content://contacts/people/1 这个Uri指定的是ID为1的联系人的数据。
Content Provider的使用,直接参看SDK自带的NotePad实例。