如何解决Android – Java,将类的位置数据发送到活动视图
请帮助我,我正在使用android studio – Java。我有一个Activity(MainActivity),要在其中显示有关位置的信息;但是我希望此信息来自其他类(位置),朝向此MainActivity,如何使该位置类自动发送位置数据。 好吧,我曾尝试在MainActivity中调用该方法,该方法是从class-location获取位置数据的,但是此方法的参数为“ Location location”,因此无法直接调用它。 我曾尝试在“定位方法”中放置一个方法来发送信息,但这是行不通的 我将位置变量声明为全局变量,然后将其放在其他方法中发送给他们,但不起作用 我正在尝试使用额外的类来使用位置信息(纬度和经度),但是如何获取数据。 无论如何……请帮助我,这个主意是将一个类的位置信息:“ getLatitude()”和“ getLongitude()”自动传递给我的MainActivity,然后再传递给DDBB。 非常感谢您的帮助 这是“ MainActivity”类
public class MainActivity extends AppCompatActivity {
TextView tvlatitud,tvlongitud;
Location location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvlongitud = findViewById(R.id.tv_longitud);
tvlatitud = findViewById(R.id.tv_latitud);
location = new Location(this);
askLocation();
}
public void askLocation(){
location.updateGPS();
}
public void showData(String lat,String lon ){
tvlatitud.setText(lat);
tvlongitud.setText(lon);
}
这是Location类
public class Location extends AppCompatActivity {
private static final int PERMISSIONS_FINE_LOCATION = 99;
FusedLocationProviderClient fusedLocationProviderClient;
LocationRequest locationRequest;
String latitude1,longitude1;
private MainActivity mainActivity;
public Location(MainActivity mainActivity){
this.mainActivity = mainActivity;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
locationRequest = new LocationRequest();
locationRequest.setInterval(1000 * 30);
locationRequest.setFastestInterval(1000 * 50);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
updateGPS();
}
public void updateGPS() {
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(Location.this);
if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
fusedLocationProviderClient.getLastLocation().addOnSuccessListener(this,new OnSuccessListener<android.location.Location>() {
@Override
public void onSuccess(android.location.Location location) {
updateUIValues(location);
mainActivity.showData(latitude1,longitude1);
}
});
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,},PERMISSIONS_FINE_LOCATION);
}
}
}
private void updateUIValues(android.location.Location location) {
latitude1 = String.valueOf(location.getLatitude());
longitude1 = String.valueOf(location.getLongitude());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。