如何从将服务扩展到 MainActivity 的 LocationServices 活动传递纬度 n 经度值以在屏幕上显示它们而不是 Log.d
Posted
技术标签:
【中文标题】如何从将服务扩展到 MainActivity 的 LocationServices 活动传递纬度 n 经度值以在屏幕上显示它们而不是 Log.d【英文标题】:How to pass latitude n longitude values from LocationServices activity which extends Service to MainActivity to display them onscreen instead of Log.d 【发布时间】:2021-09-22 06:42:06 【问题描述】:LocationService中的代码extends服务活动是这样的:
private LocationCallback locationCallback = new LocationCallback()
@Override
public void onLocationResult(LocationResult locationResult)
super.onLocationResult(locationResult);
if(locationResult != null && locationResult.getLastLocation() != null)
double latitude = locationResult.getLastLocation().getLatitude();
double longitude = locationResult.getLastLocation().getLongitude();
Log.d("LOCATION_UPDATE","\nLat: "+ latitude +"\nLon: "+ longitude);
;
MainActivity extends AppCompatActivity 活动中调用按钮点击活动的代码是:
findViewById(R.id.buttonStartLocationUpdates).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
if(ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(MainActivity.this,
new String[] Manifest.permission.ACCESS_FINE_LOCATION,
REQUEST_CODE_LOCATION_PERMISSION);
else
startLocationService();
);
我有 2 个 id 为 latView 和 lonView 的 TexViews 来显示纬度和经度。 这个想法是显示我们从 LocationService 获得的更新纬度和经度,以便在单击开始按钮时显示。 我是android新手,似乎无法正确理解。请帮忙!提前致谢。
【问题讨论】:
【参考方案1】:一个简单的方法是
将locationCallback移到MainActivity,这样就可以访问TextView了,你可以轻松写
textView1.text = "$纬度"
为startLocation服务创建参数,如
startLocationService(LocationCallback)
然后您可以将 locationCallback 传递给服务。
不确定是否在 ui 线程中调用了位置回调。如果没有,您将需要致电
runOnUiThread
textView1.text = "$latitude"
所以这将全部在 MainActivity 中:
private LocationCallback locationCallback = new LocationCallback()
@Override
public void onLocationResult(LocationResult locationResult)
super.onLocationResult(locationResult);
if(locationResult != null && locationResult.getLastLocation() != null)
double latitude = locationResult.getLastLocation().getLatitude();
double longitude = locationResult.getLastLocation().getLongitude();
textView1.setText("" + latitude);
textView2.setText("" + longtitude);
;
....
startLocationService(locationCallback);
【讨论】:
嗯,你能告诉我如何实现它吗?我似乎无法让它工作。 “runOnUiThread 是在 MainActivity 还是 LocationService 活动下?以上是关于如何从将服务扩展到 MainActivity 的 LocationServices 活动传递纬度 n 经度值以在屏幕上显示它们而不是 Log.d的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring 中从将外键作为长属性引用的 json 创建模型?
如何在 Android 的 MainActivity 中暂停/播放背景音乐?