GPS で位置情報を取得して距離を計算する関数と、ボタン動作に関する質問


Android Studioでのアプリ開発で質問です。  
GPSで位置情報を取得してボタンを押したら距離を計算する関数部分を作りたいのですが友達に貰ったこの写真を見てもいまいちJavaに書き起こすことが出来ずに困っています。

GPSの取得自体は出来ていて、「ボタンを押したら計算スタート，毎秒更新」、「終了ボタンで計算終了で結果出力」がやりたいです。  
GPSの取得間隔を1秒に設定する方法も出来れば知りたいです。  
ボタンはonButtonClickで実装しようとしていますが、もし不可能であれば他の方法を知りたいです。

[![友達に貰った架空言語での関数解説](https://i.stack.imgur.com/DGue1.jpg)](https://i.stack.imgur.com/DGue1.jpg)

以下は記述途中のコードです。ご参考ください。  
（package文は省略）

[code]

    import androidx.annotation.RequiresApi;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.Manifest;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MainActivity extends  AppCompatActivity{
        double data1, data2;
    
    
        private LocationManager locationManager;
    
        @RequiresApi(api = Build.VERSION_CODES.M)
        public void onCreate(Bundle savedInstanceState) {
            setContentView(R.layout.activity_main);
            super.onCreate(savedInstanceState);
    
            locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
            if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    Activity#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for Activity#requestPermissions for more details.
                return;
            }
            locationManager.requestLocationUpdates(provider:"gps", minTimeMs:100, minDistanceM:0, onLocationUpdate);
    
        }
    
        private LocationListener onLocationUpdate = new LocationListener() {
    
            public void onLocationChanged(Location location) {
                TextView textView1 = (TextView) findViewById(R.id.text_view1);
                TextView textView2 = (TextView) findViewById(R.id.text_view2);
                // location.getLatitude(), location.getLongitude()に現在地の緯度経度が。
                data1 = location.getLatitude();
                data2 = location.getLongitude();
                String str1 = "Latitude:"+data1;
                textView1.setText(str1);
    
                // 経度の表示
                String str2 = "Longtude:"+data2;
                textView2.setText(str2);
                //Log.d("debug","checkSelfPermission true");
            }
            public void onProviderDisabled(String provider) {
            }
            public void onProviderEnabled(String provider) {
            }
            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
        };
    
    //ここから全くわかってないです↓
        public void onButtonClick(View view){
            switch (view.getId()) {
                case R.id.button1:
                    while(1){
                        
                    }
                    break;
            }
        }
    
        public void onButtonClick(View view){
            switch (view.getId()) {
                case R.id.button2:
                    System.out.println(new Date() + distance + "m");
                    break;
            }
        }
    
    }
    
[/code]




開始ボタンを押したら、1秒間隔のタイマーを起動する。  
終了ボタンを押したら、1秒間隔のタイマーを停止する。  
タイマーの処理の中でGPSの値を取得する。  
という流れになると思います。

