我在我的项目中添加了谷歌地图,但它没有加载到模拟器上,"meetup someone via smarphone is stopped unfortunately"



谷歌地图正在模拟器上加载错误,不幸的是应用程序已停止,以下是我的代码包com.ayesha.MIT;

import java.io.BufferedReader;
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List;  
import org.json.JSONObject;  
import android.app.Dialog; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationListener;
import android.location.LocationManager; 
import android.net.ConnectivityManager;
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Handler;
import android.support.v4.app.FragmentActivity; 
import android.util.Log; 
import android.view.KeyEvent;
import android.view.View; 
import android.view.View.OnClickListener;
import android.view.Window; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner;  
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class Spot_Location_Screen extends FragmentActivity implements
        LocationListener {
    Database_Table_Operations database;
    ArrayList<String> locations = new ArrayList<String>();
    ArrayList<String> latitude = new ArrayList<String>();
    ArrayList<String> longitude = new ArrayList<String>();
    GoogleMap mGoogleMap;
    Spinner mSprPlaceType;
    Intent intent;
    String[] mPlaceType = null;
    String[] mPlaceTypeName = null;
    double mLatitude = 0;
    double mLongitude = 0;
    Button btnFind;
    Button doneButton;
    boolean isFound = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.spot_location_screen);
        mPlaceType = getResources().getStringArray(R.array.place_type);
        mPlaceTypeName = getResources().getStringArray(R.array.place_type_name);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_dropdown_item, mPlaceTypeName);
        mSprPlaceType = (Spinner) findViewById(R.id.spr_place_type);
        mSprPlaceType.setAdapter(adapter);
        btnFind = (Button) findViewById(R.id.btn_find);
        doneButton = (Button) findViewById(R.id.doneButton);
        SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mGoogleMap = fragment.getMap();
        mGoogleMap.setMyLocationEnabled(true);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        String provider = locationManager.getBestProvider(criteria, true);
        Location location = locationManager.getLastKnownLocation(provider);
        locationManager.requestLocationUpdates(provider, 20000, 0, this);
        database = new Database_Table_Operations(getApplicationContext());
        if (getIntent().getStringExtra("Update") != null) {
            if (getIntent().getStringExtra("Update").equals("true")) {
                addMarker(getIntent().getStringExtra("Date"));
            }
        }
        int status = GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(getBaseContext());
        if (status != ConnectionResult.SUCCESS) {
            int requestCode = 10;
            Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this,
                    requestCode);
            dialog.show();
        } else {
            if (location != null) {
                onLocationChanged(location);
            }
            btnFind.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (checkInternetConnection(getApplicationContext())) { // browser
                                                                            // key
                        mGoogleMap.clear();
                        locations.clear();
                        latitude.clear();
                        longitude.clear();
                        int selectedPosition = mSprPlaceType
                                .getSelectedItemPosition();
                        String type = mPlaceType[selectedPosition];
                        StringBuilder sb = new StringBuilder(
                                "https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
                        sb.append("location=" + 33.6000 + "," + 73.0333);
                        sb.append("&radius=20000");
                        sb.append("&types=" + type);
                        sb.append("&sensor=true");
                        sb.append("&key=AIzaSyAVhTyd9GXAkJ9VJ1S7OD9ldrBsQgOH69c");
                        PlacesTask placesTask = new PlacesTask();
                        placesTask.execute(sb.toString());
                    }
                }
            });
            doneButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    if (checkInternetConnection(getApplicationContext())) {
                        if (getIntent().getStringExtra("Update").equals("true")) {
                            database.open();
                            String myDate = getIntent().getStringExtra("Date");
                            locations.add(database.getLocation(myDate));
                            latitude.add(database.getLatitude(myDate));
                            longitude.add(database.getLongitude(myDate));
                            intent = new Intent(Spot_Location_Screen.this,
                                    Locations_List_View_Screen.class);
                            intent.putStringArrayListExtra("Locations",
                                    locations);
                            intent.putStringArrayListExtra("Latitude", latitude);
                            intent.putStringArrayListExtra("Longitude",
                                    longitude);
                            intent.putExtra("Date",
                                    getIntent().getStringExtra("Date"));
                            intent.putExtra("Update", getIntent()
                                    .getStringExtra("Update"));
                            database.close();
                            startActivity(intent);
                            finish();
                        } else {
                            if (locations.size() != 0) {
                                intent = new Intent(Spot_Location_Screen.this,
                                        Locations_List_View_Screen.class);
                                intent.putStringArrayListExtra("Locations",
                                        locations);
                                intent.putStringArrayListExtra("Latitude",
                                        latitude);
                                intent.putStringArrayListExtra("Longitude",
                                        longitude);
                                intent.putExtra("Date", getIntent()
                                        .getStringExtra("Date"));
                                intent.putExtra("Update", getIntent()
                                        .getStringExtra("Update"));
                                startActivity(intent);
                                finish();
                            }
                        }
                    }
                }
            });
        }
    }
    private String downloadUrl(String strUrl) throws IOException {
        String data = "";
        InputStream iStream = null;
        HttpURLConnection urlConnection = null;
        try {
            URL url = new URL(strUrl);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.connect();
            iStream = urlConnection.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    iStream));
            StringBuffer sb = new StringBuffer();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            data = sb.toString();
            br.close();
        } catch (Exception e) {
            Log.d("Exception while downloading url", e.toString());
        } finally {
            iStream.close();
            urlConnection.disconnect();
        }
        return data;
    }
    /** A class, to download Google Places */
    private class PlacesTask extends AsyncTask<String, Integer, String> {
        String data = null;
        @Override
        protected String doInBackground(String... url) {
            try {
                data = downloadUrl(url[0]);
            } catch (Exception e) {
                Log.d("Background Task", e.toString());
            }
            return data;
        }
        @Override
        protected void onPostExecute(String result) {
            ParserTask parserTask = new ParserTask();
            parserTask.execute(result);
        }
    }
    /** A class to parse the Google Places in JSON format */
    private class ParserTask extends
            AsyncTask<String, Integer, List<HashMap<String, String>>> {
        JSONObject jObject;
        @Override
        protected List<HashMap<String, String>> doInBackground(
                String... jsonData) {
            List<HashMap<String, String>> places = null;
            PlaceJSONParser placeJsonParser = new PlaceJSONParser();
            try {
                jObject = new JSONObject(jsonData[0]);
                places = placeJsonParser.parse(jObject);
            } catch (Exception e) {
                Log.d("Exception", e.toString());
            }
            return places;
        }
        @Override
        protected void onPostExecute(List<HashMap<String, String>> list) {
            mGoogleMap.clear();
            for (int i = 0; i < list.size(); i++) {
                MarkerOptions markerOptions = new MarkerOptions();
                HashMap<String, String> hmPlace = list.get(i);
                double lat = Double.parseDouble(hmPlace.get("lat"));
                latitude.add(String.valueOf(lat));
                double lng = Double.parseDouble(hmPlace.get("lng"));
                longitude.add(String.valueOf(lng));
                String name = hmPlace.get("place_name");
                String vicinity = hmPlace.get("vicinity");
                locations.add(name + ", " + vicinity);
                LatLng latLng = new LatLng(lat, lng);
                markerOptions.position(latLng);
                markerOptions.title(name + " : " + vicinity);
                mGoogleMap.addMarker(markerOptions);
            }
            if (locations.size() > 1) {
                int median = locations.size();
                median = median / 2;
                LatLng myLatLng = new LatLng(Double.parseDouble(latitude
                        .get(median)),
                        Double.parseDouble(longitude.get(median)));
                mGoogleMap.animateCamera(CameraUpdateFactory
                        .newLatLng(myLatLng));
            } else if (locations.size() == 1) {
                LatLng myLatLng = new LatLng(
                        Double.parseDouble(latitude.get(0)),
                        Double.parseDouble(longitude.get(0)));
                mGoogleMap.animateCamera(CameraUpdateFactory
                        .newLatLng(myLatLng));
            }
        }
    }
    @Override
    public void onLocationChanged(Location location) {
        mLatitude = location.getLatitude();
        mLongitude = location.getLongitude();
        LatLng latLng = new LatLng(mLatitude, mLongitude);
        mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(12));
    }
    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            intent = new Intent(Spot_Location_Screen.this,
                    SetMeetup_Screen.class);
            startActivity(intent);
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }
    public void addMarker(String date) {
        database.open();
        MarkerOptions markerOptions = new MarkerOptions();
        final LatLng latLng = new LatLng(Double.parseDouble(database
                .getLatitude(date)), Double.parseDouble(database
                .getLongitude(date)));
        markerOptions.position(latLng);
        markerOptions.title("Your saved location:n"
                + database.getLocation(date));
        mGoogleMap.addMarker(markerOptions);
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                mGoogleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
                database.close();
            }
        }, 2500);
    }
    public boolean checkInternetConnection(Context context) {
        ConnectivityManager conMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (conMgr.getActiveNetworkInfo() != null
                && conMgr.getActiveNetworkInfo().isAvailable()
                && conMgr.getActiveNetworkInfo().isConnected()) {
            isFound = true;
        } else {
            isFound = false;
        }
        return isFound;
    }
}
Google Android

Map API 无法在 Android 模拟器上运行 Google Maps。您必须使用真正的安卓设备来测试您的应用。

请参阅此链接以在模拟器上运行谷歌地图。

嘿,问题

已解决,但模拟器不适用于谷歌地图 我认为这是关于设备问题,但在它之前也不适用于蓝色堆栈,我已经更改了软件包名称

右键单击包

SRC 文件夹>重构>重命名

更改包名称,

然后在清单中更改包名称,然后单击项目上的Ctrl+Shiftz+O

它将更改整个项目中的包名称。

然后再次使用新的软件包名称创建浏览器密钥和Android密钥,它将加载地图.....

并且不要忘记在谷歌控制台中打开 API...并检查最低 SDK 版本(如果是 9),然后转到 SSDK 管理器并通过单击那里的过时选项安装 API 9......

最新更新