前言:为了得奖。。。android。。。T_T。。。
完成notepad 3部曲,又看了其他人的MapView使用例子,手痒啊,做了个简陋的都市列表,并用MapView来看卫星地图,还有目前路况(traffic,如果有的话),Zoom In/Out,纯抄袭,羞愧中。。。
基本上基于notepad样板,做了个City的list:(偷工减料,static一下了,其实应该从db或者web service上面拿。。。)
java 代码
- static?{??
- ????????cities?=?new?ArrayList<String>();??
- ????????cities.add("beijing");??
- ????????cities.add("london");??
- ????????cities.add("bangalore");??
- ????????cities.add("potsdam");??
- ????????cities.add("brasilia");??
- ??????????
- ????????geocodes?=?new?HashMap<String,?GeoPoint>();??
- ????????geocodes.put("beijing",?new?GeoPoint(40.25f,116.5f));??
- ????????geocodes.put("london",?new?GeoPoint(51.52f,-0.1f));??
- ????????geocodes.put("bangalore",?new?GeoPoint(12.97f,77.56f));??
- ????????geocodes.put("potsdam",?new?GeoPoint(52.4f,13.07f));??
- ????????geocodes.put("brasilia",?new?GeoPoint(-15.78f,-47.91f));??
- ??????????
- ????}??
接下来把notepad copy一下,改成自己的东西。。。
java 代码
- @Override??
- ????protected?void?onCreate(Bundle?icicle)?{??
- ????????super.onCreate(icicle);??
- ????????setContentView(R.layout.city_list);??
- ????????fillData();??
- ????}??
- ??????
- ????private?void?fillData()?{??
- ????????ArrayAdapter<String>?cities?=???
- ????????????new?ArrayAdapter<String>(this,?R.layout.city_row,?MapConstants.cities);??
- ????????setListAdapter(cities);??
- ????}??
- ??????
- ??????
- ????@Override??
- ????protected?void?onListItemClick(ListView?l,?View?v,?int?position,?long?id)?{??
- ????????super.onListItemClick(l,?v,?position,?id);??
- ??
- ????????Intent?i?=?new?Intent(this,?CityMap.class);?
- //这里传递选择的城市名字
- ????????i.putExtra(MapConstants.CITY_NAME,?MapConstants.cities.get(position));??
- ????????startSubActivity(i,?ACTIVITY_VIEW);??
- ????}??
- ?????
- //mapview 回来的时候显示城市list
- ????@Override??
- ????protected?void?onActivityResult(int?requestCode,?int?resultCode,?String?data,?Bundle?extras)?{??
- ????????super.onActivityResult(requestCode,?resultCode,?data,?extras);??
- ????????fillData();??
- ????}??
现在是重点了,CityMap:
java 代码
- public?class?CityMap?extends?MapActivity??
要extends MapActivity,因为是个View嘛。。。
在onCreate()里面拿到传递进去的city,然后拿city的geocode:
java 代码
- private?MapView?myMapView;??
- ??
- ????@Override??
- ????public?void?onCreate(Bundle?icicle)?{??
- ????????super.onCreate(icicle);??
- ??????????
- ????????Bundle?extras?=?getIntent().getExtras();??
- ??????????
- ????????//?get?the?geopoint?by?city??
- ????????String?city?=?extras.getString(MapConstants.CITY_NAME);??
- ??????????
- ????????GeoPoint?gp?=?MapConstants.geocodes.get(city);??
GeoPoint是个DTO/VO,里面就放两个float的经度和纬度:
java 代码
- public?class?GeoPoint?{??
- ??
- ????private?float?latitude;??
- ????private?float?longitude;??
java 代码
- myMapView?=?new?MapView(this);??
- ?
- Point?p?=?new?Point((int)?(gp.getLatitude()?*?1000000),??
- ??????????????????????????????(int)?(gp.getLongitude()?*?1000000));??
- ????????// 地图控制器。。。
- ????????MapController?mc?=?myMapView.getController();??
- ???????
- ????????mc.animateTo(p);??
- ????????// 21是最zoom in的一级,一共是1-21级
- ????????mc.zoomTo(21);??
- ????????setContentView(myMapView);??
- ????????// 切换到卫星地图
- ????????myMapView.toggleSatellite();??
搞定显示,接下来是key events:
i: zoom in
o: zoom out
s: satellite
t: traffic
java 代码
- public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{??
- ????????if?(keyCode?==?KeyEvent.KEYCODE_I)?{??
- ????????????// zoom in
- ????????????myMapView.getController().zoomTo(myMapView.getZoomLevel()?+?1);??
- ????????????return?true;??
- ????????}?else?if?(keyCode?==?KeyEvent.KEYCODE_O)?{??
- ????????????// zoom out?
- ????????????myMapView.getController().zoomTo(myMapView.getZoomLevel()?-?1);??
- ????????????return?true;??
- ????????}?else?if?(keyCode?==?KeyEvent.KEYCODE_S)?{??
- ??????????// 卫星地图
- ????????????myMapView.toggleSatellite();??
- ????????????return?true;??
- ????????}?else?if?(keyCode?==?KeyEvent.KEYCODE_T)?{??
- ????????????// traffic,路况
- ????????????myMapView.toggleTraffic();??
- ????????????return?true;??
- ????????}??
- ????????return?false;??
- ????}???
最后加个回到城市list的menu:
java 代码
- @Override??
- ????public?boolean?onCreateOptionsMenu(Menu?menu)?{??
- ????????super.onCreateOptionsMenu(menu);??
- ????????menu.add(0,?EXIT_ID,?R.string.exit_citymap);??
- ????????return?true;??
- ????}??
- ??????
- ????@Override??
- ????public?boolean?onMenuItemSelected(int?featureId,?Item?item)?{??
- ????????super.onMenuItemSelected(featureId,?item);??
- ????????switch(item.getId())?{??
- ????????case?EXIT_ID:??
- ????????????finish();??
- ????????????break;??
- ????????}??
- ??????????
- ????????return?true;??
- ????}??
1 楼 lordhong 2007-11-19
靠!有附件就发不上去,去掉附件就可以了,JE大bug啊。。。附件续上。。。
2 楼 lordhong 2007-11-19
我用adb install lordhong.MapDemo1.apk,然后显示0 bytes虾米的,emulator里面也找不到。。。怎么回事?严格按照google doc:
Running an Android Application
To run a compiled application, you will upload the .apk file to the /data/app/ directory in the emulator using the adb tool as described here:
1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
2. On the emulator, navigate to the home screen (it is best not to have that application running when you reinstall it on the emulator; press the Home key to navigate away from that application).
3. Run adb install myproject/bin/<appname>.apk to upload the executable. So, for example, to install the Lunar Lander sample, navigate in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
4. In the emulator, open the list of available applications, and scroll down to select and start your application.
—T.T...
Running an Android Application
To run a compiled application, you will upload the .apk file to the /data/app/ directory in the emulator using the adb tool as described here:
1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
2. On the emulator, navigate to the home screen (it is best not to have that application running when you reinstall it on the emulator; press the Home key to navigate away from that application).
3. Run adb install myproject/bin/<appname>.apk to upload the executable. So, for example, to install the Lunar Lander sample, navigate in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
4. In the emulator, open the list of available applications, and scroll down to select and start your application.
—T.T...
3 楼 crazyox 2007-11-19
android做出来的东西可以直接在手机上看?
4 楼 crazyox 2007-11-19
今天javaeye是怎么了? 老打不开自己的博客?
5 楼 fins 2007-11-19
lordhong 写道
我用adb install lordhong.MapDemo1.apk,然后显示0 bytes虾米的,emulator里面也找不到。。。怎么回事?严格按照google doc:
Running an Android Application
To run a compiled application, you will upload the .apk file to the /data/app/ directory in the emulator using the adb tool as described here:
1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
2. On the emulator, navigate to the home screen (it is best not to have that application running when you reinstall it on the emulator; press the Home key to navigate away from that application).
3. Run adb install myproject/bin/<appname>.apk to upload the executable. So, for example, to install the Lunar Lander sample, navigate in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
4. In the emulator, open the list of available applications, and scroll down to select and start your application.
—T.T...
Running an Android Application
To run a compiled application, you will upload the .apk file to the /data/app/ directory in the emulator using the adb tool as described here:
1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
2. On the emulator, navigate to the home screen (it is best not to have that application running when you reinstall it on the emulator; press the Home key to navigate away from that application).
3. Run adb install myproject/bin/<appname>.apk to upload the executable. So, for example, to install the Lunar Lander sample, navigate in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
4. In the emulator, open the list of available applications, and scroll down to select and start your application.
—T.T...
进 adb shell里 看不到?? 如果能看到 rm了 然后从新 push吧
6 楼 fins 2007-11-19
lordhong 写道
我用adb install lordhong.MapDemo1.apk,然后显示0 bytes虾米的,emulator里面也找不到。。。怎么回事?严格按照google doc:
Running an Android Application
To run a compiled application, you will upload the .apk file to the /data/app/ directory in the emulator using the adb tool as described here:
1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
2. On the emulator, navigate to the home screen (it is best not to have that application running when you reinstall it on the emulator; press the Home key to navigate away from that application).
3. Run adb install myproject/bin/<appname>.apk to upload the executable. So, for example, to install the Lunar Lander sample, navigate in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
4. In the emulator, open the list of available applications, and scroll down to select and start your application.
—T.T...
Running an Android Application
To run a compiled application, you will upload the .apk file to the /data/app/ directory in the emulator using the adb tool as described here:
1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
2. On the emulator, navigate to the home screen (it is best not to have that application running when you reinstall it on the emulator; press the Home key to navigate away from that application).
3. Run adb install myproject/bin/<appname>.apk to upload the executable. So, for example, to install the Lunar Lander sample, navigate in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
4. In the emulator, open the list of available applications, and scroll down to select and start your application.
—T.T...
进 adb shell里 看不到?? 如果能看到 rm了 然后从新 push吧
7 楼 yb31 2007-11-19
试了下
adb shell 里已经有了.
重新rm掉.再install,或push也不行
adb shell 里已经有了.
重新rm掉.再install,或push也不行
8 楼 lordhong 2007-11-20
今天就adb shell。。。rm了一把,NND,程序都改了,emulator竟然不把新的app load进去,真是白痴。。。害我debug半个多小时。。,
9 楼 crazyox 2007-11-20
好东西, 不知道以后做这种手机软件的公司会不会多, 前景好不好啊!
10 楼 huanghero0663 2007-11-21
crazyox 写道
好东西, 不知道以后做这种手机软件的公司会不会多, 前景好不好啊!
关注中,希望又新的东西出来^_^ 11 楼 andy54321 2007-11-26
暂时还没研究这个地步,看来差距不小呢
12 楼 qiuzhiqing 2007-11-30
跑了个HelloWorld!呵呵
差距啊~~~
差距啊~~~
13 楼 lordhong 2007-12-01
慢慢来,我也是刚起步,东抄西抄的...
14 楼 fastzch 2007-12-10
各位有在android中如何开发Web Service的教程或例子吗?