Skip to content Skip to sidebar Skip to footer

How To Display Location Message In Chat Window Same Like Whatsapp In Android Programmatically?

I am developing a chat application. Where user can send location same like whatsapp. (I am not talking about share live location functionality). For this requirement i have use goo

Solution 1:

Layout file :

enter image description here

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"app:cardBackgroundColor="#e0ffc6"app:cardCornerRadius="5dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><ImageViewandroid:layout_width="200dp"android:layout_height="150dp"android:padding="5dp"android:scaleType="fitXY"tools:src="@tools:sample/backgrounds/scenic" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="Location"android:textColor="#000000" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end"android:layout_marginRight="5dp"android:gravity="end"android:orientation="horizontal"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="5dp"android:text="11:00 AM"android:textColor="#000000"android:textSize="10sp" /><ImageViewandroid:layout_width="10dp"android:layout_height="10dp"android:layout_gravity="center_vertical"tools:src="@tools:sample/avatars" /></LinearLayout></LinearLayout></android.support.v7.widget.CardView>

Use this layout file as item file of recyclerview.

For map image :

Use this answer : https://stackoverflow.com/a/50674957/8089770

To get lat long and name of place :

place.getLatLng() to get the latitude and longitude

place.getName() to get Place name to show at bottom of map

For chat application demo with recyclerview can go through tutorials like :

  1. https://github.com/QuickBlox/ChatMessagesAdapter-android

  2. RecyclerView for chat app

  3. https://www.dev2qa.com/android-chat-app-example-using-recyclerview/

Solution 2:

You can make use of static maps for that.

http://maps.googleapis.com/maps/api/staticmap?center=9.9252,78.1198&zoom=14&markers=color:blue|label:A|9.9252,78.1198&size=500x400&sensor=false

You can replace the dynamic co-ordinates programmatically like below:

Stringlocation="http://maps.googleapis.com/maps/api/staticmap?center="
                                + Utils.CUR_LATTITUDE
                                + ","
                                + Utils.CUR_LONGITUDE
                                + "&zoom=14&markers=color:blue|label:A|"
                                + Utils.CUR_LATTITUDE
                                + ","
                                + Utils.CUR_LONGITUDE
                                + "&size=500x400&sensor=false"

Solution 3:

Solution 4:

Add an XML attribute for a MapView or MapFragment in to you item view

<com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.apps.maps"
    android:id="@+id/map"
    android:layout_width="300dp"
    android:layout_marginTop="5dp"
    android:layout_height="250dp"map:uiMapToolbar="false"
    android:layout_marginBottom="20dp"map:cameraZoom="13"map:mapType="normal"map:liteMode="true"/>

ViewHolder

publicstaticclassViewHolder2extendsRecyclerView.ViewHolder {

        public TextView showMessage;
        public TextView ago, timeText;
        public ImageView seen;
        public MapView map;
        publicViewHolder2(@NonNull View itemView) {
            super(itemView);
            showMessage= itemView.findViewById(R.id.show_message);
            ago = itemView.findViewById(R.id.ago);
            seen = itemView.findViewById(R.id.seen);
            map =  itemView.findViewById(R.id.map);
            timeText = itemView.findViewById(R.id.chat_time);
        }
    }

In your onBindViewHolder

        if (viewHolder2.map != null) {
            // Initialise the MapView
            viewHolder2.map.onCreate(null);
            viewHolder2.map.onResume();
            // Set the map ready callback to receive the GoogleMap object
            viewHolder2.map.getMapAsync(googleMap -> {
                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(chat.getLat(),chat.getLon()), 13f));
                googleMap.addMarker(new MarkerOptions().position(new LatLng(chat.getLat(),chat.getLon())));

                googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                googleMap.getUiSettings().setAllGesturesEnabled(false);
            });
        }

End result:

enter image description here

Post a Comment for "How To Display Location Message In Chat Window Same Like Whatsapp In Android Programmatically?"