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