而实现的android appwidget位置监听器问题 [英] Problem while implement location listener in android appwidget

查看:261
本文介绍了而实现的android appwidget位置监听器问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个小工具,将得到当前GPS位置,该值传递给远程PHP页面来获取信息,并在控件中显示。这就是我想要做的事情。

I am working on a Widget which will get the Current GPS location and pass this value to remote PHP page to get the Information and display it in the Widget. This is what I am trying to do.

我现在面临的问题,同时实现位置监听器的appWidget。它没有更新的当前位置,它是显示初始窗口小部件,即装入小工具(在这里,我把这个文本)

I am facing problem while implementing Location Listener for appWidget. It is not updating with the Current Location and It is showing the initial widget i.e "Loading Widget"(Here I put this text)

我们能实现位置监听器AppWidgetProvider?
  或者
  您能否提供我的应用工具?

Can we implement Location Listener for AppWidgetProvider?
Or
Can you suggest me the possible solution for getting GPS location in App Widget?

我把所有必需的权限清单文件。
这是我的code代码片段:

I placed all necessary permissions in Manifest file.
Here is my code snippet:

public class test extends AppWidgetProvider {
static LocationManager locMan;
static Location curLocation;
static Boolean locationChanged;

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
	// To prevent any ANR timeouts, we perform the update in a service
	context.startService(new Intent(context, UpdateService.class));
}

public static class UpdateService extends Service {
	// GPS Listener Class
	LocationListener gpsListener = new LocationListener() {
		public void onLocationChanged(Location location) {
			// Log.w("GPS", "Started");
			if (curLocation == null) {
				curLocation = location;
				locationChanged = true;
			}

			if (curLocation.getLatitude() == location.getLatitude()	&& curLocation.getLongitude() == location.getLongitude())
				locationChanged = false;
			else
				locationChanged = true;

			curLocation = location;

			if (locationChanged) 
				locMan.removeUpdates(gpsListener);

		}

		public void onProviderDisabled(String provider) {

		}

		public void onProviderEnabled(String provider) {
			// Log.w("GPS", "Location changed", null);
		}

		public void onStatusChanged(String provider, int status,
				Bundle extras) {
			if (status == 0)// UnAvailable
			{

			} else if (status == 1)// Trying to Connect
			{

			} else if (status == 2) {// Available

			}
		}

	};

	// In service start method, I am registering for GPS Updates
	@Override
	public void onStart(Intent intent, int startId) {

		locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
		if (locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
			locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,20000, 1, gpsListener);
		} else {
			this.startActivity(new Intent("android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS"));
		}

		if (curLocation != null) {
			double lat = curLocation.getLatitude();
			double lng = curLocation.getLongitude();
			Toast.makeText(getBaseContext(),"Lat : " + String.valueOf(lat) + "\n Long : "+ String.valueOf(lng), Toast.LENGTH_LONG).show();

		}
		// Build the widget update for today
		RemoteViews updateViews = buildUpdate(this);

		// Push update for this widget to the home screen
		ComponentName thisWidget = new ComponentName(this,InKakinadaWidget.class);
		AppWidgetManager manager = AppWidgetManager.getInstance(this);
		manager.updateAppWidget(thisWidget, updateViews);

	}

	public RemoteViews buildUpdate(Context context) {
		// Here I am updating the remoteview
		return updateViews;
	}

	@Override
	public IBinder onBind(Intent intent) {
		// We don't need to bind to this service
		return null;
	}

}
}

在此先感谢...

与问候, Raghavendraķ。

With Regards, Raghavendra K.

推荐答案

您有在模拟器或设备上的这个问题吗?如果在模拟器上,请确保您使用DDMS设置GPS位置。但最简单的事情可能是在设备上运行code,看看你的GPS更新的方式。

Are you having this problem in the emulator or on a device? If on the emulator, make sure you use DDMS to set a GPS location. But the easiest thing to do might be to run your code on a device to see if you get GPS updates that way.

这篇关于而实现的android appwidget位置监听器问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆