❶ 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内存泄漏简介》中的内容,在代码中查找内存泄露的原因并解决。