我正在制作一个代码来捕捉用户的当前位置,并在准确的时刻跟踪gps坐标。
我有两个按钮,我正在使用,一个是“recordbutton”按钮,用于开始录制,在这一刻gps跟踪也开始了。
以及停止按钮,用于停止所有跟踪。只有当按下停止按钮时,应用程序仍会发送坐标并且不会停止发送。
已尝试使用
fusedlocationproviderclient.RemovelocationUpdate(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();
}
});
1条答案
按热度按时间sxissh061#