最近在写一个关于百度地图相关的东西,把过程中遇到的一些问题整理如下:
1.Caused by: java.lang.IllegalStateException: you have not supplyed the global app context info from SDKInitializer.initialize(Context) function.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//此处如果没有下面这句代码就会出现上面的异常,如果此处加了这句代码仍然出现了相同的异常信息,那么就需要在Application中配置,此处建议在application中配置
因为application中<span style="font-family: Arial, Helvetica, sans-serif;">onCreate()才是程序的真正入口,在application中配置之后不要忘了在清单配置文件中添加android:name="com.shijunqi.baiDuDemo.TApplication"</span>
//SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_map);
initView();
}
在Application中配置
public class TApplication extends Application {
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void onCreate() {
<span style="white-space:pre"> </span>super.onCreate();
<span style="white-space:pre"> </span>SDKInitializer.initialize(this);
<span style="white-space:pre"> </span>}
}
2.注册的定位监听器不执行
BDLocationListener listener = new BDLocationListener() {
@Override
public void onReceivePoi(BDLocation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onReceiveLocation(BDLocation location) {
Log.i("TAG", "BDLocationListener....");
if (location == null || mbaiduMap == null) {
return;
}
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())//
.direction(100)// 方向
.latitude(location.getLatitude())//
.longitude(location.getLongitude())//
.build();
// 设置定位数据
mbaiduMap.setMyLocationData(locData);
latitude = location.getLatitude();
longitude = location.getLongitude();
// 第一次定位的时候,那地图中心店显示为定位到的位置
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
mbaiduMap.animateMapStatus(msu);
Toast.makeText(getApplicationContext(), location.getAddrStr(),
Toast.LENGTH_SHORT).show();
}
}
};
如果此监听器一直没有执行,那么首先需要检查的就是你的key配置的是否正确,再确认key配置正确的前提下再去看百度SDK所需要的权限是否都已经加上,如果确认这两部都没问题,就在清单配置文件中加上如下代码
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
附上百度定位的一个小Demo,链接如下
另外关于Application可以参考如下博客:http://blog.youkuaiyun.com/renguichao/article/details/7667245