如何在程序中以与android中的whatsapp相同的方式在聊天窗口中显示位置信息?
作者:互联网
我正在开发一个聊天应用程序.用户可以发送与whatsapp相同的位置. (我不是在谈论共享实时定位功能).对于这个要求,我使用google place picker api.在这里,我附上了一个代码.
的build.gradle
implementation 'com.google.android.gms:play-services-maps:10.2.0'
implementation 'com.google.android.gms:play-services:10.2.0'
AndroidManifest.xml中
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
在java文件中
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
dismiss();
mActivity.startActivityForResult(builder.build(currentFragment.getActivity()), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
Log.e(this.getClass().getSimpleName(),"GooglePlayServicesRepairableException");
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
Log.e(this.getClass().getSimpleName(),"GooglePlayServicesNotAvailableException");
e.printStackTrace();
}
这就是处理onActivityResult方法的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
Place place = PlacePicker.getPlace(this, data);
}
}
}
那我该怎么做呢?
解决方法:
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns: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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="200dp"
android:layout_height="150dp"
android:padding="5dp"
android:scaleType="fitXY"
tools:src="@tools:sample/backgrounds/scenic" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Location"
android:textColor="#000000" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginRight="5dp"
android:gravity="end"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="11:00 AM"
android:textColor="#000000"
android:textSize="10sp" />
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_gravity="center_vertical"
tools:src="@tools:sample/avatars" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
将此布局文件用作recyclerview的项目文件.
对于地图图像:
使用这个答案:https://stackoverflow.com/a/50674957/8089770
为了得到lat long和地名:
place.getLatLng()获取纬度和经度
place.getName()获取要在地图底部显示的地名
对于使用recyclerview的聊天应用程序演示可以通过以下教程:
> https://github.com/QuickBlox/ChatMessagesAdapter-android
> RecyclerView for chat app
> https://www.dev2qa.com/android-chat-app-example-using-recyclerview/
标签:android,android-layout,google-maps-api-3,android-mapview 来源: https://codeday.me/bug/20190910/1798778.html