Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.tomasz.buklewrunner;
- import android.graphics.Color;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.TextView;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.MapFragment;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.model.CircleOptions;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.google.android.gms.maps.model.Polyline;
- import com.google.android.gms.maps.model.PolylineOptions;
- import java.text.DecimalFormat;
- import java.util.ArrayList;
- import java.util.Random;
- public class Start extends AppCompatActivity
- implements OnMapReadyCallback, View.OnClickListener, GoogleMap.OnMapClickListener{
- GoogleMap googleMap;
- final LatLng ETI = new LatLng(54.371732,18.612349);
- LatLng Pozycja = new LatLng(0.0,0.0);
- TextView distView;
- private LocationManager lm;
- private LocationListener listener;
- private TextView tv;
- private TextView timer;
- PolylineOptions trasa = new PolylineOptions();
- LatLng[] pozy = new LatLng[9999];
- Marker tu;
- double sekundy =0;
- int count =0;
- int min = 0;
- int hour = 0;
- String czas;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_start);
- lm = (LocationManager) getSystemService(LOCATION_SERVICE);
- listener = new MyListener();
- tv = (TextView)findViewById(R.id.locTV);
- timer =(TextView)findViewById(R.id.time);
- registerListener();
- MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
- mapFragment.getMapAsync(this);
- findViewById(R.id.changeBtn).setOnClickListener(this);
- //distView = findViewById(R.id.distanceView);
- Thread t = new Thread(){
- @Override
- public void run(){
- while (!isInterrupted()){
- try {
- Thread.sleep(1000); //1000ms = 1 sec
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- DecimalFormat dt = new DecimalFormat("##");
- count++;
- if(count==60){
- min++;
- count=0;
- sekundy++;
- if(min==60){
- hour++;
- min=0;
- }
- }
- czas =" "+dt.format(hour)+":"+min+":"+count;
- timer.setText(czas);
- }
- });
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- };
- t.start();
- }
- Location prevLocation = null;
- int i =0;
- public double odleglosc(double szm_obl, double dlm_obl, double sz_obl, double dl_obl) {
- double szm_rad = szm_obl * Math.PI / 180;
- double dlm_rad = dlm_obl * Math.PI / 180;
- double sz_rad = sz_obl * Math.PI / 180;
- double dl_rad = dl_obl * Math.PI / 180;
- double delta_sz = sz_rad - szm_rad;
- double delta_dl = dl_rad - dlm_rad;
- double R = 6371;
- double a = Math.sin(delta_sz / 2) * Math.sin(delta_sz / 2) +
- Math.cos(szm_rad) * Math.cos(sz_rad) *
- Math.sin(delta_dl / 2) * Math.sin(delta_dl / 2);
- double c = 2 * Math.asin(Math.sqrt(a));
- double wynik = R * c;
- return wynik;
- }
- /*public void czas(){
- Thread t = new Thread(){
- @Override
- public void run(){
- while (!isInterrupted()){
- try {
- Thread.sleep(1000); //1000ms = 1 sec
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- count++;
- if(count==60){
- min++;
- count=0;
- if(min==60){
- hour++;
- min=0;
- }
- }
- czas =" "+hour+":"+min+":"+count;
- timer.setText(czas);
- }
- });
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- };
- t.start();
- }*/
- public void przetwarzajLokalizacje(Location location) {
- String info;
- double dlug;
- double szer;
- DecimalFormat df = new DecimalFormat("##.####");
- info = df.format(location.getLatitude())+ " " + df.format(location.getLongitude());
- dlug = location.getLatitude();
- szer = location.getLongitude();
- if(prevLocation!=null){
- //float bearing = prevLocation.bearingTo(location);
- //float distance = prevLocation.distanceTo(location);
- //info += " "+distance+" "+bearing;
- double dystans = Double.parseDouble(df.format(odleglosc(prevLocation.getLatitude(),prevLocation.getLongitude(),location.getLatitude(),location.getLongitude())));
- //info += " "+df.format(odleglosc(prevLocation.getLatitude(),prevLocation.getLongitude(),location.getLatitude(),location.getLongitude()));
- info = ""+dystans;
- }
- // Pozycja = new LatLng(location.getLatitude(),location.getLongitude());
- Pozycja = new LatLng(dlug,szer);
- //tu = googleMap.clear();
- pozy[i] = new LatLng(location.getLatitude(),location.getLongitude());
- trasa.add(pozy[i]);
- trasa.color(Color.BLUE);
- track = googleMap.addPolyline(trasa);
- if (tu != null) {
- tu.remove();}
- tu = googleMap.addMarker(new MarkerOptions().position(Pozycja).title("Moja Lokalizacja"));
- googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(Pozycja,15));
- tv.setText(info);
- prevLocation = location;
- if(i==9998){
- i=0;}
- else{
- i=i+1;}
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults){
- registerListener();
- }
- void registerListener() {
- lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
- }
- @Override
- public void onMapReady(final GoogleMap googleMap) {
- this.googleMap = googleMap;
- googleMap.addMarker(new MarkerOptions().position(ETI).title("Baza"));
- googleMap.addCircle(new CircleOptions().center(ETI).radius(100));
- googleMap.getUiSettings().setZoomControlsEnabled(true);
- googleMap.setOnMapClickListener(this);
- googleMap.setIndoorEnabled(true);
- googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ETI,15));
- PolylineOptions obw = new PolylineOptions();
- obw.add(ETI);
- obw.add(ETI);
- obw.color(Color.BLUE);
- track = googleMap.addPolyline(obw);
- googleMap.addMarker(new MarkerOptions().position(Pozycja).title("Moja Lokalizacja"));
- }
- private Polyline track;
- @Override
- public void onClick(View view) {
- if(track !=null) track.remove();
- PolylineOptions po = new PolylineOptions();
- Random rand = new Random();
- po.add(ETI);
- for (int i = 0; i < 7; i++){
- double dlat = (rand.nextDouble() - 0.5) / 100;
- double dlon = (rand.nextDouble() - 0.5) / 70;
- po.add(new LatLng(ETI.latitude + dlat , ETI.longitude + dlon));
- }
- po.add(ETI);
- po.color(Color.RED);
- track = googleMap.addPolyline(po);
- for (Marker m: all) m.remove();
- all.clear();
- overalDist =0;
- pointId = 1;
- }
- int pointId = 1;
- ArrayList<Marker> all = new ArrayList<>();
- double overalDist=0;
- @Override
- public void onMapClick(LatLng latLng) {
- /*Marker marker = googleMap.addMarker(new MarkerOptions().position(latLng)
- .title("Punkt " + pointId++));
- all.add(marker); //for future use
- float[] results = new float[3];
- Location.distanceBetween(marker.getPosition().latitude,marker.getPosition().longitude,ETI.latitude,ETI.longitude,results);
- overalDist+=results[0];
- distView.setText(""+overalDist);*/
- }
- private class MyListener implements LocationListener {
- @Override
- public void onLocationChanged(Location location) {
- przetwarzajLokalizacje(location);
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras)
- {
- }
- @Override
- public void onProviderEnabled(String provider) {
- }
- @Override
- public void onProviderDisabled(String provider) {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement