android 百度地图怎么获取不到GPS定位

末日之花 2013-05-29 09:49:56
LocationManager locationManager22 ;
String serviceName = Context.LOCATION_SERVICE;
locationManager22 = (LocationManager) BaiduActivity.this.getSystemService(serviceName);// 查找到服务信息

String provider=LocationManager.GPS_PROVIDER;
Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置

try{
String ss=location1.toString();
Toast.makeText(this, ss, Toast.LENGTH_SHORT).show();}
catch(Exception es)
{
Toast.makeText(this, "获取不到", Toast.LENGTH_SHORT).show();
}


每次运行都显示获取不到,请问是什么原因啊 !请大神指导!
...全文
4130 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wei_Leng 2014-04-10
  • 打赏
  • 举报
回复
........GPS定位发个DEMO给我啊
末日之花 2013-06-06
  • 打赏
  • 举报
回复
谢谢大家了,找到原因了,原来是GPS定位太慢的原因,两分钟之后就会定位到了。不过,谢谢你们大家了!
qinjuning 2013-06-05
  • 打赏
  • 举报
回复
可以用百度定位 lib库定位。
kk1924 2013-06-04
  • 打赏
  • 举报
回复
怎么我记得,最新版的定位不是这样的,??定位,只要你定位功能逻辑开了,,然后GPS硬件开了的话,它会自动去识别的
rushonin 2013-06-04
  • 打赏
  • 举报
回复
先自己随便赋值一个location初始化一下,后续定到位了,再更新显示,试试。
zas880615 2013-06-04
  • 打赏
  • 举报
回复
还有,如果是地图服务是要申请密匙的,如果只是定位SDK则不需要!
zas880615 2013-06-04
  • 打赏
  • 举报
回复
百度API的首页有那个定位的SDK,并且头DEMO示例的程序!
末日之花 2013-06-04
  • 打赏
  • 举报
回复
试过了,先给个值,可是再定位还是这个值,无法获取位置。
攃肩洏過 2013-06-03
  • 打赏
  • 举报
回复
我按照百度给的demo写的一模一样,结果我这里报错,是一个jar出的问题,但是那个jar是百度自己提供的,并且在他们提供的demo里没问题,就是不知道为啥到我这里不行。
末日之花 2013-06-03
  • 打赏
  • 举报
回复
你可以说清楚一点吗?我试了一下,可还是没有用。你可以给个更详细点的吗
末日之花 2013-06-02
  • 打赏
  • 举报
回复
仅仅就是location1=location;吗?怎么还是没有用啊?
BennuCTech 2013-05-30
  • 打赏
  • 举报
回复
引用 楼主 lyfzxf 的回复:
LocationManager locationManager22 ; String serviceName = Context.LOCATION_SERVICE; locationManager22 = (LocationManager) BaiduActivity.this.getSystemService(serviceName);// 查找到服务信息 String provider=LocationManager.GPS_PROVIDER; Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置 try{ String ss=location1.toString(); Toast.makeText(this, ss, Toast.LENGTH_SHORT).show();} catch(Exception es) { Toast.makeText(this, "获取不到", Toast.LENGTH_SHORT).show(); } 每次运行都显示获取不到,请问是什么原因啊 !请大神指导!
模拟器么?
末日之花 2013-05-30
  • 打赏
  • 举报
回复
private void getLocation(){ // 获取位置管理服务 LocationManager locationManager22 ; String serviceName = BaiduActivity.LOCATION_SERVICE; locationManager22 = (LocationManager)BaiduActivity.this.getSystemService(serviceName); // 查找到服务信息 String provider=LocationManager.GPS_PROVIDER; //指定用GPS查询服务 //设置监听器,自动更新的最小时间为间隔2秒或最小位移变化超过2米 locationManager22.requestLocationUpdates(provider, 2000, 2, ll); try{ Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置 int lng = (int) (location1.getLongitude() * 1E6); Toast.makeText(this, lng, Toast.LENGTH_SHORT).show(); // center = new GeoPoint(lat, lng); } catch(Exception es) { Toast.makeText(this, "出现未知错误,获取当前位置不到", Toast.LENGTH_SHORT).show(); } } //创建位置监听器 // LocationListener private LocationListener ll = new LocationListener(){ //位置发生改变时调用 public void onLocationChanged(Location location) { center = new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)); } //provider失效时调用 public void onProviderDisabled(String provider) { Log.d("Location", "onProviderDisabled"); System.out.print("wwwww"); } //provider启用时调用 public void onProviderEnabled(String provider) { Log.d("Location", "onProviderEnabled"); System.out.print("eeeee"); } //状态改变时调用 public void onStatusChanged(String provider, int status, Bundle extras) { Log.d("Location", "onStatusChanged"); System.out.print("rrrr"); } }; 是这样吗?可是还是没用?是什么原因,我是刚接触的所以很笨。麻烦指点一下。
小王爷 2013-05-30
  • 打赏
  • 举报
回复
你的设备有没有GPS模块
undergrowth 2013-05-30
  • 打赏
  • 举报
回复
引用 3 楼 lyfzxf 的回复:
private void getLocation(){ // 获取位置管理服务 LocationManager locationManager22 ; String serviceName = BaiduActivity.LOCATION_SERVICE; locationManager22 = (LocationManager)BaiduActivity.this.getSystemService(serviceName); // 查找到服务信息 String provider=LocationManager.GPS_PROVIDER; //指定用GPS查询服务 //设置监听器,自动更新的最小时间为间隔2秒或最小位移变化超过2米 locationManager22.requestLocationUpdates(provider, 2000, 2, ll); try{ Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置 int lng = (int) (location1.getLongitude() * 1E6); Toast.makeText(this, lng, Toast.LENGTH_SHORT).show(); // center = new GeoPoint(lat, lng); } catch(Exception es) { Toast.makeText(this, "出现未知错误,获取当前位置不到", Toast.LENGTH_SHORT).show(); } } //创建位置监听器 // LocationListener private LocationListener ll = new LocationListener(){ //位置发生改变时调用 public void onLocationChanged(Location location) { center = new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)); } //provider失效时调用 public void onProviderDisabled(String provider) { Log.d("Location", "onProviderDisabled"); System.out.print("wwwww"); } //provider启用时调用 public void onProviderEnabled(String provider) { Log.d("Location", "onProviderEnabled"); System.out.print("eeeee"); } //状态改变时调用 public void onStatusChanged(String provider, int status, Bundle extras) { Log.d("Location", "onStatusChanged"); System.out.print("rrrr"); } }; 是这样吗?可是还是没用?是什么原因,我是刚接触的所以很笨。麻烦指点一下。
你要注意了 你的位置在改变之后 但是你的Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置 只运行了一次 就是说 即使 public void onLocationChanged(Location location) { center = new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)); } 执行了之后 但是你的location1 还是为空的 所以获取不到数据 你可以在public void onLocationChanged(Location location) { location1=location; //然后再来显示你的位置 }
末日之花 2013-05-30
  • 打赏
  • 举报
回复
不是模拟器,用的是手机,就是获取不到本地位置!请大神指教,急!!!!
undergrowth 2013-05-29
  • 打赏
  • 举报
回复
前提:如果你的GPS开了的话 那么可能是如下原因 因为getLastKnownLocation方法获取的是上一次已知的位置 但是你的apk运行的时候 从来没有获取位置数据 所以每次运行都获取不到数据 每次location都是为Null 解决办法:使用new LocationListener()接口 locationManager.requestLocationUpdates(locationprovider, 2000, 2, listener); //注册监听位置改变 然后再 location=locationManager.getLastKnownLocation(locationprovider); 就可以获取数据了
1.需要在 http://developer.baidu.com/ 注册开发者(个人或公司)账号 2.需要申请Key 打开网址 http://developer.baidu.com/map/index.php 点击 创建应用,跟流程创建应用app 3.点击相关下载->一键下载 4.调用百度地图的APP 需要在 AndroidManifest.xml 添加 android:name="baidumapsdk.demo.DemoApplication" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > 这里需要添加key,创建应用后,会有这个key android:name="com.baidu.lbsapi.API_KEY" android:value="6t2yuIFylnRG7ECj1xHYuelY" /> ..... package com.obtk.mapdemo; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BaiduMapOptions; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.geocode.GeoCodeResult; import com.baidu.mapapi.search.geocode.GeoCoder; import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener; import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption; import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Toast; import android.app.Activity; import com.obtk.mapdemo.R; public class MapApiDemoActivity extends Activity implements OnGetGeoCoderResultListener { private MapView mMapView = null; private BaiduMap mBaiduMap = null; private GeoCoder mSearch = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // SDK初始化 SDKInitializer.initialize(getApplicationContext()); //当前视图 setContentView(R.layout.activity_map_api_demo); //创建地图对象 init(); final Button btn_location = (Button) findViewById(R.id.btn_location); btn_location.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub getLocation(); btn_location.setEnabled(false); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_map_api_demo, menu); return true; } /** * 初始化方法 */ private void init() { //mMapView = (MapView) findViewById(R.id.bmapview); mMapView = new MapView(this, new BaiduMapOptions()); mBaiduMap = mMapView.getMap(); /**添加一个对象*/ RelativeLayout rlly_map = (RelativeLayout)findViewById(R.id.rlly_map); rlly_map.addView(mMapView); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); //初始化搜索模块,注册事件监听 mSearch = GeoCoder.newInstance(); mSearch.setOnGetGeoCodeResultListener(this); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override protected void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } // 定位相关 LocationClient mLocClient; public MyLocationListenner myListener = new MyLocationListenner(); private LocationMode mCurrentMode; private boolean isFirstLoc = true; /** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) return; MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) //此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u); } String addr = location.getAddrStr(); if (addr != null) { Log.i("Test", addr); } else { Log.i("Test","error"); } double longitude = location.getLongitude(); double latitude = location.getLatitude(); if (longitude > 0 && latitude > 0) { Log.i("Test",String.format("纬度:%f 经度:%f", latitude,longitude)); LatLng ptCenter = new LatLng(latitude,longitude); // 反Geo搜索 mSearch.reverseGeoCode(new ReverseGeoCodeOption() .location(ptCenter)); } //停止定位 mLocClient.stop(); } public void onReceivePoi(BDLocation poiLocation) { } } private void getLocation() { // 定位初始化 mLocClient = new LocationClient(this); mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);//打开gps option.setCoorType("bd09ll"); //设置坐标类型 option.setScanSpan(5000); //定位时间间隔 mLocClient.setLocOption(option); mLocClient.start(); } @Override public void onGetGeoCodeResult(GeoCodeResult arg0) { // TODO Auto-generated method stub } @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) { // TODO Auto-generated method stub if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(MapApiDemoActivity.this, "抱歉,未能找到结果", Toast.LENGTH_LONG) .show(); return; } mBaiduMap.clear(); // mBaiduMap.addOverlay(new MarkerOptions().position(result.getLocation()) // .icon(BitmapDescriptorFactory // .fromResource(R.drawable.icon_marka))); mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(result .getLocation())); Toast.makeText(MapApiDemoActivity.this, result.getAddress(), Toast.LENGTH_LONG).show(); String province = result.getAddressDetail().province; String city = result.getAddressDetail().city; if (province != null && city != null) { } } }
Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。 Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深层实现. Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理, SQLit e /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解 Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理,实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现 《老罗Android视频教程(第一季)》的视频一共分为15个章节, 涵盖了Android入门、常用UI布局介绍、HTTP编程、 XML与Json数据解析、JDBC与Web编程、常用UI控件、 数据储存与文件操作、对话框、通知、菜单、 LoaderManager异步加载、多线程(AsyncTask与Handler)、 百度地图等十五个模块,一共102集。 本网盘分享章节编号是按照视频更新的先后顺序编号的,具体学习可参考如下章节顺序: 【第一版第一章】老罗Android开发视频--入门介绍(9集) 【第一版第二章】老罗Android开发视频--常用UI布局介绍(5集) 【第一版第三章】老罗Android开发视频--HTTP协议编程(4集) 【第一版第四章】老罗Android开发视频--解析XML数据(3集) 【第一版第五章】老罗Android开发视频--解析JSON数据(4集) 【第一版第六章】老罗Android开发视频--服务器端JDBC编程(2集) 【第一版第七章】老罗Android开发视频--服务器端Web编程(6集) 【第一版第八章】老罗Android开发视频-常用UI控件(33集) 【第一版第九章】老罗Android开发视频--存储数据和文件(7集) 【第一版第十章】老罗Android开发视频--对话框介绍(4集) 【第一版第十一章】老罗Android开发视频--通知的使用(2集) 【第一版第十二章】老罗Android开发视频--菜单的使用(4集) 【第一版第十三章】老罗Android开发视频--异步加载数据库(2集) 【第一版第十四章】老罗Android开发视频--多线程编程(7集) 【第一版第十五章】老罗Android开发视频--百度地图实战开发(10集)

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧