返回信息流如图。一个android application,从同学的机子上就可以运行,到我的电脑上就不行。
JDK,eclipse和sdk都已经重装过一边了。。还是不行。。。求高人解决~~~~
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #5464同步于 2012/2/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
木招了,求助论坛。~~
conghaolin
2012/2/29镜像同步22 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 bixiaopeng 的大作中提到: 】
: 可能那一行有个API在你同学那返回值不为空。
同样的代码在不同的电脑上运行结果会不同?额。。。。。。。。
我这是整个把一个project拷过来的,而且eclipse没有error或者warnning。
就是run congfiguration的时候会forced stop.
【 在 bixiaopeng 的大作中提到: 】
: 有可能。。。你把那几行的代码贴看看
就是书上的一个例子,直接从书上提供的网站下载的,加了三个button。我直接运行例子也不通过,所以应该不是我加的这3个button的事。
谢谢啦
public class Activity01 extends MapActivity
{
public MapController mapController;
public MyLocationOverlay myPosition;
public MapView myMapView;
private static final int ZOOM_IN=Menu.FIRST;
private static final int ZOOM_OUT=Menu.FIRST+1;
Button start,stop,mute;
TextView textview;
MediaPlayer myplayer;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//=========================================================
start=(Button)findViewById(R.id.start);
start.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
}
});
//=======================================================
stop=(Button)findViewById(R.id.stop);
stop.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
}
});
//=========================================================
mute=(Button)findViewById(R.id.silent);
mute.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
}
});
//===========================================================
setContentView(R.layout.main);
//取得LocationManager实例
LocationManager locationManager;
String context=Context.LOCATION_SERVICE;
locationManager=(LocationManager)getSystemService(context);
myMapView=(MapView)findViewById(R.id.MapView01);
//取得MapController实例,控制地图
mapController=myMapView.getController();
//设置显示模式
myMapView.setSatellite(true);
//myMapView.setStreetView(true);
myMapView.setTraffic(true);
//设置地图支持点击
myMapView.setClickable(true);
//设置缩放控制,这里我们自己实现缩放菜单(缩放尺度为1到21)
myMapView.displayZoomControls(false);
//设置使用MyLocationOverlay来绘图
mapController.setZoom(17);
myPosition=new MyLocationOverlay();
List<Overlay> overlays=myMapView.getOverlays();
overlays.add(myPosition);
//设置Criteria(服务商)的信息
Criteria criteria =new Criteria();
//经度要求
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
//取得效果最好的criteria
String provider=locationManager.getBestProvider(criteria, true);
//得到坐标相关的信息
Location location=locationManager.getLastKnownLocation(provider);
//更新坐标
updateWithNewLocation(location);
//注册一个周期性的更新,3000ms更新一次
//locationListener用来监听定位信息的改变
locationManager.requestLocationUpdates(provider, 3000, 0,locationListener);
}
private void updateWithNewLocation(Location location)
{
String latLongString;
TextView myLocationText = (TextView)findViewById(R.id.TextView01);
String addressString="没有找到地址\n";
if(location!=null)
{
//为绘制标志的类设置坐标
myPosition.setLocation(location);
//取得经度和纬度
Double geoLat=location.getLatitude()*1E6;
Double geoLng=location.getLongitude()*1E6;
//将其转换为int型
GeoPoint point=new GeoPoint(geoLat.intValue(),geoLng.intValue());
//定位到指定坐标
mapController.animateTo(point);
double lat=location.getLatitude();
double lng=location.getLongitude();
latLongString="纬度:"+lat+"\n经度:"+lng;
double latitude=location.getLatitude();
double longitude=location.getLongitude();
//更具地理环境来确定编码
Geocoder gc=new Geocoder(this,Locale.getDefault());
try
{
//取得地址相关的一些信息\经度、纬度
List<Address> addresses=gc.getFromLocation(latitude, longitude,1);
StringBuilder sb=new StringBuilder();
if(addresses.size()>0)
{
Address address=addresses.get(0);
for(int i=0;i<address.getMaxAddressLineIndex();i++)
sb.append(address.getAddressLine(i)).append("\n");
sb.append(address.getCountryName());
addressString=sb.toString();
}
}catch(IOException e){}
}
else
{
latLongString="没有找到坐标.\n";
}
//显示
myLocationText.setText("你当前的坐标如下:\n"+latLongString+"\n"+addressString);
}
private final LocationListener locationListener=new LocationListener()
{
//当坐标改变时触发此函数
public void onLocationChanged(Location location)
{
updateWithNewLocation(location);
}
//Provider被disable时触发此函数,比如GPS被关闭
public void onProviderDisabled(String provider)
{
updateWithNewLocation(null);
}
//Provider被enable时触发此函数,比如GPS被打开
public void onProviderEnabled(String provider){}
//Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
public void onStatusChanged(String provider,int status,Bundle extras){}
};
protected boolean isRouteDisplayed()
{
return false;
}
//为应用程序添加菜单
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
menu.add(0, ZOOM_IN, Menu.NONE, "放大");
menu.add(0, ZOOM_OUT, Menu.NONE, "缩小");
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch (item.getItemId())
{
case (ZOOM_IN):
//放大
mapController.zoomIn();
return true;
case (ZOOM_OUT):
//缩小
mapController.zoomOut();
return true;
}
return true;
}
class MyLocationOverlay extends Overlay
{
Location mLocation;
//在更新坐标时,设置该坐标,一边画图
public void setLocation(Location location)
{
mLocation = location;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Paint paint = new Paint();
Point myScreenCoords = new Point();
// 将经纬度转换成实际屏幕坐标
GeoPoint tmpGeoPoint = new GeoPoint((int)(mLocation.getLatitude()*1E6),(int)(mLocation.getLongitude()*1E6));
mapView.getProjection().toPixels(tmpGeoPoint, myScreenCoords);
paint.setStrokeWidth(1);
paint.setARGB(255, 255, 0, 0);
paint.setStyle(Paint.Style.STROKE);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.home);
canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint);
canvas.drawText("Here am I", myScreenCoords.x, myScreenCoords.y, paint);
return true;
}
}
}
囧~或者前面标注行号也行,,,(P.S. 是和你日志打印的时候同版本的那个代码。。。)
P.S. 你直接双击日志里面那个NPException下面那行定位的代码把跳转到的行贴了吧。。
【 在 bixiaopeng 的大作中提到: 】
: 囧~或者前面标注行号也行,,,(P.S. 是和你日志打印的时候同版本的那个代码。。。)
: P.S. 你直接双击日志里面那个NPException下面那行定位的代码把跳转到的行贴了吧。。
不好意思,我怕只有那几行不全面。