Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何使用服务中活动提供的功能_Android_Android Widget_Android Service - Fatal编程技术网

Android:如何使用服务中活动提供的功能

Android:如何使用服务中活动提供的功能,android,android-widget,android-service,Android,Android Widget,Android Service,我是Android新手,正在开发一个应用程序,在这个应用程序中,我的小部件显示位置信息。我是通过配置活动来实现这一点的。刷新按钮上的相同位置刷新。一切正常,但小部件上的活动屏幕闪烁。我希望从服务中获得相同的输出,以便活动屏幕不会在前面闪烁 为此,我创建了一项服务,可在单击“刷新”按钮时启动,但现在我如何编写代码,因为我使用了地图视图、位置管理器等服务,而这些服务不允许使用。在您的服务中,您可以使用以下内容: private void startPositionListener() {

我是Android新手,正在开发一个应用程序,在这个应用程序中,我的小部件显示位置信息。我是通过配置活动来实现这一点的。刷新按钮上的相同位置刷新。一切正常,但小部件上的活动屏幕闪烁。我希望从服务中获得相同的输出,以便活动屏幕不会在前面闪烁


为此,我创建了一项服务,可在单击“刷新”按钮时启动,但现在我如何编写代码,因为我使用了地图视图、位置管理器等服务,而这些服务不允许使用。

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

    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.");
        }
}
其中
mNetworkListener
mGpsListener
属于实现
LocationListener
的类。您必须填写的唯一方法是
onLocationChanged(Location)
(这是您在服务内部获取职位数据的地方)。完成以下操作后,不要忘记停止更新这些对象:

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

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