關於應用程序: - 這是一個簡單的應用程序,它可以找到用戶當前的位置。Android地圖查看手機和模擬器不同
問題: - 該應用程序在仿真器上正常工作,請參閱圖像。
但在手機它沒有顯示在MapView.Please看到圖像。
請告訴我什麼是與手機腳麻。在手機中,只需下載巨大(20 MB)的數據,但不顯示實際的地圖。
logcat的即時得到 -
10-31 16:44:45.994: E/MapActivity(3026): Couldn't get connection factory client
10-31 15:47:42.319: ERROR/MapView(1773): java.lang.IllegalStateException: Null Bitmap! "loading_tile"; if seen during a test, this usually means that the image file needs to be added to the test.config file
XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/myLocationText"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:clickable="true"
android:enabled="true"
android:apiKey="0bBgLl42nWwnTf983Y5VdIgfZI6mC7meL7Ms_qg"/>
</LinearLayout>
代碼
public class WhereIam extends MapActivity {
MapController mapController;
MyPositionOverlay positionOverlay;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView myMapView=(MapView)findViewById(R.id.myMapView);
mapController=myMapView.getController();
myMapView.setSatellite(true);
myMapView.setStreetView(true);
myMapView.displayZoomControls(false);
myMapView.setBuiltInZoomControls(true);
mapController.setZoom(16);
positionOverlay = new MyPositionOverlay();
List<Overlay> overlays = myMapView.getOverlays();
overlays.add(positionOverlay);
LocationManager locationManager;
String context=Context.LOCATION_SERVICE;
locationManager=(LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider){
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider){ }
public void onStatusChanged(String provider, int status,
Bundle extras){ }
};
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
private void updateWithNewLocation(Location location) {
String latLongString;
TextView myLocationText;
String addressString ="No Address Found";
myLocationText=(TextView)findViewById(R.id.myLocationText);
if(location!=null) {
// Update the map location.
positionOverlay.setLocation(location);
Double geoLat = location.getLatitude()*1E6;
Double geoLng = location.getLongitude()*1E6;
GeoPoint point = new GeoPoint(geoLat.intValue(),
geoLng.intValue());
mapController.animateTo(point);
double lat=location.getLatitude();
double lng=location.getLongitude();
latLongString = "Lat:" + lat + "\nLong:" + lng;
Geocoder gc=new Geocoder(this, Locale.getDefault());
try {
List<Address> addressess= gc.getFromLocation(lat, lng, 1);
StringBuilder sb=new StringBuilder();
if(addressess.size()>0) {
Address address=addressess.get(0);
for(int i=0;i<address.getMaxAddressLineIndex();i++) {
sb.append(address.getAddressLine(i)).append("\n");
sb.append(address.getLocality()).append("\n");
sb.append(address.getPostalCode()).append("\n");
sb.append(address.getCountryName());
}
addressString = sb.toString();
}
}catch(IOException e) {}
}
else {
latLongString="No Found Location";
}
myLocationText.setText("Your current Location is \n"+latLongString+"\n"+addressString);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
我只是一個裝箱API密鑰如下goto->命令提示符
變化的目錄密鑰工具夾
現在運行命令密鑰工具-list -alias androiddebugkey -keystore 「C:\用戶\ pc.android \ debug.keystore」 -storepass機器人-keypass機器人
看到圖像
現在我轉到註冊頁面我只是把EditText上的MD5和檢查接受並點擊生成密鑰,然後下面的頁面出現這顯示key--
現在我把這個密鑰放在我的MapView Xml文件中。
你可以看到應用在模擬器中運行正常,但在真實手機中沒有。
我在哪裏出錯,以及如何爲真實手機生成第二個API密鑰?
手機中的應用程序是通過android市場下載的?或者它是您使用的調試.apk?你知道你必須用有效的密鑰簽署你的地圖,而不是調試密鑰嗎? – Ivan
是的,我用有效的api密鑰簽署我的應用程序 – Sunny
該應用程序在市場上?如果答案是肯定的,那麼API密鑰必須與用於簽署應用程序的密鑰相同。 – Ivan