提交 2c8ed3e7 编写于 作者: C cmj

see 11/23 log

上级 b6adc67c
......@@ -258,15 +258,15 @@ toggleSoftInput : 切换键盘显示与否状态
> - **定位相关→[LocationUtils.java][location.java]→[Demo][location.demo]**
```
LocationUtils : LocationUtils构造函数
isGpsEnabled : 判断Gps是否可用
openGpsSettings : 打开Gps设置界面
init : 初始化
getAddress : 根据经纬度获取地理位置
getCountryName : 根据经纬度获取所在国家
getLocality : 根据经纬度获取所在地
getStreet : 根据经纬度获取所在街道
removeAndGc : 移除并gc
isGpsEnabled : 判断Gps是否可用
isLocationEnabled : 判断定位是否可用
openGpsSettings : 打开Gps设置界面
register : 注册
unregister : 注销
getAddress : 根据经纬度获取地理位置
getCountryName : 根据经纬度获取所在国家
getLocality : 根据经纬度获取所在地
getStreet : 根据经纬度获取所在街道
```
> - **日志相关→[LogUtils.java][log.java]→[Test][log.test]**
......
......@@ -258,15 +258,15 @@ toggleSoftInput
> - **About Location→[LocationUtils.java][location.java]→[Demo][location.demo]**
```
LocationUtils
isGpsEnabled
isLocationEnabled
openGpsSettings
init
register
unregister
getAddress
getCountryName
getLocality
getStreet
removeAndGc
```
> - **About Log→[LogUtils.java][log.java]→[Test][log.test]**
......
......@@ -24,8 +24,7 @@ import com.blankj.utilcode.utils.ToastUtils;
*/
public class LocationService extends Service {
private boolean isSuccess;
private LocationUtils locationUtils;
private boolean isSuccess;
private String lastLatitude = "loading...";
private String lastLongitude = "loading...";
private String latitude = "loading...";
......@@ -56,9 +55,9 @@ public class LocationService extends Service {
if (mOnGetLocationListener != null) {
mOnGetLocationListener.getLocation(lastLatitude, lastLongitude, latitude, longitude, country, locality, street);
}
country = locationUtils.getCountryName(Double.parseDouble(latitude), Double.parseDouble(longitude));
locality = locationUtils.getLocality(Double.parseDouble(latitude), Double.parseDouble(longitude));
street = locationUtils.getStreet(Double.parseDouble(latitude), Double.parseDouble(longitude));
country = LocationUtils.getCountryName(App.getInstance(), Double.parseDouble(latitude), Double.parseDouble(longitude));
locality = LocationUtils.getLocality(App.getInstance(), Double.parseDouble(latitude), Double.parseDouble(longitude));
street = LocationUtils.getStreet(App.getInstance(), Double.parseDouble(latitude), Double.parseDouble(longitude));
if (mOnGetLocationListener != null) {
mOnGetLocationListener.getLocation(lastLatitude, lastLongitude, latitude, longitude, country, locality, street);
}
......@@ -73,12 +72,11 @@ public class LocationService extends Service {
@Override
public void onCreate() {
super.onCreate();
locationUtils = new LocationUtils(App.getInstance());
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
isSuccess = locationUtils.init(1000, 0, mOnLocationChangeListener);
isSuccess = LocationUtils.register(App.getInstance(), 0, 0, mOnLocationChangeListener);
if (isSuccess) ToastUtils.showShortToastSafe(App.getInstance(), "init success");
Looper.loop();
}
......@@ -99,7 +97,7 @@ public class LocationService extends Service {
@Override
public void onDestroy() {
locationUtils.removeListener();
LocationUtils.unregister();
// 一定要制空,否则内存泄漏
mOnGetLocationListener = null;
super.onDestroy();
......
......@@ -13,7 +13,7 @@ import com.blankj.utilcode.utils.ActivityUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/13
* desc : Activity工具类测试
* desc : Activity工具类Demo
* </pre>
*/
......
......@@ -14,7 +14,7 @@ import com.blankj.utilcode.utils.AppUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/13
* desc : App工具类测试
* desc : App工具类Demo
* </pre>
*/
......
......@@ -16,7 +16,7 @@ import java.io.File;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/29
* desc : Clean工具类测试
* desc : Clean工具类Demo
* </pre>
*/
public class CleanActivity extends Activity
......
......@@ -14,7 +14,7 @@ import com.blankj.utilcode.utils.DeviceUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/27
* desc : Device工具类测试
* desc : Device工具类Demo
* </pre>
*/
public class DeviceActivity extends Activity
......
......@@ -16,7 +16,7 @@ import com.blankj.utilcode.utils.LogUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/27
* desc : Handler工具类测试
* desc : Handler工具类Demo
* </pre>
*/
public class HandlerActivity extends Activity
......
......@@ -16,7 +16,7 @@ import com.blankj.utilcode.utils.SizeUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/26
* desc : Image工具类测试
* desc : Image工具类Demo
* </pre>
*/
public class ImageActivity extends Activity {
......
......@@ -17,7 +17,7 @@ import com.blankj.utilcode.utils.KeyboardUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/27
* desc : Keyboard工具类测试
* desc : Keyboard工具类Demo
* </pre>
*/
public class KeyboardActivity extends Activity
......
......@@ -17,7 +17,7 @@ import com.blankj.androidutilcode.services.LocationService;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/13
* desc : Location工具类测试
* desc : Location工具类Demo
* </pre>
*/
public class LocationActivity extends Activity {
......
......@@ -15,7 +15,7 @@ import com.blankj.utilcode.utils.NetworkUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/13
* desc : Network工具类测试
* desc : Network工具类Demo
* </pre>
*/
public class NetworkActivity extends Activity
......
......@@ -13,7 +13,7 @@ import com.blankj.utilcode.utils.PhoneUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/13
* desc : Phone工具类测试
* desc : Phone工具类Demo
* </pre>
*/
public class PhoneActivity extends Activity implements
......
......@@ -13,7 +13,7 @@ import com.blankj.utilcode.utils.ToastUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/13
* desc : Process工具类测试
* desc : Process工具类Demo
* </pre>
*/
public class ProcessActivity extends Activity
......
......@@ -12,7 +12,7 @@ import com.blankj.utilcode.utils.SDCardUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/27
* desc : SDCard工具类测试
* desc : SDCard工具类Demo
* </pre>
*/
public class SDCardActivity extends Activity {
......
......@@ -15,7 +15,7 @@ import com.blankj.utilcode.utils.ToastUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/10/17
* desc : Snackbar工具类测试
* desc : Snackbar工具类Demo
* </pre>
*/
public class SnackbarActivity extends Activity
......
......@@ -15,7 +15,7 @@ import com.blankj.utilcode.utils.ToastUtils;
* author: Blankj
* blog : http://blankj.com
* time : 2016/9/29
* desc : Toast工具类测试
* desc : Toast工具类Demo
* </pre>
*/
public class ToastActivity extends Activity
......
......@@ -26,62 +26,67 @@ import java.util.Locale;
*/
public class LocationUtils {
private Context mContext;
private OnLocationChangeListener mListener;
private MyLocationListener myLocationListener;
private LocationManager mLocationManager;
private static OnLocationChangeListener mListener;
private static MyLocationListener myLocationListener;
private static LocationManager mLocationManager;
public LocationUtils() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
/**
* LocationUtils构造函数
* 判断Gps是否可用
*
* @param context 上下文
* @return {@code true}: 是<br>{@code false}: 否
*/
public LocationUtils(Context context) {
mContext = context;
mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
public static boolean isGpsEnabled(Context context) {
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
return lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
/**
* 判断Gps是否可用
* 判断定位是否可用
*
* @return {@code true}: 是<br>{@code false}: 否
*/
public boolean isGpsEnabled() {
return mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
public static boolean isLocationEnabled(Context context) {
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
return lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER) || lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
/**
* 打开Gps设置界面
*/
public void openGpsSettings() {
public static void openGpsSettings(Context context) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
context.startActivity(intent);
}
/**
* 初始化
* <p>使用完记得调用{@link #removeListener()}</p>
* 注册
* <p>使用完记得调用{@link #unregister()}</p>
* <p>需添加权限 {@code <uses-permission android:name="android.permission.INTERNET"/>}</p>
* <p>需添加权限 {@code <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>}</p>
* <p>需添加权限 {@code <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>}</p>
* <p>如果{@code minDistance}不为0,则以{@code minDistance}为准;{@code minDistance}为0,则通过{@code minTime}来定时更新;两者都为0,则随时刷新</p>
* <p>如果{@code minDistance}为0,则通过{@code minTime}来定时更新;</p>
* <p>{@code minDistance}不为0,则以{@code minDistance}为准;</p>
* <p>两者都为0,则随时刷新。</p>
*
* @param minTime 位置信息更新周期(单位:毫秒)
* @param minDistance 位置变化最小距离:当位置距离变化超过此值时,将更新位置信息(单位:米)
* @param listener 位置刷新的回调接口
* @return {@code true}: 初始化成功<br>{@code false}: 初始化失败
*/
public boolean init(long minTime, long minDistance, OnLocationChangeListener listener) {
public static boolean register(Context context, long minTime, long minDistance, OnLocationChangeListener listener) {
if (listener == null) return false;
mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
mListener = listener;
if (!mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
&& !mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
ToastUtils.showShortToastSafe(mContext, "无法定位,请打开定位服务");
if (!isLocationEnabled(context)) {
ToastUtils.showShortToastSafe(context, "无法定位,请打开定位服务");
return false;
}
String provider = mLocationManager.getBestProvider(getCriteria(), true);
if (provider == null) return false;
Location location = mLocationManager.getLastKnownLocation(provider);
if (location != null) listener.getLastKnownLocation(location);
if (myLocationListener == null) myLocationListener = new MyLocationListener();
......@@ -89,12 +94,26 @@ public class LocationUtils {
return true;
}
/**
* 注销
*/
public static void unregister() {
if (mLocationManager != null) {
if (myLocationListener != null) {
mLocationManager.removeUpdates(myLocationListener);
myLocationListener = null;
}
mLocationManager = null;
}
}
/**
* 设置定位参数
*
* @return {@link Criteria}
*/
private Criteria getCriteria() {
private static Criteria getCriteria() {
Criteria criteria = new Criteria();
//设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细
criteria.setAccuracy(Criteria.ACCURACY_FINE);
......@@ -114,12 +133,13 @@ public class LocationUtils {
/**
* 根据经纬度获取地理位置
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return {@link Address}
*/
public Address getAddress(double latitude, double longitude) {
Geocoder geocoder = new Geocoder(mContext, Locale.getDefault());
public static Address getAddress(Context context, double latitude, double longitude) {
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
if (addresses.size() > 0) return addresses.get(0);
......@@ -132,53 +152,43 @@ public class LocationUtils {
/**
* 根据经纬度获取所在国家
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return {@link Address}
* @return 所在国家
*/
public String getCountryName(double latitude, double longitude) {
Address address = getAddress(latitude, longitude);
public static String getCountryName(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "unknown" : address.getCountryName();
}
/**
* 根据经纬度获取所在地
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return {@link Address}
* @return 所在地
*/
public String getLocality(double latitude, double longitude) {
Address address = getAddress(latitude, longitude);
public static String getLocality(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "unknown" : address.getLocality();
}
/**
* 根据经纬度获取所在街道
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return {@link Address}
* @return 所在街道
*/
public String getStreet(double latitude, double longitude) {
Address address = getAddress(latitude, longitude);
public static String getStreet(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "unknown" : address.getAddressLine(0);
}
/**
* 移除监听
*/
public void removeListener() {
if (mLocationManager != null) {
if (myLocationListener != null) {
mLocationManager.removeUpdates(myLocationListener);
myLocationListener = null;
}
mLocationManager = null;
}
}
private class MyLocationListener
private static class MyLocationListener
implements LocationListener {
/**
* 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册