package com.yeshi.location.plugins;
|
|
import android.content.Context;
|
import android.location.Address;
|
import android.util.Log;
|
import android.widget.Toast;
|
|
import com.google.gson.Gson;
|
import com.yeshi.location.utils.LocationUtils;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import io.flutter.plugin.common.BasicMessageChannel;
|
import io.flutter.plugin.common.BinaryMessenger;
|
import io.flutter.plugin.common.StandardMessageCodec;
|
|
public class LocationPlugins implements BasicMessageChannel.MessageHandler<Object> {
|
|
private static final String TAG = "LocationUtil";
|
|
private final Context activity;
|
private final BasicMessageChannel<Object> messageChannel;
|
|
|
private LocationPlugins(Context activity, BinaryMessenger messager) {
|
this.activity = activity;
|
this.messageChannel = new BasicMessageChannel<Object>(messager, "LocationUtil", StandardMessageCodec.INSTANCE);
|
messageChannel.setMessageHandler(this);
|
}
|
|
public static LocationPlugins registerWith(Context activity, BinaryMessenger messager) {
|
return new LocationPlugins(activity, messager);
|
}
|
|
|
@Override
|
public void onMessage(@Nullable Object message, @NonNull BasicMessageChannel.Reply<Object> reply) {
|
LocationUtils.getInstance(activity).setAddressCallback(new LocationUtils.AddressCallback() {
|
@Override
|
public void onGetAddress(Address address) {
|
Map<String, String> map = new HashMap<>();
|
map.put("lat", address.getLatitude() + "");
|
map.put("lng", address.getLongitude() + "");
|
String addressLine = "";
|
for (int i = 0; address.getAddressLine(i) != null; i++) {
|
addressLine = address.getAddressLine(i);
|
}
|
map.put("address", addressLine);
|
map.put("addressDetail", address.getFeatureName());
|
Log.i(TAG, new Gson().toJson(address));
|
try {
|
reply.reply(map);
|
} catch (Exception e) {
|
}
|
}
|
|
@Override
|
public void onGetLocation(double lat, double lng) {
|
Log.i(TAG, String.format("定位经纬度 lat:%s lng:%s", lat, lng));
|
Map<String, String> map = new HashMap<>();
|
map.put("lat", lat + "");
|
map.put("lng", lng + "");
|
reply.reply(map);
|
}
|
});
|
}
|
}
|