How to use the new embedded smooth access provider as indicated: http://developer.android.com/training/location/retrieve-current.html
public static class XYZ extends Fragment implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationListener { GoogleMap map; LatLng latlng; private LocationRequest lr; private LocationClient lc; MapFragment mapFragment; ImageView iv; private static View view; public XYZ() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (view != null) { ViewGroup parent = (ViewGroup) view.getParent(); if (parent != null) parent.removeView(view); } try { view = inflater.inflate(R.layout.XYZ, container, false); mapFragment = ((MapFragment) this.getActivity() .getFragmentManager().findFragmentById(R.id.map)); iv = (ImageView) view.findViewById(R.id.iv); map = mapFragment.getMap(); map.getUiSettings().setAllGesturesEnabled(false); map.getUiSettings().setMyLocationButtonEnabled(false); map.setMyLocationEnabled(true); map.getUiSettings().setZoomControlsEnabled(false); MapsInitializer.initialize(this.getActivity()); } catch (GooglePlayServicesNotAvailableException e) { Toast.makeText(getActivity(), "Google Play Services missing !", Toast.LENGTH_LONG).show(); } catch (InflateException e) { Toast.makeText(getActivity(), "Problems inflating the view !", Toast.LENGTH_LONG).show(); } catch (NullPointerException e) { Toast.makeText(getActivity(), "Google Play Services missing !", Toast.LENGTH_LONG).show(); } return view; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); lr = LocationRequest.create(); lr.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); lc = new LocationClient(this.getActivity().getApplicationContext(), this, this); lc.connect(); } @Override public void onLocationChanged(Location l2) { CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom( new LatLng(l2.getLatitude(), l2.getLongitude()), 15); map.animateCamera(cameraUpdate); } @Override public void onConnectionFailed(ConnectionResult arg0) { } @Override public void onConnected(Bundle connectionHint) { lc.requestLocationUpdates(lr, this); } @Override public void onDisconnected() { } }
With XML like:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginBottom="4dp" android:layout_weight="1" > <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.MapFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" /> </RelativeLayout>
You can get a blank card if you do not have all the requirements, https://developers.google.com/maps/documentation/android/start
Get Play services in your project by following this entry https://blog-emildesign.rhcloud.com/?p=435
Then get the api key: https://blog-emildesign.rhcloud.com/?p=403
Add permissions for the manifest,
<uses-permission android:name="your.application.package.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
To test the map application, you need to have a real device, if not, then click on the game services for the emulator via adb, read this post to find out how to install the game services using adb fooobar.com/questions/24838 / ...
After all the steps above, clear the project, delete the previous .apk from the emulator and run the project.
source share