|
22 | 22 |
|
23 | 23 | package eu.basicairdata.graziano.gpslogger; |
24 | 24 |
|
| 25 | +import static android.content.Context.CLIPBOARD_SERVICE; |
25 | 26 | import static android.content.Context.POWER_SERVICE; |
26 | 27 |
|
27 | 28 | import android.Manifest; |
| 29 | +import android.content.ClipData; |
| 30 | +import android.content.ClipboardManager; |
28 | 31 | import android.content.Intent; |
29 | 32 | import android.content.pm.PackageManager; |
30 | 33 | import android.content.res.Configuration; |
|
37 | 40 |
|
38 | 41 | import android.os.PowerManager; |
39 | 42 | import android.provider.Settings; |
| 43 | +import android.view.Gravity; |
40 | 44 | import android.view.LayoutInflater; |
41 | 45 | import android.view.View; |
42 | 46 | import android.view.ViewGroup; |
43 | 47 | import android.view.ViewTreeObserver; |
44 | 48 | import android.widget.FrameLayout; |
45 | | -import android.widget.ImageButton; |
46 | 49 | import android.widget.ImageView; |
47 | 50 | import android.widget.LinearLayout; |
48 | 51 | import android.widget.TableLayout; |
49 | 52 | import android.widget.TextView; |
| 53 | +import android.widget.Toast; |
50 | 54 |
|
51 | 55 | import java.util.Locale; |
52 | 56 |
|
|
61 | 65 | import static eu.basicairdata.graziano.gpslogger.GPSApplication.GPS_SEARCHING; |
62 | 66 | import static eu.basicairdata.graziano.gpslogger.GPSApplication.GPS_STABILIZING; |
63 | 67 | import static eu.basicairdata.graziano.gpslogger.GPSApplication.GPS_OK; |
| 68 | +import static eu.basicairdata.graziano.gpslogger.GPSApplication.TOAST_VERTICAL_OFFSET; |
64 | 69 |
|
65 | 70 | /** |
66 | 71 | * The Fragment that displays the information of the Fix |
@@ -102,6 +107,8 @@ public class FragmentGPSFix extends Fragment { |
102 | 107 | private CardView cvWarningBatteryOptimised; |
103 | 108 | private LinearLayout llTimeSatellites; |
104 | 109 | private ImageView iwWarningBatteryOptimisedClose; |
| 110 | + private ImageView iwCopyCoordinatesToClipboard; |
| 111 | + |
105 | 112 |
|
106 | 113 | private PhysicalData phdLatitude; |
107 | 114 | private PhysicalData phdLongitude; |
@@ -208,6 +215,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, |
208 | 215 | // ImageViews |
209 | 216 |
|
210 | 217 | iwWarningBatteryOptimisedClose = view.findViewById(R.id.id_warning_battery_optimised_close); |
| 218 | + iwCopyCoordinatesToClipboard = view.findViewById(R.id.id_coordinates_copy); |
211 | 219 |
|
212 | 220 | // LinearLayouts |
213 | 221 | llTimeSatellites = view.findViewById(R.id.id_linearLayout_Time_Satellites); |
@@ -239,6 +247,34 @@ public void onClick(View v) { |
239 | 247 | } |
240 | 248 | }); |
241 | 249 |
|
| 250 | + iwCopyCoordinatesToClipboard.setOnClickListener(new View.OnClickListener() { |
| 251 | + @Override |
| 252 | + public void onClick(View v) { |
| 253 | + ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE); |
| 254 | + // Coordinates GG°MM'SS.SSSS" |
| 255 | +// ClipData clip = ClipData.newPlainText("Coordinates", |
| 256 | +// Location.convert(Math.abs(location.getLatitude()), Location.FORMAT_SECONDS) |
| 257 | +// .replaceFirst(":", "°") |
| 258 | +// .replaceFirst(":", "'") |
| 259 | +// .concat(location.getLatitude() >= 0 ? "\"N " : "\"S ") |
| 260 | +// + Location.convert(Math.abs(location.getLongitude()), Location.FORMAT_SECONDS) |
| 261 | +// .replaceFirst(":", "°") |
| 262 | +// .replaceFirst(":", "'") |
| 263 | +// .concat(location.getLongitude() >= 0 ? "\"E" : "\"W")); |
| 264 | + // Coordinates GG.GGGGGGGGG, to be preferred |
| 265 | + ClipData clip = ClipData.newPlainText("Coordinates", |
| 266 | + String.format(Locale.getDefault(), "%.9f", location.getLatitude()) |
| 267 | + + ", " |
| 268 | + + String.format(Locale.getDefault(), "%.9f", location.getLongitude()) |
| 269 | + ); |
| 270 | + clipboard.setPrimaryClip(clip); |
| 271 | + Toast toast = Toast.makeText(gpsApp.getApplicationContext(), |
| 272 | + gpsApp.getString(R.string.toast_coordinates_copied_to_clipboard), Toast.LENGTH_SHORT); |
| 273 | + toast.setGravity(Gravity.BOTTOM, 0, TOAST_VERTICAL_OFFSET); |
| 274 | + toast.show(); |
| 275 | + } |
| 276 | + }); |
| 277 | + |
242 | 278 | cvWarningBackgroundRestricted.setOnClickListener(new View.OnClickListener() { |
243 | 279 | @Override |
244 | 280 | public void onClick(View v) { |
|
0 commit comments