We can show maps in Android wear we display user current location recived from the phone.
Currently we can update user current location from phone only. So this maps on android wear will be helpful for user to see the locations near by when riding.
What is DismissOverlayView? Need to know this first.
In Android wear we Dismiss a screen or view by swiping from left to right. But When we are dealing with Maps in android wear then gestures are overiden by the map gestures so we are not able to perform the normal left to right swipe dismiss action in android wear in maps.
So in order to overcome there is DismissOverlayView which lets you dismiss the map screen view by just long press on the map screen and you will get a alert to quit with cross icon which allows you to dismiss the current screen in view.
And how can we show maps in android wear programmactically is shown below.
Project Structure will be as shown
1. MainActivity.java
Happy coding
Cheers!!!
References : https://developers.google.com/maps/documentation/android/wear?hl=en
Currently we can update user current location from phone only. So this maps on android wear will be helpful for user to see the locations near by when riding.
What is DismissOverlayView? Need to know this first.
In Android wear we Dismiss a screen or view by swiping from left to right. But When we are dealing with Maps in android wear then gestures are overiden by the map gestures so we are not able to perform the normal left to right swipe dismiss action in android wear in maps.
So in order to overcome there is DismissOverlayView which lets you dismiss the map screen view by just long press on the map screen and you will get a alert to quit with cross icon which allows you to dismiss the current screen in view.
And how can we show maps in android wear programmactically is shown below.
Project Structure will be as shown
1. MainActivity.java
public class MainActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener,GoogleMap.OnMarkerDragListener { private GoogleApiClient mGoogleApiClient; private static final LatLng CHANDIGARH = new LatLng(30.7500, 76.7800); ArrayList<LatLng> points; float distance; private DismissOverlayView mDismissOverlay; private GoogleMap mMap; public void onCreate(Bundle savedState) { super.onCreate(savedState); setContentView(R.layout.activity_main); final FrameLayout topFrameLayout = (FrameLayout) findViewById(R.id.root_container); final FrameLayout mapFrameLayout = (FrameLayout) findViewById(R.id.map_container); topFrameLayout.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { @Override public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { insets = topFrameLayout.onApplyWindowInsets(insets); FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) mapFrameLayout.getLayoutParams(); params.setMargins( insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()); mapFrameLayout.setLayoutParams(params); return insets; } }); mDismissOverlay = (DismissOverlayView) findViewById(R.id.dismiss_overlay); mDismissOverlay.setIntroText(R.string.intro_text); mDismissOverlay.showIntroIfNecessary(); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setOnMapLongClickListener(this); MarkerOptions marker = new MarkerOptions() .position(CHANDIGARH) .title("Wear Maps") .snippet("" + CHANDIGARH) .icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); mMap.addMarker(marker); mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { @Override public void onInfoWindowClick(Marker marker) { } }); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(CHANDIGARH, 14)); } @Override public void onMapLongClick(LatLng latLng) { mDismissOverlay.show(); } @Override public void onMarkerDragEnd(Marker arg0) { LatLng dragPosition = arg0.getPosition(); double dragLat = dragPosition.latitude; double dragLong = dragPosition.longitude; Log.i("info", "on drag end :" + dragLat + " dragLong :" + dragLong); PolylineOptions polylineOptions = new PolylineOptions(); polylineOptions.color(Color.RED); polylineOptions.width(3); points.add(dragPosition); polylineOptions.addAll(points); mMap.addPolyline(polylineOptions); Toast.makeText(getApplicationContext(), "Distance ="+distance, Toast.LENGTH_LONG).show(); } @Override public void onMarkerDragStart(Marker arg0) { } @Override public void onMarkerDrag(Marker marker) { } }2. activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/root_container" android:layout_height="match_parent" android:layout_width="match_parent"> <FrameLayout android:id="@+id/map_container" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment"/> </FrameLayout> <android.support.wearable.view.DismissOverlayView android:id="@+id/dismiss_overlay" android:layout_height="match_parent" android:layout_width="match_parent"/> </FrameLayout>3.AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.watchmaps.androidsmartwatchmaps" > <!-- Permissions and features required for the Android Maps API v2 --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.DeviceDefault" > <!-- API key for the Android Maps API v2. The value is defined as a string resource. --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key"/> <!-- Meta data required for Google Play Services --> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>4. build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.watchmaps.androidsmartwatchmaps" minSdkVersion 20 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.google.android.support:wearable:1.2.0' compile 'com.google.android.gms:play-services-wearable:7.5.0' compile 'com.google.android.gms:play-services-maps:7.5.0' }
Happy coding
Cheers!!!
References : https://developers.google.com/maps/documentation/android/wear?hl=en