0 0

关于安卓LocationListener 的问题5

我刚学安卓几天,现在在看着一本书编写一个例子
就是通过发送短信来定位,可是短信可以发送成功,但是不能自动定位。具体代码如下:
public class ReceiverSMS extends BroadcastReceiver{
	
	LocationManager locationManager;
	LocationListener locationListener;
	String senderTel;
	
	@Override
	public void onReceive(Context context, Intent intent) {
		Bundle bundle = intent.getExtras();
		SmsMessage[] msgs = null;
		String str = "SMS from";
		senderTel = "";
		if(bundle != null){
			Object[] pdus = (Object[])bundle.get("pdus");
			msgs = new SmsMessage[pdus.length];
			for (int i = 0; i < msgs.length; i++) {
				msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
				if(i == 0){
					senderTel = msgs[i].getOriginatingAddress();
				}
				str += msgs[i].getMessageBody().toString();
			}
			if(str.indexOf("你在哪") >=0){
//				//TODO 开始定位
				locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
				locationListener = new MyLocationListener();
				
				locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 5, locationListener);
				this.abortBroadcast();
			}
		}
	}

	private class MyLocationListener implements LocationListener{

		@Override
		public void onLocationChanged(Location location) {
			if(location != null){
				
				SmsManager sms = SmsManager.getDefault();
				sms.sendTextMessage(senderTel, null, "http://maps.google.com/maps?q="+location.getLatitude()+","+location.getLongitude(), null, null);
				locationManager.removeUpdates(locationListener);	
			}
		}

		@Override
		public void onProviderDisabled(String provider) {
			
		}

		@Override
		public void onProviderEnabled(String provider) {
			
		}

		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {
			
		}
		
	}
}



其中功能就是说我用手机给一个装有该app的电话发送一条短信,短信内容包括:你在哪,然后接收短信的手机会自动回复一个带有经纬坐标的一个链接。现在是短信可以正常接收,但是接收短信的手机不会自动回复消息,后台也没有报错,
2014年5月08日 10:57

3个答案 按时间排序 按投票排序

0 0

LocationListener这个监听器没有执行,原因是因为你的app在后台

2019年11月21日 14:24
0 0

你调用

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 5, locationListener);  


以后,一直都没有回调你的回调函数。

从你的参数可以看出,你希望60秒调用一次你的回调函数,你希望位置变化超过5米以后调用一次你的回调函数,你看看是不是这两个数值设置得太大了。

如果你只希望调用一次的话,可以调用
locationManager.requestSingleUpdate
的方法。

2014年5月08日 14:40
0 0

38行的地方location等于null吗?

2014年5月08日 13:59

相关推荐

    android gps 获取经纬度

    在Android开发中,获取GPS(全球定位系统)的经纬度是一项...以上就是关于“Android GPS 获取经纬度”的详细说明,希望能帮助你理解和实现相关功能。如果你需要进一步的代码示例或者对某个环节有疑问,欢迎继续探讨。

    安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip

    这个压缩包“安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip”提供了一个实践示例,展示了如何在Android平台上实现基于GPS和WIFI的定位功能。下面将详细讲解这两个定位技术及其在源码中的应用。 1. GPS...

    安卓android GPS

    【安卓Android GPS详解】 在移动设备领域,GPS(全球定位系统)是不可或缺的一部分,尤其是在安卓Android平台上。Android系统为开发者提供了强大的GPS功能,使得应用程序能够获取精确的位置信息,实现地图导航、...

    获取基站信息android

    在 Android 中,需要在 AndroidManifest.xml 文件中添加权限 `&lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;` 或 `&lt;uses-permission android:name="android.permission.ACCESS_...

    Android根据GPS获取经纬度和海拔

    import android.location.LocationListener; import android.location.LocationManager; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core....

    Android GPS定位(获取经纬度)

    为了解决这个问题,我们可以封装一个名为GpsLocationManager的管理类,优化定位策略。例如,可以设置一个合适的最小更新时间间隔和距离,或者当达到指定精度时停止更新: ```java public class GpsLocationManager ...

    android使用GPS获取当前地理位置

    在本文中,我们将深入探讨如何正确使用Android的GPS功能来获取地理位置,以及避免一些常见问题。 首先,避免使用`getLastKnownLocation`方法来直接获取当前位置。这个方法可能会返回null,因为它既用于获取当前地理...

    安卓Android源码——获取精度纬度.zip

    本压缩包文件"安卓Android源码——获取精度纬度.zip"可能包含了一个示例项目或代码片段,用于演示如何在Android应用程序中获取这些地理位置信息。下面我们将深入探讨这个主题。 首先,Android提供了LocationManager...

    安卓Android源码——GPS及WIFI基站定位坐标源码.zip

    本压缩包"安卓Android源码——GPS及WIFI基站定位坐标源码.zip"包含了实现GPS(全球定位系统)和WIFI基站定位的源代码示例,这将有助于开发者深入理解这两种定位机制的工作原理及其在实际应用中的集成。 GPS定位是...

    android基于Gps 定位和基站定位获取经纬度

    提供的博文链接指向了一个ITeye上的博客文章,作者分享了关于Android定位的一些实践经验和源码示例。博主可能详细介绍了如何集成上述代码并进行实际应用,包括错误处理、位置精度优化等方面。 5. 文件名"Location3...

    android gps例程

    在实际开发中,还应该考虑用户是否已开启GPS服务,以及处理可能的权限问题。例如,使用shouldShowRequestPermissionRationale和ActivityCompat.requestPermissions来处理运行时权限请求。 当不再需要位置更新时,...

    安卓Android源码——android 获取精度纬度.rar

    本压缩包文件“安卓Android源码——android 获取精度纬度.rar”可能包含了实现这一功能的相关源代码,用于帮助开发者理解和实现定位服务。 在Android平台上,获取地理位置信息主要依赖于`LocationManager`类和`...

    Android程序设计 安卓运动步数app(实现定位,行走路径,行走步数)

    在Android程序设计中,开发一款安卓运动步数App是一个典型的移动健康应用案例,它涉及到GPS定位、运动路径绘制以及步数计数等多个技术点。在这个项目中,我们将深入探讨如何利用Java编程语言来实现这些功能。 首先...

    android-GPS位置模拟精简代码自创可用

    以上就是关于“android-GPS位置模拟精简代码自创可用”的核心知识点,它可以帮助开发者在测试阶段高效地验证与位置相关的功能。通过理解并运用这些知识,你可以在不离开办公室的情况下完成地理位置功能的测试和调试...

    Android开发之百度地图定位打卡

    总的来说,实现“Android开发之百度地图定位打卡”涉及到Android应用开发基础、百度地图API的集成与使用、位置服务的管理和定制化功能的实现等多个方面,需要开发者具备扎实的Android编程技能和良好的问题解决能力。...

    Android GPS程序源码

    在Eclipse中创建Android项目时,我们需要导入`android.location`包,以便使用`LocationManager`和`LocationListener`这两个关键类。 `LocationManager`是Android系统服务,它负责管理不同的位置提供者,如GPS。我们...

    Android获取GPS定位示例程序

    import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import ...

    安卓Android源码——GpsTest源码.zip

    其次,GpsTest 会展示关于 GPS 卫星状态的信息,包括可视卫星的数量、信号质量(PDOP值)等。这些信息通过 Location 对象的 `getSatellites()` 方法获取,然后在 UI 上进行更新。 此外,GpsTest 可能还包括地图集成...

    Android GPS获得定位数据源代码

    在Android开发中,获取GPS定位数据是常见的需求,主要用于实现地图导航、位置服务等功能。本文将详细介绍如何通过源代码在Android设备上获取GPS定位信息,并将其存储到SQLite本地数据库中。 首先,Android系统提供...

    android模拟器使用gps定位

    在实际开发中,我们可能还需要处理定位权限问题,以及考虑到网络定位(`LocationManager.NETWORK_PROVIDER`)作为GPS的补充,特别是在室内或GPS信号弱的情况下。 通过`Location`对象,不仅可以获取经纬度,还可以...

Global site tag (gtag.js) - Google Analytics