|
|
@ -29,7 +29,13 @@ import android.content.Context;
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
|
|
|
|
import android.content.pm.PackageManager;
|
|
|
|
import android.graphics.Paint;
|
|
|
|
import android.graphics.Paint;
|
|
|
|
|
|
|
|
import android.location.Address;
|
|
|
|
|
|
|
|
import android.location.Geocoder;
|
|
|
|
|
|
|
|
import android.location.Location;
|
|
|
|
|
|
|
|
import android.location.LocationListener;
|
|
|
|
|
|
|
|
import android.location.LocationManager;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.preference.PreferenceManager;
|
|
|
|
import android.preference.PreferenceManager;
|
|
|
|
import android.text.Spannable;
|
|
|
|
import android.text.Spannable;
|
|
|
@ -75,6 +81,8 @@ import java.io.IOException;
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Locale;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
@ -82,6 +90,9 @@ import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
|
|
|
|
public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
NoteSettingChangedListener, OnTextViewChangeListener {
|
|
|
|
NoteSettingChangedListener, OnTextViewChangeListener {
|
|
|
|
|
|
|
|
public static final int LOCATION_CODE = 301;
|
|
|
|
|
|
|
|
private LocationManager locationManager;
|
|
|
|
|
|
|
|
private String locationProvider = null;
|
|
|
|
private class HeadViewHolder {
|
|
|
|
private class HeadViewHolder {
|
|
|
|
public TextView tvModified;
|
|
|
|
public TextView tvModified;
|
|
|
|
|
|
|
|
|
|
|
@ -972,4 +983,116 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
private void showToast(int resId, int duration) {
|
|
|
|
private void showToast(int resId, int duration) {
|
|
|
|
Toast.makeText(this, resId, duration).show();
|
|
|
|
Toast.makeText(this, resId, duration).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void getLocation(){
|
|
|
|
|
|
|
|
//1.获取位置管理器
|
|
|
|
|
|
|
|
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//2.获取位置提供器,GPS或是NetWork
|
|
|
|
|
|
|
|
List<String> providers = locationManager.getProviders(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (providers.contains(LocationManager.GPS_PROVIDER)) {
|
|
|
|
|
|
|
|
//如果是GPS
|
|
|
|
|
|
|
|
locationProvider = LocationManager.GPS_PROVIDER;
|
|
|
|
|
|
|
|
Log.v("TAG", "定位方式GPS");
|
|
|
|
|
|
|
|
} else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
|
|
|
|
|
|
|
|
//如果是Network
|
|
|
|
|
|
|
|
locationProvider = LocationManager.NETWORK_PROVIDER;
|
|
|
|
|
|
|
|
Log.v("TAG", "定位方式Network");
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Location location = locationManager.getLastKnownLocation(locationProvider);
|
|
|
|
|
|
|
|
if (location!=null){
|
|
|
|
|
|
|
|
Toast.makeText(this, location.getLongitude() + " " +
|
|
|
|
|
|
|
|
location.getLatitude() + "", Toast.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
Log.v("TAG", "获取上次的位置-经纬度:"+location.getLongitude()+" "+location.getLatitude());
|
|
|
|
|
|
|
|
getAddress(location);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
//监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace
|
|
|
|
|
|
|
|
locationManager.requestLocationUpdates(locationProvider, 3000, 1,locationListener);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public LocationListener locationListener = new LocationListener() {
|
|
|
|
|
|
|
|
// Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onStatusChanged(String provider, int status, Bundle extras) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Provider被enable时触发此函数,比如GPS被打开
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onProviderEnabled(String provider) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Provider被disable时触发此函数,比如GPS被关闭
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onProviderDisabled(String provider) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onLocationChanged(Location location) {
|
|
|
|
|
|
|
|
if (location != null) {
|
|
|
|
|
|
|
|
//如果位置发生变化,重新显示地理位置经纬度
|
|
|
|
|
|
|
|
Toast.makeText(NoteEditActivity.this, location.getLongitude() + " " +
|
|
|
|
|
|
|
|
location.getLatitude() + "", Toast.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
Log.v("TAG", "监视地理位置变化-经纬度:"+location.getLongitude()+" "+location.getLatitude());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
|
|
|
|
|
|
|
switch (requestCode) {
|
|
|
|
|
|
|
|
case LOCATION_CODE:
|
|
|
|
|
|
|
|
if(grantResults.length > 0 && grantResults[0] == getPackageManager().PERMISSION_GRANTED
|
|
|
|
|
|
|
|
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
|
|
|
|
|
|
|
|
Toast.makeText(this, "申请权限", Toast.LENGTH_LONG).show();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
List<String> providers = locationManager.getProviders(true);
|
|
|
|
|
|
|
|
if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
|
|
|
|
|
|
|
|
//如果是Network
|
|
|
|
|
|
|
|
locationProvider = LocationManager.NETWORK_PROVIDER;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else if (providers.contains(LocationManager.GPS_PROVIDER)) {
|
|
|
|
|
|
|
|
//如果是GPS
|
|
|
|
|
|
|
|
locationProvider = LocationManager.GPS_PROVIDER;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Location location = locationManager.getLastKnownLocation(locationProvider);
|
|
|
|
|
|
|
|
if (location!=null){
|
|
|
|
|
|
|
|
Toast.makeText(this, location.getLongitude() + " " +
|
|
|
|
|
|
|
|
location.getLatitude() + "", Toast.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
Log.v("TAG", "获取上次的位置-经纬度:"+location.getLongitude()+" "+location.getLatitude());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
// 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace
|
|
|
|
|
|
|
|
locationManager.requestLocationUpdates(locationProvider, 0, 0,locationListener);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}catch (SecurityException e){
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
Toast.makeText(this, "缺少权限", Toast.LENGTH_LONG).show();
|
|
|
|
|
|
|
|
finish();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取地址信息:城市、街道等信息
|
|
|
|
|
|
|
|
private List<Address> getAddress(Location location) {
|
|
|
|
|
|
|
|
List<Address> result = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (location != null) {
|
|
|
|
|
|
|
|
Geocoder gc = new Geocoder(this, Locale.getDefault());
|
|
|
|
|
|
|
|
result = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
|
|
|
|
|
|
|
|
Toast.makeText(this, "获取地址信息:"+result.toString(), Toast.LENGTH_LONG).show();
|
|
|
|
|
|
|
|
Log.v("TAG", "获取地址信息:"+result.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|