当前位置: 首页 > 面试题库 >

在不使用GPS或互联网的情况下获取用户的当前位置名称,而是通过在Android中使用Network_Provider

马德厚
2023-03-14
问题内容

此问题与“
Android:无需使用gps或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广播消息中包含的信息没有标准,每个移动运营商都可以选择使用还是不使用。

由于大多数运营商都不发送这些消息,因此可能不花任何时间尝试接收和解码它们。但是,如果您想尝试,可以注册BroadcastReceiverIntent操作的侦听:android.provider.Telephony.SMS_CB_RECEIVED。有关中包含哪些数据的更多详细信息,请参见文档Intent



 类似资料:
  • 问题内容: 是否可以在不使用GPS或互联网的情况下获取用户的当前位置?我的意思是在移动网络提供商的帮助下。 问题答案: 您要做的是使用而不是获取职位将解决在GSM或WiFi,这永远可用。显然,关闭wifi后,将使用GSM。请记住,使用小区网络的精度基本上可以达到500m。 http://developer.android.com/guide/topics/location/obtaining-us

  • 问题内容: 我正在尝试通过GPS功能获取用户的当前位置, 编写了一个实现的简单类 通过一个简单的动作,我正在访问这些经度和纬度值 但是它总是返回0.0作为结果。无法找出问题所在。 问题答案: 您必须在onCreate()返回之后才能触发您的位置更新回调。如果您将经纬度变量初始化为虚拟值,则可能会看到您正在打印这些值。 在onLocationChanged中添加一些日志记录,以便可以看到它已被触发,

  • 我们能在不使用互联网的情况下获取设备当前的纬度和经度吗?我使用以下代码。。单击按钮后,我将触发位置侦听器。 当它连接到internet时,可以很好地获取经度和纬度值,但当它未连接到internet时,返回null。 有什么问题吗?LocationManager.NETWORK_PROVIDER,5000,20, locationListener需要互联网来获取延迟和长时间吗? 如果需要互联网,那么

  • 问题内容: 关于基本的Android编程,我还有另一个问题: 如何访问GPS以获取正在运行该应用程序的手机的当前位置?检索信息需要多长时间?在这种情况下,GPS可能会被禁用,如何再次启用/禁用它。 必须在andorid清单中授予哪些权限? 问候和感谢您的回答, 诗丹 问题答案: 一些答案: 访问:请参见LocationManager和LocationListener。 权限:android.per

  • 问题内容: 我有一个2的幂的整数输入(1、2、4、8等)。我希望函数不使用log()返回位位置。例如,对于上述输入,对于C#,将分别返回{0,1,2,3}。另外,如果可以在SQL中完成。 谢谢! 问题答案: 我发现执行此操作最快的代码来自Bit Twiddling Hacks网站。具体而言,基于DeBruijn序列的查找。参见http://graphics.stanford.edu/~seande

  • 首先,如果这是一个很长的代码段,我很抱歉,但是,我想做一个模态窗口,它将你在我的用户表单中写的东西写下来,并要求你确认它。我目前正在学习Javascript,我不允许使用innerHTML,我必须动态地编写“名字”等(名字的文本),不允许只在弹出窗口内写它。我已经让大多数东西工作,但“名字”“名字”等显示为“未定义”,或者(正如你可以看到的,我在这种情况下只用名字尝试的事情)显示为“空”。 希望有