【发布时间】:2021-04-13 08:37:50
【问题描述】:
我正在编写一个代码来捕获用户的当前位置并在准确的时刻跟踪 GPS 坐标。
我正在使用 2 个按钮,一个是用于开始录制的“RecordButton”按钮,此时 gps 跟踪也已启动。
以及用于停止所有跟踪的 StopButton 按钮。只有当stopButton被按下时,app仍然会发送坐标并且不会停止发送。
已经尝试使用
fusedLocationProviderClient.removeLocationUpdates(locationCallback);在 StopRecordButton 侦听器中。
如果有人能帮助我,我将不胜感激。
我的代码:
cameraActionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { //Botão de Gravação do App; (Record button Action)
final HHConfigTCPClient hhudpClient = new HHConfigTCPClient(prefs.getString("prefServerIp", ""),
8085);
final boolean _paused = state.isPaused();
switch (cameraAction) {
case RECORD:
//Uma thread para rodar a localização
new Thread(new Runnable() {
@Override
public void run() {
MjpegFragment.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
fusedLocationProviderClient = new FusedLocationProviderClient(getActivity());
locationRequest = new LocationRequest();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setFastestInterval(4000);
locationRequest.setInterval(2000);
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
return;
}
fusedLocationProviderClient.requestLocationUpdates(locationRequest, new LocationCallback() {
@Override
public void onLocationResult(final LocationResult locationResult) {
super.onLocationResult(locationResult);
t.scheduleAtFixedRate(mTimerTask = new TimerTask() {
public void run() {
hhudpClient.set(HHConfigTCPClient.PROPERTY.LATITUDE, locationResult.getLastLocation().getLatitude());
state.setLatitude(locationResult.getLastLocation().getLatitude());
hhudpClient.set(HHConfigTCPClient.PROPERTY.LONGITUDE, locationResult.getLastLocation().getLongitude());
state.setLongitude(locationResult.getLastLocation().getLongitude());
}
}, 4000, 2000);
}
}, Looper.getMainLooper());
}
});
}
}).start();
stopRecordButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final HHConfigTCPClient hhudpClient = new HHConfigTCPClient(prefs.getString("prefServerIp", ""),
8085);
new Thread(new Runnable() {
@Override
public void run() {
HHConfigTCPClient hhudpClient = new HHConfigTCPClient(prefs.getString("prefServerIp", ""),
8085);
final double timestamp = System.currentTimeMillis();
if (hhudpClient.set(HHConfigTCPClient.PROPERTY.RECORD, 0.0, timestamp)) {
fusedLocationProviderClient.removeLocationUpdates(locationCallback);
} else {
MjpegFragment.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
showToast("Falha de Comunicação: comando stop.");
}
});
}
}
}
).start();
}
});
【问题讨论】:
标签: java android android-studio android-gps fusedlocationproviderapi