У меня есть вкладка, которая загружает вид карты, и когда я проверяю код на своем телефоне, он работает, но если я экспортирую APK и отправляю его клиенту, он падает, когда они открывают его.Они находятся в другой части страны, поэтому получение какой-либо полезной информации из них было ограничено.
Мой телефон работает с 2.2.1
Их телефон работает с 2.3.4
Я использую android: minSdkVersion = "7" в манифесте.
Я пробовал использовать различные версии Google api libs 2.3.3 работает на моей, но не на них Google 2.1 работает на моейно не их.
Остальная часть приложения работает, только карты на моем рушатся.
3.0 и позже все по каким-то причинам вылетают на моем.
Воткласс карты:
public class GPSLocatorActivity extends MapActivity implements LocationListener {
private MapView map=null;
private MyLocationOverlay me=null;
private LocationManager lm;
private MyLocationOverlay lo;
private double latit;
private double lonit;
private ArrayList<HashMap<String, String>> thelist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initLocation();
map=(MapView)findViewById(R.id.mapView);
//json stuff
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, myjasonfeedurlString>>();
// Log.e("log_tag", "here we are at url "+latit);
String url = "http://myjsonlocation/json.php?la=" + latit + "&lo=" + lonit;
//Log.e("log_tag", "here is url "+url);
JSONObject json = getJSONfromURL(url);
try{
JSONArray earthquakes = json.getJSONArray("locations");
//Loop the Array
for(int i=0;i < earthquakes.length();i++){
HashMap<String, String> hmap = new HashMap<String, String>();
JSONObject e = earthquakes.getJSONObject(i);
hmap.put("id", String.valueOf(i));
hmap.put("name", e.getString("name"));
hmap.put("latitude", e.getString("lat"));
hmap.put("longitude", e.getString("lon"));
hmap.put("street", e.getString("street"));
//Log.e("log_tag", "Here's what I pulled "+e.getString("name"));
mylist.add(hmap);
}
thelist = mylist;
}
catch(JSONException e) {
// Log.e("log_tag", "Error parsing data "+e.toString());
}
map.getController().setCenter(getPoint(latit,
lonit));
map.getController().setZoom(14);
map.setBuiltInZoomControls(true);
Drawable marker=getResources().getDrawable(R.drawable.ball24);
marker.setBounds(0, 0, marker.getIntrinsicWidth(),
marker.getIntrinsicHeight());
map.getOverlays().add(new SitesOverlay(marker));
me=new MyLocationOverlay(this, map);
map.getOverlays().add(me);
}
@Override
public void onResume() {
super.onResume();
// me.enableCompass();
}
@Override
public void onPause() {
super.onPause();
lo.disableMyLocation();
// me.disableCompass();
}
@Override
protected boolean isRouteDisplayed() {
return(false);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_S) {
map.setSatellite(!map.isSatellite());
return(true);
}
else if (keyCode == KeyEvent.KEYCODE_Z) {
map.displayZoomControls(true);
return(true);
}
return(super.onKeyDown(keyCode, event));
}
private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0),
(int)(lon*1000000.0)));
}
private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items=new ArrayList<OverlayItem>();
public SitesOverlay(Drawable marker) {
super(marker);
boundCenterBottom(marker);
for(int i=0;i < thelist.size();i++){
Map<String, String> hmap = thelist.get(i);
double tlo = Double.valueOf(hmap.get("longitude"));
double tla = Double.valueOf(hmap.get("latitude"));
GeoPoint point = new GeoPoint((int)(tla*1E6),(int)(tlo*1E6));
//Log.e("log_tag","geopoint : " + point +" me "+ (int)(latit*1000000.0) + " , " +(int)(lonit*1000000.0));
items.add(new OverlayItem(point,hmap.get("name"), hmap.get("street")));
}
items.add(new OverlayItem(getPoint(0.748963847316034,
-123.96807193756104),
"blank", "placeholder"));
populate();
}
@Override
protected OverlayItem createItem(int i) {
return(items.get(i));
}
@Override
protected boolean onTap(int i) {
Toast.makeText(GPSLocatorActivity.this,
items.get(i).getTitle() + " @ " + items.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
return(true);
}
@Override
public int size() {
return(items.size());
}
}
private void initLocation(){
lm= (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 500, this);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
// Log.e("log_tag", "lat "+ latitude);
// Log.e("log_tag", "lon: "+ longitude);
latit = latitude;
lonit = longitude;
}
public void onLocationChanged(Location arg0) {
List overlays = map.getOverlays();
lo = new MyLocationOverlay(this,map);
overlays.add(lo);
lo.enableMyLocation();
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
//json
public static JSONObject getJSONfromURL(String url){
//initialize
InputStream is = null;
String result = "";
JSONObject jArray = null;
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
//Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
//Log.e("log_tag", "Error converting result "+e.toString());
}
//try parse the string to a JSON object
try{
jArray = new JSONObject(result);
}catch(JSONException e){
//Log.e("log_tag", "Error parsing data "+e.toString());
}
return jArray;
}
//json
}
Любые идеи будут оценены.Я пока мало работал с картами.
Спасибо