15
Апр
2021

Запустить работу кода при нажатии на button

В общем, необходимо, чтобы передача GPS данных началась сразу после того, как будет нажата кнопка на главном активити. Сам код рабочий, разве что с этой проблемой всё никак не могу справиться. Как это можно реализовать? Заранее спасибо за ответ

public class MainActivity extends AppCompatActivity implements LocListennerInterface{
    private LocationManager locationManager;
    private GPS_location GPS_location;
    private Location lastlocation;
    private TextView tvDistance, tvVelocity, tvLon, tvLat;
    private int distance;
    private boolean gpsCall = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
init();
    }
    private void init(){
        tvVelocity = findViewById(R.id.tvVelocity);
        tvDistance = findViewById(R.id.tvDistance);
        tvLon = findViewById(R.id.tvLon);
        tvLat = findViewById(R.id.tvLat);
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        GPS_location = new GPS_location();
        GPS_location.setLocListennerInterface(this);
        checkPermissions();
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { // проверка разрешений на передачу GPS данных
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == 100 && grantResults[0] == RESULT_OK){
            checkPermissions();
        } else{
            Toast.makeText(this,"No GPS permissions", Toast.LENGTH_SHORT).show();
        }
    }
    private void checkPermissions(){ //проверка на версию андроид и на то, установленные в данный момент времени разрешения на передачю геоданных
        if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
        {
            requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION},100);
        } else {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2,1,GPS_location); //установка параметров вещания gps
        }
    }
    @Override
    public void onLocationChanged(Location loc) { // метод, с помощью которого в активити записываются широта, долгота, пройденный путь(в метрах) и скорость(в километрах в час)
        if(loc.hasSpeed() && lastlocation != null){
            distance += lastlocation.distanceTo(loc);
        }
        lastlocation = loc;
        tvDistance.setText(String.valueOf(distance));
        tvVelocity.setText(String.valueOf(loc.getSpeed()));

        if(loc != null) {
            tvLon.setText(String.valueOf(loc.getLongitude()));
            tvLat.setText(String.valueOf(loc.getLatitude()));
        } else {
            tvLon.setText("Отсутствует долгота");
            tvLat.setText("Отсутствует широта");
        }
    }

        public void onClickStartGps(View view) { // кнопка, при нажатии на которую должна начинаться передача геоданных
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (gpsCall) {
                        // необходимо отсюда заставить работать тот код, что находится выше
                    }
                }
            }).start();
        }

    @Override
    protected void onDestroy() { // отключение передачи данных при закрытии приложения
        super.onDestroy();
        gpsCall = false;
    }
}

Источник: https://ru.stackoverflow.com/questions/1270648/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83-%D0%BA%D0%BE%D0%B4%D0%B0-%D0%BF%D1%80%D0%B8-%D0%BD%D0%B0%D0%B6%D0%B0%D1%82%D0%B8%D0%B8-%D0%BD%D0%B0-button

Тебе может это понравится...

Добавить комментарий