package ru.shutoff.cgstarter; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class SendLocationActivity extends GpsActivity { double finish_lat; double finish_lon; TextView finish_info; Button current; TextView current_info; AddressRequest request; boolean location_changed; double addr_lat; double addr_lon; String address; static String format(double n) { String res = n + ""; if (res.length() > 8) res = res.substring(0, 8); return res; } @Override protected void onCreate(Bundle savedInstanceState) { need_fine = true; super.onCreate(savedInstanceState); setContentView(R.layout.location); try { File poi = State.CG_Folder(this); if (State.cg_files) { poi = new File(poi, "routes.dat"); BufferedReader reader = new BufferedReader(new FileReader(poi)); reader.readLine(); boolean current = false; while (true) { String line = reader.readLine(); if (line == null) break; String[] parts = line.split("\\|"); if (parts.length == 0) continue; String name = parts[0]; if ((name.length() > 0) && (name.substring(0, 1).equals("#"))) { current = name.equals("#[CURRENT]"); continue; } if (current && name.equals("Finish")) { finish_lat = Double.parseDouble(parts[1]); finish_lon = Double.parseDouble(parts[2]); } } reader.close(); } else { poi = new File(poi, "Routes/Route.curr"); BufferedReader reader = new BufferedReader(new FileReader(poi)); reader.readLine(); while (true) { String line = reader.readLine(); if (line == null) break; String[] parts = line.split("\\|"); if (parts.length < 4) continue; String name = parts[0]; if (name.equals("3")) { finish_lat = Double.parseDouble(parts[2]); finish_lon = Double.parseDouble(parts[3]); } } reader.close(); } } catch (Exception ex) { // ignore } Button btn = (Button) findViewById(R.id.finish); finish_info = (TextView) findViewById(R.id.finish_info); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if ((finish_lat != 0) && (finish_lon != 0)) { try { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("sms:")); intent.setType("vnd.android-dir/mms-sms"); intent.putExtra("sms_body", format(finish_lat) + " " + format(finish_lon)); startActivity(intent); } catch (Exception ex) { Toast toast = Toast.makeText(SendLocationActivity.this, ex.getMessage(), Toast.LENGTH_SHORT); toast.show(); } } } }); if ((finish_lat == 0) && (finish_lon == 0)) { btn.setEnabled(false); finish_info.setText(R.string.no_finish); } else { btn.setEnabled(true); finish_info.setText(format(finish_lat) + ", " + format(finish_lon) + "\n\n"); AddressRequest req = new AddressRequest() { @Override protected void address(String s) { if (s != null) finish_info.setText(format(finish_lat) + ", " + format(finish_lon) + "\n" + s); } }; req.execute(finish_lat, finish_lon); } current = (Button) findViewById(R.id.current); current_info = (TextView) findViewById(R.id.current_info); current.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (currentBestLocation != null) { try { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("sms:")); intent.setType("vnd.android-dir/mms-sms"); intent.putExtra("sms_body", format(currentBestLocation.getLatitude()) + " " + format(currentBestLocation.getLongitude())); startActivity(intent); } catch (Exception ex) { Toast toast = Toast.makeText(SendLocationActivity.this, ex.getMessage(), Toast.LENGTH_SHORT); toast.show(); } } } }); } @Override void locationChanged() { if (currentBestLocation == null) { current.setEnabled(false); current_info.setText(R.string.find_location); return; } double lat = currentBestLocation.getLatitude(); double lon = currentBestLocation.getLongitude(); String info = format(lat) + ", " + format(lon) + "\n"; if (address != null) info += address; if (OnExitService.calc_distance(lat, lon, addr_lat, addr_lon) > 50) { location_changed = true; if (request != null) { location_changed = true; } else { if (currentBestLocation != null) { addr_lat = currentBestLocation.getLatitude(); addr_lon = currentBestLocation.getLongitude(); location_changed = false; request = new AddressRequest() { @Override protected void address(String s) { address = s; locationChanged(); } }; request.execute(currentBestLocation.getLatitude(), currentBestLocation.getLongitude()); } } } current_info.setText(info); } }