在Android中,可以使用LocationListener来监听位置变化,并在相机停止后捕捉位置。以下是一个示例代码:
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity implements LocationListener {
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 检查定位权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
// 初始化LocationManager
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
// 启动位置更新
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
}
@Override
protected void onPause() {
super.onPause();
// 停止位置更新
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(Location location) {
// 在这里处理位置变化事件
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Toast.makeText(this, "Latitude: " + latitude + " Longitude: " + longitude, Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// 在这里处理位置状态变化事件
}
@Override
public void onProviderEnabled(String provider) {
// 在这里处理位置提供者启用事件
}
@Override
public void onProviderDisabled(String provider) {
// 在这里处理位置提供者禁用事件
}
}
注意:以上代码假设已经在AndroidManifest.xml中声明了相应的权限和配置。