2012.11.12 10:30
ArcGIS Runtime SDK for Android v2.0安装
一般的,eclipse安装插件都是使用Help >> Install New Software安装,arcgis当然也不例外,只是今天安装的时候遇到了问题,无法在线安装,找不到content.xml。
无妨,还有离线么。可以到http://resources.arcgis.com/node/agreement/android-sdk下载,需要账号,最新的版本号是2.0,zip压缩包12M。不想到官网下的也可以戳这里http://download.csdn.net/detail/seraph021724/4758368
个人觉得eclipse的插件安装真的好方便
创建helloword
创建第一个arcgis android程序,可以使用file->new->Arcgis for Android。
我使用原来已有的程序talk,首先添加jar包,properties->java build path->libraries->add library。
arcgis android其实和js差不多,第一步就是要在layout里添加一个容器用于显示地图,在这里是mapview
<!-- MapView layout and initial extent -->
<com.esri.android.map.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
initExtent = "-19332033.11, -3516.27, -1720941.80, 11737211.28">
</com.esri.android.map.MapView>
在java文件里加载地图,地图就使用arcgisonline的地图
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
// Retrieve the map and initial extent from XML layout
map = (MapView)findViewById(R.id.map);
// Add tiled layer to MapView
tileLayer = new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
map.addLayer(tileLayer);
Log.v(TAG, "begin");
Button btnSubmit=(Button) findViewById(R.id.exit);
btnSubmit.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
finish();//关闭当前Activity
}
});
}
20121113 21:20
AVD不能调试arcgis for android程序
上面的程序如果直接在模拟器下运行果断报错,java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jincheng.talk/com.jincheng.talk.MapActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.esri.android.map.MapView。
原因似乎是因为arcgis for android使用了openGL ES。不能调试的情况根据道听途说有两种,一种是arcgis for android 1.0.1后不能用模拟器调试,还一种是android4.0.3前不能用模拟器调试。不过我使用的android版本是最新,所以,也有可能是两种情况兼而有之?我就不知道了- -
如果使用真机调试
使用真机调试的重点是手机 驱动的安装,我的三星的驱动装了卸卸了装,kies也是装了卸卸了装,就好像女生卸妆上妆,最后不知道肿么滴就好了,应该还是跟kies有关,因为是kies安装好后重起计算机后自动安装上了驱动,这时可以在CMD中使用adb devices命令看一下情况。
在真机调试时手机的开发->USB调试打勾,并保证手机内存足够,肿么在SDCARD中调试我目前还不知道,或者是要将程序安装进SDCARD?
在<application>标签中加入android:debuggable=”true”
最后,Run As–>Run Configuractions–>Target–>Deployment Target Selection Mode–>选中Launch on all compatible devices/AVD'S 下拉选择 active devices。
这个时候再运行就肯定是在手机上运行了,而且可以成功RUN起来 ,但也还是有可能报错call to OpenGL ES API with no current context (logged once per thread)这个错误似乎不影响地图,具体神马原因暂时未知- -