❶ android 使用百度api怎麼快速定位
在下載頁面下載最新的庫文件。將liblocSDK2.4.so文件拷貝到libs/armeabi目錄下。將locSDK2.4.jar文件拷貝到工程根目錄下,並在工程屬性->Java Build Path->Libraries中選擇「Add JARs」,選定locSDK2.4.jar,確定後返回。這樣您就可以在程序中使用網路定位API了。
設置AndroidManifest.xml
為區分2.3版本service,需要將manifest file中的 intent filter聲明為com..location.service_v2.4 在application標簽中聲明service組件
<service android:name="com..location.f" android:enabled="true" android:process=":remote" android:permission="android.permission.BAIDU_LOCATION_SERVICE"> <intent-filter> <action android:name="com..location.service_v2.4"></action> </intent-filter></service>聲明使用許可權
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></permission><uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><uses-permission android:name="android.permission.READ_LOGS"></uses-permission>import相關類
import com..location.BDLocation;import com..location.BDLocationListener;import com..location.LocationClient;import com..location.LocationClientOption;import com..location.BDNotifyListener;//假如用到位置提醒功能,需要import該類功能類的使用
初始化LocationClient類
此處需要注意:LocationClient類必須在主線程中聲明。需要Context類型的參數。
public LocationClient mLocationClient = null;public BDLocationListener myListener = new MyLocationListener(); public void onCreate() { mLocationClient = new LocationClient(this); //聲明LocationClient類 mLocationClient.registerLocationListener( myListener ); //注冊監聽函數}實現BDLocationListener介面
BDLocationListener介面有2個方法需要實現:
1.接收非同步返回的定位結果,參數是BDLocation類型參數。
2.接收非同步返回的POI查詢結果,參數是BDLocation類型參數。
public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (location == null) return ; StringBuffer sb = new StringBuffer(256); sb.append("time : "); sb.append(location.getTime()); sb.append("\nerror code : "); sb.append(location.getLocType()); sb.append("\nlatitude : "); sb.append(location.getLatitude()); sb.append("\nlontitude : "); sb.append(location.getLongitude()); sb.append("\nradius : "); sb.append(location.getRadius()); if (location.getLocType() == BDLocation.TypeGpsLocation){ sb.append("\nspeed : "); sb.append(location.getSpeed()); sb.append("\nsatellite : "); sb.append(location.getSatelliteNumber()); } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){ sb.append("\naddr : "); sb.append(location.getAddrStr()); } logMsg(sb.toString()); }public void onReceivePoi(BDLocation poiLocation) { if (poiLocation == null){ return ; } StringBuffer sb = new StringBuffer(256); sb.append("Poi time : "); sb.append(poiLocation.getTime()); sb.append("\nerror code : "); sb.append(poiLocation.getLocType()); sb.append("\nlatitude : "); sb.append(poiLocation.getLatitude()); sb.append("\nlontitude : "); sb.append(poiLocation.getLongitude()); sb.append("\nradius : "); sb.append(poiLocation.getRadius()); if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){ sb.append("\naddr : "); sb.append(poiLocation.getAddrStr()); } if(poiLocation.hasPoi()){ sb.append("\nPoi:"); sb.append(poiLocation.getPoi()); }else{ sb.append("noPoi information"); } logMsg(sb.toString()); }}設置參數
設置定位參數包括:定位模式(單次定位,定時定位),返回坐標類型,是否打開GPS等等。eg:
LocationClientOption option = new LocationClientOption();option.setOpenGps(true);option.setAddrType("detail");option.setCoorType("gcj02");option.setScanSpan(5000);option.disableCache(true);//禁止啟用緩存定位option.setPoiNumber(5); //最多返回POI個數 option.setPoiDistance(1000); //poi查詢距離 option.setPoiExtraInfo(true); //是否需要POI的電話和地址等詳細信息 mLocClient.setLocOption(option);發起定位請求
發起定位請求。請求過程是非同步的,定位結果在上面的監聽函數onReceiveLocation中獲取。
if (mLocClient != null && mLocClient.isStarted()) mLocClient.requestLocation();else Log.d("LocSDK_2.0_Demo1", "locClient is null or not started");發起POI查詢請求
發起POI查詢請求。請求過程是非同步的,定位結果在上面的監聽函數onReceivePoi中獲取。
if (mLocClient != null && mLocClient.isStarted()) mLocClient.requestPoi();位置提醒使用
位置提醒最多提醒3次,3次過後將不再提醒。 假如需要再次提醒,或者要修改提醒點坐標,都可通過函數SetNotifyLocation()來實現。
//位置提醒相關代碼mNotifyer = new NotifyLister();mNotifyer.SetNotifyLocation(42.03249652949337,113.3129895882556,3000,"gps");//4個參數代表要位置提醒的點的坐標,具體含義依次為:緯度,經度,距離范圍,坐標系類型(gcj02,gps,bd09,bd09ll)mLocationClient.registerNotify(mNotifyer);//注冊位置提醒監聽事件後,可以通過SetNotifyLocation 來修改位置提醒設置,修改後立刻生效。
//BDNotifyListner實現public class NotifyLister extends BDNotifyListener{ public void onNotify(BDLocation mlocation, float distance){ mVibrator01.vibrate(1000);//振動提醒已到設定位置附近 }}
//取消位置提醒mLocationClient.removeNotifyEvent(mNotifyer);
❷ Android Studio快速定位當前打開的文件在哪個目錄下
Android Studio中編輯區上面有一塊顯示當前打開文件的路徑的區域,如下圖
這樣就可以在這個結構目錄中看到這個文件了;
再或者你想直接打開這個文件所在的文件夾,那就在上面說得結構目錄中的這個文件上右鍵,如果是Windows下的話會有一個Show in exploer,Mac的話是Reveal in Finder,點擊它就可以打開這個文件所在的文件夾查看了。
❸ 如何快速定位android app是否存在內存泄露
確定是否存在內存泄露及具體是哪個程序造成,首先需要關注的是內存泄露已彈出out of memory對話框的情況。這種情況下,直接通過對話框即可得知是哪個應用的問題,然後再進一步分析該應用是否因內存泄露而導致了out of memory對話框的彈出。可以通過閱讀相關文檔如《如何診斷Android應用中的內存泄露》中介紹的各種方法進行分析,確定是否有內存泄露以及具體是哪個進程造成的內存泄露。
生成hprof文件並使用MAT進行分析是另一種有效的手段。生成hprof文件可以通過在DDMS中選中進程並點擊窗口左上角的mp hprof file按鈕直接生成,或者通過在程序中添加特定代碼來生成。推薦使用代碼生成hprof,然後使用《Android內存泄露利器(hprof篇)》中的工具自動提取多個hprof文件,然後使用MAT進行比較分析。在MAT中導入.hprof文件後,MAT會自動解析並生成報告,通過點擊Dominator Tree,並按照Package進行分組,選擇自己定義的Package類,比較各個類在不同時期的RetainedHeap,找出可疑類。然後選擇該類,右鍵點擊,選擇show retained Set項,查看Retained Heap的詳細信息,進一步找出嫌疑項。
在代碼中查找內存泄露的具體原因,根據在MAT找到的內存泄露信息,可以參照《Android內存泄漏簡介》進一步在代碼中查找內存泄露的原因並進行修復。如果代碼相對簡單,也可以直接根據《Android內存泄漏簡介》中的內容,在代碼中查找內存泄露的原因並解決。