怎么能找到富婆GPS

加载中,请稍候...
加载中,请稍候...
商品名称:
京东价:暂无报价
评价得分:
咨询内容:
你好:我的导航要打开GPS
怎么找不到
京东回复:
您好!可以在安卓系统下的设置里打开我的位置选项即可使用GPS功能。感谢您对京东的支持!祝您购物愉快!
发表咨询:
声明:您可在购买前对产品包装、颜色、运输、库存等方面进行咨询,我们有专人进行回复!因厂家随时会更改一些产品的包装、颜色、产地等参数,所以该回复仅在当时对提问者有效,其他网友仅供参考!咨询回复的工作时间为:周一至周五,9:00至18:00,请耐心等待工作人员回复。
咨询类型:
库存及配送
发票及保修
促销及赠品
京东承诺:商品均为原装正品行货,自带机打发票,严格执行国家三包政策,享受全国联保服务。
功能咨询:咨询商品功能建议您拨打各品牌的官方客服电话,以便获得更准确的信息。
发货时间:现货:下单后一日内即可发货;在途:一般1-2天发货; 预订:一般1-6天可发货;无货:已售完,相应物流中心覆盖地区内的用户不能购买
运&&&&费:如需查看快递运输收费标准及免运费规则,
货到付款:如需查看开通货到付款地区及运费,
上门自提:上门自提不收取运费,如需查看全部自提点位置、地图、注意事项,
物流中心:京东商城拥有北京、上海、广州三个物流中心,各物流中心覆盖不同的城市,
限&&&&额:如需查看各银行在线支付限额,
大额支付:快钱支付中的招行、工行、建行、农行、广发支持大额支付,最高单笔一次支付10000元
分期付款:单个商品价格在500元以上,可使用中国银行、招商银行发行的信用卡申请分期付款,
货到付款:如需查看开通货到付款地区及运费,
京东承诺:商品均为原装正品行货,自带机打发票,严格执行国家三包政策,享受全国联保服务。
发票类型:京东商城所售商品均自带机打发票,在提供相关企业资料证明后,可申请开取增值税发票。
退 换 货:京东商城为您提供完善的退换货服务,
咨询内容:如何在任何手机上找到GPS定位
IT168网站原创
 作者: 景保玉 编辑:
&&&&&&& 【IT168技术】前一段时间,我曾在另一篇文章提到,我想采取的位置广播思想,开发后续移动解决方案。当时的问题是我没有办法摆脱手机来获取位置信息,或者使位置数据变得有用的一种方法。在这篇文章中,我将演示如何让你的手机获取GPS坐标.即使您的手机没有内置的全球定位系统。  定位为什么如此的困难?  电话技术成熟的速度是惊人的。目前有一大批手机都内置了全球定位系统,&智能&手机有数百人的平均价格标签,而我们大多数人没有争先购买以更换我们目前的手机。事实上,全球定位系统还不包括无处不在的位置,这是真正的困难。我们的目标是让手机获得任何地点的位置,不只是GPS功能的手机。困难就在于此。  谷歌能做到,为什么我们不能?  如果您尚未与谷歌的移动地图进行比赛,我强烈推荐它。这实在是一种方便的小应用程序,尤其是当您在旅途中,需要你的地图时。但是,在我的电话中也有移动地图的作品,而我并没有全球定位系统。这怎么可能?在没有全球定位系统的情况下,谷歌利用普通手机的数据通过他们的手机地图已经找到了如何确定您的位置。也就是说,没有全球定位系统的情况下,寻找位置是可能的。事实上,让我们先来解构谷歌移动地图工程的项目,并用C#构建它备份。  协议分析  我不打算在此详述有关协议或数据包分析器(我使用Microsoft网络监视器)。我只想说,第一步解构谷歌手机地图是分析HTTP请求,而手机地图是通过ActiveSync运行。  快速浏览移动地图揭示了几件事情。首先,谷歌发布请求/glm/mmap的位置数据。我已经冲刷了它们的API。这意味着,我们正在寻找自己如何包装和发送数据。其次,他们的数据发送四个关键部分:  1、Cell Tower编号  2、位置区码(LAC)  3、移动网络代码(MNC)  4、移动国家代码(MCC)  这是个好消息!事实证明,几乎所有的手机都具有这样随时可用的数据。  Cell Tower数据-无线接口层  我们需要破解打开Windows Mobile无线接口层Cell塔获取数据。此外,您可以从MSDN 搜索RIL来获取整个RIL 库的细节。我们只关心RIL的Cell Tower端口部分。我们首先需要做的是添加必要的PInvoke DLL Import签名,调用无线接口层。  代码片段:<span style="color: # [DllImport(&ril.dll&)]<span style="color: # <span style="color: #   private static extern IntPtr RIL_Initialize(uint dwIndex, RILRESULTCALLBACK pfnResult,<span style="color: # <span style="color: #   RILNOTIFYCALLBACK pfnNotify, uint dwNotificationClasses,<span style="color: # <span style="color: #   uint dwParam, out IntPtr lphRil);<span style="color: # <span style="color: #   [DllImport(&ril.dll&, EntryPoint = &RIL_GetCellTowerInfo&)]<span style="color: # <span style="color: #   private static extern IntPtr RIL_GetCellTowerInfo(IntPtr hRil);<span style="color: # <span style="color: #   [DllImport(&ril.dll&, EntryPoint = &RIL_Hangup&)]<span style="color: # <span style="color: #   private static extern IntPtr RIL_Hangup(IntPtr hRil);<span style="color: # <span style="color: #   [DllImport(&ril.dll&)]<span style="color: # <span style="color: #   private static extern IntPtr RIL_Deinitialize(IntPtr hRil);<span style="color: # <span style="color: #  这四个方法包含在ril.dll中,是我们获得Cell Tower数据的通路。有了这些方法,以及他们的回调RILRESULTCALLBACK和RILNOTIFYCALLBACK结构,我们可以很容易地调用Windows 窗口来获得我们的Cell Tower 数据。  代码片段:<span style="color: # public static CellTower GetCellTowerInfo()<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   IntPtr radioInterfaceLayerHandle = IntPtr.Z<span style="color: # <span style="color: #   IntPtr radioResponseHandle = IntPtr.Z<span style="color: # <span style="color: #   // Initialize the radio layer with a result callback parameter.<span style="color: # <span style="color: #   radioResponseHandle = RIL_Initialize(<span style="color: #, new RILRESULTCALLBACK(CellDataCallback),<span style="color: # <span style="color: #   null, <span style="color: #, <span style="color: #, out radioInterfaceLayerHandle);<span style="color: # <span style="color: #   // The initialize API call will always return <span style="color: # if initialization is successful.<span style="color: # <span style="color: #   if (radioResponseHandle != IntPtr.Zero)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   return null;<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   // Query for the current tower data.<span style="color: # <span style="color: #   radioResponseHandle = RIL_GetCellTowerInfo(radioInterfaceLayerHandle);<span style="color: # <span style="color: #   // Wait for cell tower info to be returned since RIL_GetCellTowerInfo invokes the<span style="color: # <span style="color: #   // callback method asynchronously.<span style="color: # <span style="color: #   waithandle.WaitOne();<span style="color: # <span style="color: #   // Release the RIL handle<span style="color: # <span style="color: #   RIL_Deinitialize(radioInterfaceLayerHandle);<span style="color: # <span style="color: #   // Convert the raw tower data structure data into a CellTower object<span style="color: # <span style="color: #   return new CellTower()<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   TowerId = Convert.ToInt32(_towerDetails.dwCellID),<span style="color: # <span style="color: #   LocationAreaCode = Convert.ToInt32(_towerDetails.dwLocationAreaCode),<span style="color: # <span style="color: #   MobileCountryCode = Convert.ToInt32(_towerDetails.dwMobileCountryCode),<span style="color: # <span style="color: #   MobileNetworkCode = Convert.ToInt32(_towerDetails.dwMobileNetworkCode),<span style="color: # <span style="color: #   };<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #  现在,我们可以调用GetCellTowerInfo(),我们将得到强类型CellTower类以及所有细节返回值。我总是喜欢在一个强类型的PInvoke输出,而不是代表编组工作的指针。  注释:此代码将不能在一个仿真器运行,除非你配置蜂窝仿真并且能够很好的运行。我建议使用手机,而不是仿真器。  Cell 数据服务  我们有了Cell Tower的数据,但现在能够做什么?我们还没有全球定位系统坐标。我们知道,谷歌正在使这种转换发生,Cell Tower数据为纬度和长,我们要继续剖析谷歌手机地图。他们正在给上述URL上传二进制数据。同样,分析协议超出了本文的范围。你会发现,我们需要换一个55字节数组的数据。字节的大部分是空的(0),但我们确实需要填补数组中的几个关键项。下面的代码来创建和用Cell Tower数据填充字节数组:  代码片段:<span style="color: # private static byte[] GetFormPostData(int cellTowerId, int mobileCountryCode,<span style="color: # <span style="color: #   int mobileNetworkCode, int locationAreaCode)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   byte[] pd = new byte[<span style="color: #];<span style="color: # <span style="color: #   pd[<span style="color: #] = <span style="color: #; //<span style="color: #x0e;<span style="color: # <span style="color: #   pd[<span style="color: #] = <span style="color: #; //<span style="color: #x1b;<span style="color: # <span style="color: #   pd[<span style="color: #] = <span style="color: #5; //<span style="color: #<span style="color: # <span style="color: #   pd[<span style="color: #] = <span style="color: #5; //<span style="color: #<span style="color: # <span style="color: #   pd[<span style="color: #] = <span style="color: #5; //<span style="color: #<span style="color: # <span style="color: #   pd[<span style="color: #] = <span style="color: #5; //<span style="color: #<span style="color: # <span style="color: #   // GSM uses <span style="color: # digits while UTMS used <span style="color: # digits (hex)<span style="color: # <span style="color: #   pd[<span style="color: #] = ((Int64)cellTowerId & <span style="color: #536) ? (byte)<span style="color: # : (byte)<span style="color: #;<span style="color: # <span style="color: #   Shift(pd, <span style="color: #, mobileNetworkCode);<span style="color: # <span style="color: #   Shift(pd, <span style="color: #, mobileCountryCode);<span style="color: # <span style="color: #   Shift(pd, <span style="color: #, cellTowerId);<span style="color: # <span style="color: #   Shift(pd, <span style="color: #, locationAreaCode);<span style="color: # <span style="color: #   Shift(pd, <span style="color: #, mobileNetworkCode);<span style="color: # <span style="color: #   Shift(pd, <span style="color: #, mobileCountryCode);<span style="color: # <span style="color: #   <span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   /// <span style="color: # <span style="color: #   /// Shifts specified data in the byte array starting at the specified array index.<span style="color: # <span style="color: #   /// <span style="color: # <span style="color: #   /// The data.<span style="color: # <span style="color: #   /// The start index.<span style="color: # <span style="color: #   /// The left operand.<span style="color: # <span style="color: #   private static void Shift(byte[] data, int startIndex, int leftOperand)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   int rightOperand = <span style="color: #;<span style="color: # <span style="color: #   for (int i = <span style="color: #; i & <span style="color: #; i++, rightOperand -= <span style="color: #)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   data[startIndex++] = (byte)((leftOperand && rightOperand) & <span style="color: #5);<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #  总之,我们可以通过在我们的4个参数:Cell Tower的 ID,LAV,MNC,和MCC,我们得到一个字节数组,并且可以通过HTTP上传到谷歌。下面的代码演示了整个HTTP请求,这需要我们的强类型的Cell Tower的数据(从上述的PInvoke),从谷歌的数据库中返回纬度和经度!  代码片段:&&1 internal static GeoLocation GetLocation(CellTower tower)&&2 &&3   {&&4 &&5   try&&6 &&7   {&&8 &&9   // Translate cell tower data into http post parameter data<span style="color: # <span style="color: #   byte[] formData = GetFormPostData(tower.TowerId,<span style="color: # <span style="color: #   tower.MobileCountryCode,<span style="color: # <span style="color: #   tower.MobileNetworkCode,<span style="color: # <span style="color: #   tower.LocationAreaCode);<span style="color: # <span style="color: #   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(<span style="color: # <span style="color: #   new Uri(Google_Mobile_Service_Uri));<span style="color: # <span style="color: #   request.Method = &POST&;<span style="color: # <span style="color: #   request.ContentLength = formData.L<span style="color: # <span style="color: #   request.ContentType = &application/binary&;<span style="color: # <span style="color: #   Stream outputStream = request.GetRequestStream();<span style="color: # <span style="color: #   // Write the cell data to the http stream<span style="color: # <span style="color: #   outputStream.Write(formData, <span style="color: #, formData.Length);<span style="color: # <span style="color: #   outputStream.Close();<span style="color: # <span style="color: #   HttpWebResponse response = (HttpWebResponse)request.GetResponse();<span style="color: # <span style="color: #   return ReadResponse(response);<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   catch{}<span style="color: # <span style="color: #   return GeoLocation.E<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   private static GeoLocation ReadResponse(HttpWebResponse response)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   byte[] responseData = new byte[response.ContentLength];<span style="color: # <span style="color: #   int bytesRead = <span style="color: #;<span style="color: # <span style="color: #   // Read the response into the response byte array<span style="color: # <span style="color: #   while (bytesRead & responseData.Length)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   bytesRead += response.GetResponseStream()<span style="color: # <span style="color: #   .Read(responseData, bytesRead, responseData.Length - bytesRead);<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   // Check the response<span style="color: # <span style="color: #   if (response.StatusCode == HttpStatusCode.OK)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   int successful = Convert.ToInt32(GetCode(responseData, <span style="color: #));<span style="color: # <span style="color: #   if (successful == <span style="color: #)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   return new GeoLocation()<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   Latitude = GetCode(responseData, <span style="color: #) / <span style="color: #00000,<span style="color: # <span style="color: #   Longitude = GetCode(responseData, <span style="color: #) / <span style="color: #00000<span style="color: # <span style="color: #   };<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   return GeoLocation.E<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   /// <span style="color: #0 <span style="color: #1   /// Gets the latitude or longitude from the byte array.<span style="color: #2 <span style="color: #3   /// <span style="color: #4 <span style="color: #5   /// The byte array.<span style="color: #6 <span style="color: #7   /// The start index.<span style="color: #8 <span style="color: #9   /// <span style="color: #0 <span style="color: #1   private static double GetCode(byte[] data, int startIndex)<span style="color: #2 <span style="color: #3   {<span style="color: #4 <span style="color: #5   return ((double)((data[startIndex++] && <span style="color: #) |<span style="color: #6 <span style="color: #7   (data[startIndex++] && <span style="color: #) |<span style="color: #8 <span style="color: #9   (data[startIndex++] && <span style="color: #) |<span style="color: #0 <span style="color: #1   (data[startIndex++])));<span style="color: #2 <span style="color: #3   }<span style="color: #4 <span style="color: #5  简要的Cell Tower说明  让我花一点时间来描述刚刚发生。我们从系统中读取Cell Tower 数据,发送通过HTTP协议发送给谷歌,并回来经度和纬度。这样能行得通吗?  联邦通讯委员会保留了在美国的每一个Cell Tower纪录。谷歌没有做任何(太)神奇的事情。他们只是简单地为我们提交的Cell Tower数据查找细节。以纬度/经度的格式返比较知名的Tower的具体位置。  但是,谷歌并不是塔的具体位置的唯一数据库。 OpenCellID.org是一个开源的倡议,来标记所有的Cell Tower地图和GPS坐标。雅虎!正在用他们的ZoneTag服务做同样的事情。  如果有更容易的选择为什么还要不厌其烦地使用谷歌?  这是一个很大的问题!简单地说,谷歌是最全面的数据库。 OpenCellID和ZoneTag较新,他们的数据库不完整,用这些&测试&服务其中之一,在主要城市郊区的家里甚至不能获得一个有效的全球定位系统。但是,谷歌的作品在任何地方我已经测试过。  如果我的手机有GPS那将会是怎样一个情况?  当然,Cell Tower的数据并不能像全球定位系统那样精确。你并不能利用手机中Cell Tower 的数据告诉我你的具体位置,如果在你附近10英尺或1000英尺有Cell Tower。换句话说,最好使用全球定位系统,因为它的精确度。但是有例外,如当你在室内,无法获得的GPS信号时,你很可能仍然有Cell Tower连接。  从兼容的手机获取GPS数据比获取Cell Tower的数据更容易。更好的是-微软已经分发了一个库来做所有繁重的事情。  代码片段:<span style="color: # private Gps _gps = new Gps();<span style="color: # <span style="color: #   private GpsPosition _currentP<span style="color: # <span style="color: #   public void Start()<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   _gps.LocationChanged += new<span style="color: # <span style="color: #   Microsoft.Location.LocationChangedEventHandler(_gps_LocationChanged);<span style="color: # <span style="color: #   if (!_gps.Opened)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   _gps.Open();<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   private void _gps_LocationChanged(object sender,<span style="color: # <span style="color: #   Microsoft.Location.LocationChangedEventArgs args)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   _currentPosition = args.P<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #  到目前为止,我们已经建立了两个机制来获取您的手机的经度和纬度。我们现在有尽可能多的潜力,例如,谷歌地图!  什么是好的位置呢?  我一般知道我在哪里,所以知道我的位置并没有多大帮助。像谷歌手机地图的应用已经显示我的位置,但他们没有利用它做任何东西。这是我的意见,即基于位置服务的真正价值在分享您的位置,而不仅仅是知道你的位置。这是社交网络下一个必然会发生的。  充分利用位置  你应该拿出下次如何处理您的位置的很建议。我的第一个创造性的催化剂就是利用您的经度和纬度更新您的Yahoo!火鹰帐户。火鹰是从雅虎开的新服务!将你的位置,&广播&到您的订阅(在其快速增长的库应用程序)。其实,这就是这个项目被命名为DeepCast的原因。我们正在广播的位置给(潜在的)深度的服务和服务提供者。  火鹰  火鹰使用Oauth作为其授权的平台。我不是那么熟悉所有Oauth细节。我所知道的是,有一个授权的手工过程可以在任何应用程序进行更新。在Oauth认证的第一步是生成一个请求令牌和秘密对。 &&& 然后,您可以浏览(通过您的桌面浏览器)授权网址。&&&&&&&&您必须手动确认应用程序可以更新您的个人资料。&&&&&&& 最后,您有您的要求,交换令牌和授权令牌和秘密。这些价值观您需要保存和使用每次应用程序尝试更新您的位置。&&&&&&& Twitter  有很少来形容更新Twitter的条款。它像发送一个HTTP请求那样简单。一个困难是增加一个链接到邮件中。 Twitter的使用形式的URL编码截断最查询字符串。我们将生成一个TinyUrl避开这个问题。  下面是我们如何更新Twitter的:<span style="color: # internal override void Update(GeoLocation location)<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   if (!string.IsNullOrEmpty(Settings.TwitterEmail) &&<span style="color: # <span style="color: #   !string.IsNullOrEmpty(Settings.TwitterPassword))<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   string googleMapLink = string.Format(Google_Map_Uri,<span style="color: # <span style="color: #   location.Latitude, location.Longitude);<span style="color: # <span style="color: #   string tilyMapLink = TinyUrlService.GetTinyUrl(googleMapLink);<span style="color: # <span style="color: #   string place = string.Format(&I'm here: {0} - 'L:{1}, {2}'&,<span style="color: # <span style="color: #   new object[] { tilyMapLink, location.Latitude, location.Longitude });<span style="color: # <span style="color: #   string data = string.Format(&status={0}&, place);<span style="color: # <span style="color: #   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Twitter_Api_Uri);<span style="color: # <span style="color: #   request.Credentials = new NetworkCredential(Settings.TwitterEmail,<span style="color: # <span style="color: #   Settings.TwitterPassword);<span style="color: # <span style="color: #   request.ContentType = &application/x-www-form-urlencoded&;<span style="color: # <span style="color: #   request.Method = &POST&;<span style="color: # <span style="color: #   request.AllowWriteStreamBuffering = true;<span style="color: # <span style="color: #   byte[] bytes = Encoding.UTF8.GetBytes(data);<span style="color: # <span style="color: #   request.ContentLength = bytes.L<span style="color: # <span style="color: #   using (Stream requestStream = request.GetRequestStream())<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   requestStream.Write(bytes, <span style="color: #, bytes.Length);<span style="color: # <span style="color: #   requestStream.Flush();<span style="color: # <span style="color: #   requestStream.Close();<span style="color: # <span style="color: #   using (WebResponse response = request.GetResponse())<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   using (StreamReader reader =<span style="color: # <span style="color: #   new StreamReader(response.GetResponseStream()))<span style="color: # <span style="color: #   {<span style="color: # <span style="color: #   reader.ReadToEnd();<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #   }<span style="color: # <span style="color: #  请注意,有一个位置的公约,'长:纬度,离子',那就是我们更深层的目的。这种格式可以通过在解析的乡亲。同样,我们试图使有益的位置深的受众群。  内部事务  当然,分享您的位置并不是使信息有用的唯一的方式。例如,使同一地点使用面向外部的服务。在主页上的地图只是一个浏览器的控制,其网址被设置为一个Yahoo!地图图像。优雅而简单,这正是我想要!&&&&&&& 你可以享受的服务  我能想到的位置可能的若干用途是:  1、通过Web服务跟踪你去哪儿。支持创建一个网站,显示您的轨道地图-何时何地。画出你在哪里旅行的轨迹。  2、跟踪你的孩子,让您始终知道他们在哪里。  3、地理标记您的照片。Flickr支持地理标记图像,例如。记录您的车队。&&&&&&& 4、地理博客。  5、更新您的Facebook / MySpace的/社会网站与您的位置。&
大学生分期购物销量榜
已有条评论
IT168企业级
正在努力加载文档,请稍等…

我要回帖

更多关于 怎么能找到一个人 的文章

 

随机推荐