+ * ### 输出格式解释:
+ * ### [%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n
+ *
+ * ### %d{yyyy-MM-dd HH:mm:ss}: 时间,大括号内是时间格式
+ * ### %c: 全类名
+ * ### %M: 调用的方法名称
+ * ### %F:%L 类名:行号(在控制台可以追踪代码)
+ * ### %n: 换行
+ * ### %p: 日志级别,这里%-5p是指定的5个字符的日志名称,为的是格式整齐
+ * ### %m: 日志信息
+ *
+ * ### 输出的信息大概如下:
+ * ### [时间{时间格式}][信息所在的class.method(className:lineNumber)] 换行
+ * ### [Level: 5个字符的等级名称] - Msg: 输出信息 换行
+ */
+ private static final String LOG_FILE_PATTERN = "[%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n";
+
+ /**
+ * 生产环境下的log等级
+ **/
+ private static final Level LOG_LEVEL_PRODUCE = Level.ALL;
+
+ /**
+ * 发布以后的log等级
+ **/
+ private static final Level LOG_LEVEL_RELEASE = Level.INFO;
+
+ /**
+ * 配置log4j参数
+ */
+ public static void configLog() {
+
+ LogConfig logConfig = new LogConfig();
+
+ /** 设置Log等级,生产环境下调用setLogToProduce(),发布后调用setLogToRelease() **/
+ setLogToProduce(logConfig);
+
+ logConfig.setFileName(LOG_FILE_PATH);
+
+ logConfig.setLevel("org.apache", Level.ERROR);
+
+ logConfig.setFilePattern(LOG_FILE_PATTERN);
+
+ logConfig.setMaxFileSize(1024 * 1024 * 5);
+
+ logConfig.setImmediateFlush(true);
+
+ logConfig.configure();
+
+ }
+
+ /**
+ * 将log设置为生产环境
+ *
+ * @param logConfig
+ */
+ private static void setLogToProduce(LogConfig logConfig) {
+ logConfig.setRootLevel(LOG_LEVEL_PRODUCE);
+ }
+
+ /**
+ * 将log设置为发布以后的环境
+ *
+ * @param logConfig
+ */
+ private static void setLogToRelease(LogConfig logConfig) {
+ logConfig.setRootLevel(LOG_LEVEL_RELEASE);
+ }
+}
diff --git a/app/src/main/java/com/example/mockgps/MainActivity.java b/app/src/main/java/com/example/mockgps/MainActivity.java
index 2297747a1349533056de95a5f9fc5d84d7d528ed..871c2745036175891eac32ad2ee198587cf11210 100644
--- a/app/src/main/java/com/example/mockgps/MainActivity.java
+++ b/app/src/main/java/com/example/mockgps/MainActivity.java
@@ -88,6 +88,7 @@ import com.baidu.mapapi.search.poi.PoiBoundSearchOption;
import com.baidu.mapapi.search.poi.PoiCitySearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiDetailSearchOption;
+import com.baidu.mapapi.search.poi.PoiDetailSearchResult;
import com.baidu.mapapi.search.poi.PoiIndoorResult;
import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
import com.baidu.mapapi.search.poi.PoiResult;
@@ -96,6 +97,7 @@ import com.baidu.mapapi.search.sug.OnGetSuggestionResultListener;
import com.baidu.mapapi.search.sug.SuggestionResult;
import com.baidu.mapapi.search.sug.SuggestionSearch;
import com.baidu.mapapi.search.sug.SuggestionSearchOption;
+import com.example.log4j.LogUtil;
import com.example.service.HistoryDBHelper;
import com.example.service.MockGpsService;
import com.example.service.SearchDBHelper;
@@ -105,6 +107,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+import java.io.File;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -117,6 +120,10 @@ import mapapi.overlayutil.PoiOverlay;
import static com.example.service.MockGpsService.RunCode;
import static com.example.service.MockGpsService.StopCode;
+import org.apache.log4j.Logger;
+
+import com.example.log4j.*;
+
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, SensorEventListener {
@@ -196,20 +203,24 @@ public class MainActivity extends AppCompatActivity
private MenuItem searchItem;
private boolean isSubmit;
private SuggestionSearch mSuggestionSearch;
+ //log debug
+ private static Logger log = Logger.getLogger(MainActivity.class);
////////
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
-
- Log.d("PROGRESS", "isMockServStart=" + isMockServStart);
+ LogUtil.configLog();
+ //Logger log = Logger.getLogger(MainActivity.class);
Log.d("PROGRESS", "onCreate");
+ log.debug("PROGRESS: onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
+
//sqlite
try {
historyDBHelper = new HistoryDBHelper(getApplicationContext());
@@ -220,6 +231,7 @@ public class MainActivity extends AppCompatActivity
// historyDBHelper.onUpgrade(locHistoryDB,locHistoryDB.getVersion(),locHistoryDB.getVersion());
} catch (Exception e) {
Log.e("DATABASE", "sqlite init error");
+ log.error("DATABASE: sqlite init error");
isSQLiteStart = false;
e.printStackTrace();
}
@@ -280,7 +292,7 @@ public class MainActivity extends AppCompatActivity
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
- //开启定位图层
+ //开启GPS的提醒
if (!isGPSOpen) {
//如果未打开GPS,跳转到定位设置界面
showGpsDialog();
@@ -309,8 +321,7 @@ public class MainActivity extends AppCompatActivity
if (Build.VERSION.SDK_INT >= 23) {
if (!Settings.canDrawOverlays(getApplicationContext())) {
//启动Activity让用户授权
- Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
- startActivity(intent);
+ setFloatWindowDialog();
}
}
//初始化POI搜索监听
@@ -335,6 +346,7 @@ public class MainActivity extends AppCompatActivity
// 写子线程中的操作
while (!isGpsOpened()) {
Log.d("GPS", "gps not open");
+ log.debug("GPS: gps not open");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
@@ -343,6 +355,7 @@ public class MainActivity extends AppCompatActivity
}
isGPSOpen = true;
Log.d("GPS", "gps opened");
+ log.debug("GPS: gps opened");
//如果GPS定位开启,打开定位图层
openLocateLayer();
}
@@ -449,18 +462,18 @@ public class MainActivity extends AppCompatActivity
}
//获取IMEI
- public String getIMEI(Context context, int slotId) {
- try {
- TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- assert manager != null;
- Method method = manager.getClass().getMethod("getImei", int.class);
- String imei = (String) method.invoke(manager, slotId);
- Log.d("IMEI", imei);
- return imei;
- } catch (Exception e) {
- return "";
- }
- }
+// public String getIMEI(Context context, int slotId) {
+// try {
+// TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+// assert manager != null;
+// Method method = manager.getClass().getMethod("getImei", int.class);
+// String imei = (String) method.invoke(manager, slotId);
+// Log.d("IMEI", imei);
+// return imei;
+// } catch (Exception e) {
+// return "";
+// }
+// }
//获取查询历史
private List