Android使用百度地图出现闪退及定位时显示蓝屏问题
目录
1.Android使用百度地图出现闪退
一般情况下出现闪退是在AndroidManifest.xml文件中未在application标签中配置
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="D9Lh8MrrLMUuXdWMU8tRLtDsta6PoaYN" />
但是,有些同学会发现,所有配置都是按照官网或者教程上的步骤来配置依旧会出现闪退问题。此时,不要盲目直接去网上搜索使用百度地图出现闪退来求解,这样不知道问题具体出现在哪,会让你耗费大量时间,然而问题依旧得不到解决。
在此时,需要学会查看AndroidStudio给出的调试日志信息。打开Android Studio底部Android Monitor来查看具体报错信息。例如:
此处本文楼主自己查看的报错信息及解决方法如下:
报错信息:
dlopen("/data/data/com.zhoupan.unlockinguser/files/libs/libBaiduMapSDK_base_v4_1_1.so", RTLD_LAZY) failed: dlopen failed: "/data/data/com.zhoupan.unlockinguser/files/libs/libBaiduMapSDK_base_v4_1_1.so" is 32-bit instead of 64-bit 11-05 14:02:48.554 17515-17515/com.zhoupan.unlockinguser E/NativeLoader: loadException java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.zhoupan.unlockinguser/files/libs/libBaiduMapSDK_base_v4_1_1.so" is 32-bit instead of 64-bit at java.lang.Runtime.load(Runtime.java:331) at java.lang.System.load(System.java:982) at com.baidu.platform.comapi.NativeLoader.f(Unknown Source) at com.baidu.platform.comapi.NativeLoader.b(Unknown Source) at com.baidu.platform.comapi.NativeLoader.a(Unknown Source) at com.baidu.platform.comapi.NativeLoader.c(Unknown Source) at com.baidu.platform.comapi.NativeLoader.loadCustomizeNativeLibrary(Unknown Source) at com.baidu.platform.comapi.NativeLoader.loadLibrary(Unknown Source) at com.baidu.platform.comapi.a.<clinit>(Unknown Source) at com.baidu.platform.comapi.b.a(Unknown Source) at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source) at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source) at com.zhoupan.unlockinguser.application.LocationApplication.onCreate(LocationApplication.java:32) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011)
解决办法:
原因是在build文件中加载了fresco库
// compile 'com.facebook.fresco:fresco:0.9.0+'
删掉以后可以运行。
2.Android使用百度地图定位出现蓝屏问题
原因是targetVersion >= 23,那么运行到6.0及以上设备时,默认所有权限都不开启,
必须动态requestPermission,这里需要位置权限,默认没开启导致此结果。
把targetVersion 设置成22及以下就行,当targetVersion<23时,默认开启全部权限。
附:
实现百度地图定位,使用GEO过程中,需要使用maker来展示图标及文字信息时,百度地图官方给的类只能展示图片,如果需要展示文字,需要自己额外实现,具体实现方法:
首先,添加一个布局文件,代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:gravity="center_vertical" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/dancegroup_place_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="15sp" android:text="湖北省" android:textColor="@color/colorPrimary" android:textStyle="bold"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerCrop" android:padding="5dip" android:src="@drawable/ic_dance_group" android:layout_gravity="center_horizontal"/> </LinearLayout>
接着在实现定位的Activity类中添加一个如下方法:
private Bitmap getViewBitmap(View addViewContent) { addViewContent.setDrawingCacheEnabled(true); addViewContent.measure( View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); addViewContent.layout(0, 0, addViewContent.getMeasuredWidth(), addViewContent.getMeasuredHeight()); addViewContent.buildDrawingCache(); Bitmap cacheBitmap = addViewContent.getDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(cacheBitmap); return bitmap; }
然后,在所监听类中,把上午布局XML文件视图View转换为Bitmap,转换过程如下:
TextView dance_name;
LayoutInflater factory; ... .... factory = LayoutInflater.from(MainActivity.this); view11 = factory.inflate(R.layout.video_camera,null);
dance_name = (TextView)view11.findViewById(R.id.dancegroup_place_name); dance_name.setText(place[num % 4]); BitmapDescriptor bdB = BitmapDescriptorFactory.fromBitmap(getViewBitmap(view11));
每天一小步,成就一大步