目錄
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));