【问题标题】:Android: How to use function given by Activity in ServiceAndroid:如何在服务中使用 Activity 提供的功能
【发布时间】:2012-08-02 11:34:16
【问题描述】:

我是 Android 新手,正在开发一个应用程序,我的小部件会在其中显示 Location latlong。我正在通过配置活动执行此操作。在刷新按钮上刷新相同的位置。一切正常,但小部件上的活动屏幕闪烁。我希望服务的输出相同,这样活动屏幕就不会在前面闪烁。

为此,我创建了一个在单击刷新按钮时启动的服务,但现在我如何在使用地图视图、位置管理器等服务时编码。

【问题讨论】:

  • 我不认为我理解这个问题。能否请您更详细地描述一下?
  • 以前我在点击刷新按钮时调用了一个活动,它会找到最新的 LAT LONG 并更新小部件。它工作正常,但在更新小部件之前活动屏幕会闪烁。现在我想为此目的使用服务而不是活动。但问题是我在活动代码中使用位置管理器和地图视图等来查找位置,但在服务中这些是不允许的。
  • 你当然可以在Service 中使用LocationManager :)

标签: android android-widget android-service


【解决方案1】:

在您的服务中,您可以使用以下内容:

    private void startPositionListener() {
        if (mLocationManager == null) {
            // Get the location manager
            mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        }
        try {
            gpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            networkEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        // Register the listener with the Location Manager to receive location updates
        if(gpsEnabled) {
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 1, mGpsListener);
            Log.d(TAG, "GPS Listener started.");
        } else if(networkEnabled) { // Checking for GSM
            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 1, mNetworkListener);
            Log.d(TAG, "Network Listener started.");
        }
}

其中mNetworkListenermGpsListener 属于实现LocationListener 的类。您必须填写的唯一方法是onLocationChanged(Location)(这是您在服务中获取位置数据的地方)。完成以下操作后不要忘记停止更新这些对象:

private void stopPositionListner() {
        if (mLocationManager != null) {
            mLocationManager.removeUpdates(mGpsListener);
            mLocationManager.removeUpdates(mNetworkListener);
            Log.d(TAG, "Position Listener stopped.");
        }
    }

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多