gpt4 book ai didi

java - 在不使用 gps 或 internet 的情况下获取用户的当前位置名称,但在 android 中使用 Network_Provider

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:12 25 4
gpt4 key购买 nike

这个问题与“Android: get current location of user without using gps or internet”中相同的流行 stackoverflow 问题直接相关,其中接受的答案实际上没有回答问题。

我应该能够通过网络提供商而不是 GPS 或互联网获取设备的当前位置名称(例如:城市名称、村庄名称)。以下是该问题的公认答案。 (以下代码部分应该包含在onCreate()方法中)

// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
makeUseOfNewLocation(location);
}

public void onStatusChanged(String provider, int status, Bundle extras) {}

public void onProviderEnabled(String provider) {}

public void onProviderDisabled(String provider) {}
};

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

我将链接答案中给出的上述代码更改如下但没有成功。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView txtView = (TextView) findViewById(R.id.tv1);
txtView.setText("ayyo samitha");
////

// Acquire a reference to the system Location Manager
LocationManager locationManager;
locationManager= (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
makeUseOfNewLocation(location);

}

private void makeUseOfNewLocation(Location location) {
txtView.setText("sam came in");
txtView.append(location.toString());
}

public void onStatusChanged(String provider, int status, Bundle extras) {}

public void onProviderEnabled(String provider) {
// makeUseOfNewLocation(location);
}

public void onProviderDisabled(String provider) {}
};

// Register the listener with the Location Manager to receive location updates
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
}

}

如何通过更正上述代码或任何其他方法来完成我想要的?请注意,我想要获取位置名称,而不是经度和纬度。有人可以帮帮我吗。

最佳答案

您在这里提到的内容(在旧手机上显示位置名称)是使用“小区广播”(或“CB”)完成的。这与 Location API 或其任何变体完全无关。

基站可以发送设备可以接收的广播信息(类似于“一对多 SMS”)。一些运营商使用小区广播来广播小区塔所在位置的名称。一些运营商使用小区广播来广播小区塔的位置(纬度/经度)。一些运营商已经使用小区广播来发送广告行情。 CB 广播消息中包含的信息没有标准,每个移动运营商都可以选择使用或不使用。

由于大多数运营商不发送这些消息,因此花时间尝试接收和解码它们可能没有意义。但是如果你想尝试,你可以注册一个 BroadcastReceiver 监听这个 Intent Action :android.provider.Telephony.SMS_CB_RECEIVED。参见 the documentation有关 Intent 中包含哪些数据的更多详细信息。

关于java - 在不使用 gps 或 internet 的情况下获取用户的当前位置名称,但在 android 中使用 Network_Provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com