diff --git a/app/build.gradle b/app/build.gradle index 1fa57058116b8073967db835d848e44fe3d33459..7b54edd3f9bd10809ca6dfd996f7da1d7880f9bc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 + compileSdkVersion 28 defaultConfig { applicationId "com.example.mockgps" minSdkVersion 14 - targetSdkVersion 27 + targetSdkVersion 28 versionCode 1 - versionName "1.9.4" + versionName "1.9.5" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { @@ -38,13 +38,17 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.android.support:design:27.1.1' + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) implementation files('libs/BaiduLBS_Android.jar') implementation files('libs/library-1.0.19.jar') - implementation 'com.android.support:cardview-v7:27.1.1' +// implementation files('com.android.volley:volley:1.1.1') + implementation 'com.android.support:cardview-v7:28.0.0' + implementation files('libs/log4j-1.2.17.jar') } diff --git a/app/libs/BaiduLBS_Android.jar b/app/libs/BaiduLBS_Android.jar index 409612580070c6618db91f9c3dcb5a700047b283..6fddea525d0218071f10f4390530fa4c1483db4b 100644 Binary files a/app/libs/BaiduLBS_Android.jar and b/app/libs/BaiduLBS_Android.jar differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so b/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_3_2.so similarity index 51% rename from app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so rename to app/libs/arm64-v8a/libBaiduMapSDK_base_v5_3_2.so index 4d7ea8365de1aeded6edfbbbc2ab9b732d07235d..e22d9f77395eed02bffd412d9ed0c44bb357dfd9 100644 Binary files a/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so and b/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_3_2.so differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_bikenavi_v5_1_0.so b/app/libs/arm64-v8a/libBaiduMapSDK_bikenavi_v5_1_0.so deleted file mode 100644 index e7d2d1213e4678cfe426dc573759c0d6d94cd977..0000000000000000000000000000000000000000 Binary files a/app/libs/arm64-v8a/libBaiduMapSDK_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_bikenavi_v5_3_2.so b/app/libs/arm64-v8a/libBaiduMapSDK_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..bec470b273d05ebd259bd0b3b9153c871ba779d0 Binary files /dev/null and b/app/libs/arm64-v8a/libBaiduMapSDK_bikenavi_v5_3_2.so differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so b/app/libs/arm64-v8a/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so deleted file mode 100644 index 5c76625eed49c68a7ff7cb87b3072f7a12a72940..0000000000000000000000000000000000000000 Binary files a/app/libs/arm64-v8a/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so b/app/libs/arm64-v8a/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..8ccd1f594f79318da349d6c82a8113103278b4ef Binary files /dev/null and b/app/libs/arm64-v8a/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so differ diff --git a/app/libs/arm64-v8a/libindoor.so b/app/libs/arm64-v8a/libindoor.so new file mode 100644 index 0000000000000000000000000000000000000000..bfb6f75dd06aa0366593c9e66e18e951eca1ee90 Binary files /dev/null and b/app/libs/arm64-v8a/libindoor.so differ diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so b/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_3_2.so similarity index 55% rename from app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so rename to app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_3_2.so index 6366af7c304be37100fc9c3b2d35d9ab452bcf61..c99a6033171b69b2ff99037c97b5d79dd17b0fbc 100644 Binary files a/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so and b/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_3_2.so differ diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_bikenavi_v5_1_0.so b/app/libs/armeabi-v7a/libBaiduMapSDK_bikenavi_v5_1_0.so deleted file mode 100644 index a5d3ac88a2d526f84ea23d48b98c86441ca49794..0000000000000000000000000000000000000000 Binary files a/app/libs/armeabi-v7a/libBaiduMapSDK_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_bikenavi_v5_3_2.so b/app/libs/armeabi-v7a/libBaiduMapSDK_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..57ced539d6b0aa017862b9ff7d1212201488ff65 Binary files /dev/null and b/app/libs/armeabi-v7a/libBaiduMapSDK_bikenavi_v5_3_2.so differ diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so b/app/libs/armeabi-v7a/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so deleted file mode 100644 index 6f6e321b2cf6b8ef4a3fd97dd1b8a911822a8446..0000000000000000000000000000000000000000 Binary files a/app/libs/armeabi-v7a/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so b/app/libs/armeabi-v7a/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..c893a048d48fb4117c1b63b441b5c8b104ca2de9 Binary files /dev/null and b/app/libs/armeabi-v7a/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so differ diff --git a/app/libs/armeabi-v7a/libindoor.so b/app/libs/armeabi-v7a/libindoor.so new file mode 100644 index 0000000000000000000000000000000000000000..b59be91e9a79f2f2073c89456bcacabcc8d46abd Binary files /dev/null and b/app/libs/armeabi-v7a/libindoor.so differ diff --git a/app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so b/app/libs/armeabi/libBaiduMapSDK_base_v5_3_2.so similarity index 52% rename from app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so rename to app/libs/armeabi/libBaiduMapSDK_base_v5_3_2.so index 14965439ee5eecec00c4ff3ac8001f2e5af22b55..e4fd43bf990a74b9b31fd089c9a61ace23ad91d5 100644 Binary files a/app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so and b/app/libs/armeabi/libBaiduMapSDK_base_v5_3_2.so differ diff --git a/app/libs/armeabi/libBaiduMapSDK_bikenavi_v5_1_0.so b/app/libs/armeabi/libBaiduMapSDK_bikenavi_v5_1_0.so deleted file mode 100644 index b021c93bc09ac8a5af072cba4439185b344e99e6..0000000000000000000000000000000000000000 Binary files a/app/libs/armeabi/libBaiduMapSDK_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/armeabi/libBaiduMapSDK_bikenavi_v5_3_2.so b/app/libs/armeabi/libBaiduMapSDK_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..af020dc51569287a2f0bdf54ecef4908f9f2743d Binary files /dev/null and b/app/libs/armeabi/libBaiduMapSDK_bikenavi_v5_3_2.so differ diff --git a/app/libs/armeabi/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so b/app/libs/armeabi/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so deleted file mode 100644 index 6da39b4bdc987c6bc7988ade3fe54fe7da75a05c..0000000000000000000000000000000000000000 Binary files a/app/libs/armeabi/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/armeabi/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so b/app/libs/armeabi/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..379f72fa4ad7f038a4005160b5072d3c6333b7a4 Binary files /dev/null and b/app/libs/armeabi/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so differ diff --git a/app/libs/armeabi/libindoor.so b/app/libs/armeabi/libindoor.so new file mode 100644 index 0000000000000000000000000000000000000000..a0879cfddca6e2d8318267d0269974f2f53afe12 Binary files /dev/null and b/app/libs/armeabi/libindoor.so differ diff --git a/app/libs/log4j-1.2.17.jar b/app/libs/log4j-1.2.17.jar new file mode 100644 index 0000000000000000000000000000000000000000..068867ebfd231db09a7775794eea8127420380ed Binary files /dev/null and b/app/libs/log4j-1.2.17.jar differ diff --git a/app/libs/x86/libBaiduMapSDK_base_v5_1_0.so b/app/libs/x86/libBaiduMapSDK_base_v5_1_0.so deleted file mode 100644 index a27743f77aa52717eaab601a2e82fb61054017dc..0000000000000000000000000000000000000000 Binary files a/app/libs/x86/libBaiduMapSDK_base_v5_1_0.so and /dev/null differ diff --git a/app/libs/x86/libBaiduMapSDK_base_v5_3_2.so b/app/libs/x86/libBaiduMapSDK_base_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..af6b0c6fc69b41f778cb3b571d3d6816a750f18e Binary files /dev/null and b/app/libs/x86/libBaiduMapSDK_base_v5_3_2.so differ diff --git a/app/libs/x86/libBaiduMapSDK_bikenavi_v5_1_0.so b/app/libs/x86/libBaiduMapSDK_bikenavi_v5_1_0.so deleted file mode 100644 index aa1f97995fbcd13e70145fc5775cf8f4d3396f53..0000000000000000000000000000000000000000 Binary files a/app/libs/x86/libBaiduMapSDK_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/x86/libBaiduMapSDK_bikenavi_v5_3_2.so b/app/libs/x86/libBaiduMapSDK_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..8a34c53dc6a36489775973083045dd237e3e03cb Binary files /dev/null and b/app/libs/x86/libBaiduMapSDK_bikenavi_v5_3_2.so differ diff --git a/app/libs/x86/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so b/app/libs/x86/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so deleted file mode 100644 index 5b70b9c9c066e65e3cb050e077d246a5cfb82ced..0000000000000000000000000000000000000000 Binary files a/app/libs/x86/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/x86/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so b/app/libs/x86/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..ff107e0d2c07b468849d71262dab9e616d7217c3 Binary files /dev/null and b/app/libs/x86/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so differ diff --git a/app/libs/x86/libindoor.so b/app/libs/x86/libindoor.so new file mode 100644 index 0000000000000000000000000000000000000000..1de0a2c2d68704cb47c44882d8fc5de151791d68 Binary files /dev/null and b/app/libs/x86/libindoor.so differ diff --git a/app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so b/app/libs/x86_64/libBaiduMapSDK_base_v5_3_2.so similarity index 52% rename from app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so rename to app/libs/x86_64/libBaiduMapSDK_base_v5_3_2.so index f47dee50c3bfdd9e1c5f46bc28df5b57012fbabd..c564f65451f7c296a77a27382716cabdd2867e1e 100644 Binary files a/app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so and b/app/libs/x86_64/libBaiduMapSDK_base_v5_3_2.so differ diff --git a/app/libs/x86_64/libBaiduMapSDK_bikenavi_v5_1_0.so b/app/libs/x86_64/libBaiduMapSDK_bikenavi_v5_1_0.so deleted file mode 100644 index c7cb7fefd2f34865b692daff0f4be7f727b689e3..0000000000000000000000000000000000000000 Binary files a/app/libs/x86_64/libBaiduMapSDK_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/x86_64/libBaiduMapSDK_bikenavi_v5_3_2.so b/app/libs/x86_64/libBaiduMapSDK_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..4dc5f7e9ba8bfb180a2b4d4a1dfa22a6335cbc7f Binary files /dev/null and b/app/libs/x86_64/libBaiduMapSDK_bikenavi_v5_3_2.so differ diff --git a/app/libs/x86_64/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so b/app/libs/x86_64/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so deleted file mode 100644 index 0f60bf30afa799ea74a1cc4f39ca780db133903c..0000000000000000000000000000000000000000 Binary files a/app/libs/x86_64/libBaiduMapSDK_map_for_bikenavi_v5_1_0.so and /dev/null differ diff --git a/app/libs/x86_64/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so b/app/libs/x86_64/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so new file mode 100644 index 0000000000000000000000000000000000000000..80216b2ab7a7ef270035a6c7ce5c62afd0768a29 Binary files /dev/null and b/app/libs/x86_64/libBaiduMapSDK_map_for_bikenavi_v5_3_2.so differ diff --git a/app/libs/x86_64/libindoor.so b/app/libs/x86_64/libindoor.so new file mode 100644 index 0000000000000000000000000000000000000000..80a00c68271f470adf9af74430bcd68d40f074c8 Binary files /dev/null and b/app/libs/x86_64/libindoor.so differ diff --git a/app/release/output.json b/app/release/output.json index c5c7ec70106b25ed0ed2a077039150a087e9bfd7..5d00b236845befc1671710230e32e7848adad7fc 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.9.4","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.9.5","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8cbfbdea7a30c962efec098fe469de20105ca556..36273172809f49d1e7d6339f0c6bdc025a9de5ab 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ - + @@ -46,6 +46,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> + + * ### 输出格式解释: + * ### [%-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> getSearchHistory() { @@ -488,6 +501,7 @@ public class MainActivity extends AppCompatActivity cursor.close(); } catch (Exception e) { Log.e("DATABASE", "query error"); + log.error("DATABASE: query error"); e.printStackTrace(); } return data; @@ -598,6 +612,7 @@ public class MainActivity extends AppCompatActivity } else { if (!isMockServStart && !isServiceRun) { Log.d("DEBUG", "current pt is " + currentPt.longitude + " " + currentPt.latitude); + log.debug("current pt is " + currentPt.longitude + " " + currentPt.latitude); updateMapState(); //start mock location service Intent mockLocServiceIntent = new Intent(MainActivity.this, MockGpsService.class); @@ -608,23 +623,29 @@ public class MainActivity extends AppCompatActivity //insert end if (Build.VERSION.SDK_INT >= 26) { startForegroundService(mockLocServiceIntent); - Log.d("DEBUG", "startForegroundService:MOCK_GPS"); + Log.d("DEBUG", "startForegroundService: MOCK_GPS"); + log.debug("startForegroundService: MOCK_GPS"); } else { startService(mockLocServiceIntent); - Log.d("DEBUG", "startService:MOCK_GPS"); + Log.d("DEBUG", "startService: MOCK_GPS"); + log.debug("startService: MOCK_GPS"); } isMockServStart = true; Snackbar.make(view, "位置模拟已开启", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); - fab.setVisibility(View.INVISIBLE); - fabStop.setVisibility(View.VISIBLE); + //fab.setVisibility(View.INVISIBLE); + fab.hide(); + //fabStop.setVisibility(View.VISIBLE); + fabStop.show(); //track grouploc.check(R.id.trackloc); } else { Snackbar.make(view, "位置模拟已在运行", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); - fab.setVisibility(View.INVISIBLE); - fabStop.setVisibility(View.VISIBLE); + //fab.setVisibility(View.INVISIBLE); + fab.hide(); + //fabStop.setVisibility(View.VISIBLE); + fabStop.show(); isMockServStart = true; } } @@ -644,8 +665,10 @@ public class MainActivity extends AppCompatActivity .setAction("Action", null).show(); //service finish isMockServStart = false; - fab.setVisibility(View.VISIBLE); - fabStop.setVisibility(View.INVISIBLE); + //fab.setVisibility(View.VISIBLE); + fab.show(); + //fabStop.setVisibility(View.INVISIBLE); + fabStop.hide(); //重新定位 mLocClient.stop(); mLocClient.start(); @@ -688,8 +711,10 @@ public class MainActivity extends AppCompatActivity if (!insertHistorySearchTable(searchHistoryDB, SearchDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistorySearchTable[SearchHistory] error"); + log.error("DATABASE: insertHistorySearchTable[SearchHistory] error"); } else { Log.d("DATABASE", "insertHistorySearchTable[SearchHistory] success"); + log.debug("DATABASE: insertHistorySearchTable[SearchHistory] success"); } mlinearLayout.setVisibility(View.INVISIBLE); @@ -736,8 +761,10 @@ public class MainActivity extends AppCompatActivity contentValues.put("TimeStamp", System.currentTimeMillis() / 1000); if (!insertHistorySearchTable(searchHistoryDB, SearchDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistorySearchTable[SearchHistory] error"); + log.error("DATABASE: insertHistorySearchTable[SearchHistory] error"); } else { Log.d("DATABASE", "insertHistorySearchTable[SearchHistory] success"); + log.debug("DATABASE: insertHistorySearchTable[SearchHistory] success"); } } //如果仅仅是搜索 @@ -764,18 +791,23 @@ public class MainActivity extends AppCompatActivity contentValues.put("TimeStamp", System.currentTimeMillis() / 1000); if (!insertHistorySearchTable(searchHistoryDB, SearchDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistorySearchTable[SearchHistory] error"); + log.error("DATABASE: insertHistorySearchTable[SearchHistory] error"); } else { Log.d("DATABASE", "insertHistorySearchTable[SearchHistory] success"); + log.debug("DATABASE: insertHistorySearchTable[SearchHistory] success"); } } catch (Exception e) { DisplayToast("搜索失败,请检查网络连接"); + Log.d("HTTP", "搜索失败,请检查网络连接"); + log.debug("搜索失败,请检查网络连接"); e.printStackTrace(); } } //其他情况 else { - + Log.d("HTTP", "illegal parameter"); + log.debug("搜索失败,参数非法"); } @@ -811,6 +843,7 @@ public class MainActivity extends AppCompatActivity } catch (Exception e) { Log.e("DATABASE", "delete error"); + log.error("DATABASE: delete error"); DisplayToast("DELETE ERROR[UNKNOWN]"); e.printStackTrace(); } @@ -843,6 +876,8 @@ public class MainActivity extends AppCompatActivity public void onGetPoiResult(PoiResult poiResult) { if (poiResult == null || poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 没有找到检索结果 DisplayToast("没有找到检索结果"); + Log.d("BDLOC", "没有找到检索结果"); + log.debug("BDLOC: 没有找到检索结果"); return; } if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 检索结果正常返回 @@ -892,6 +927,11 @@ public class MainActivity extends AppCompatActivity // Log.d("DETAIL",poiDetailResult.tag); } + @Override + public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) { + + } + @Override public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) { @@ -1004,6 +1044,7 @@ public class MainActivity extends AppCompatActivity sqLiteDatabase.insert(tableName, null, contentValues); } catch (Exception e) { Log.e("DATABASE", "insert error"); + log.error("DATABASE: insert error"); insertRet = false; e.printStackTrace(); } @@ -1020,6 +1061,7 @@ public class MainActivity extends AppCompatActivity sqLiteDatabase.insert(tableName, null, contentValues); } catch (Exception e) { Log.e("DATABASE", "insert error"); + log.error("DATABASE: insert error"); insertRet = false; e.printStackTrace(); } @@ -1061,7 +1103,7 @@ public class MainActivity extends AppCompatActivity new AlertDialog.Builder(this) .setTitle("启用位置模拟")//这里是表头的内容 - .setMessage("请在开发者选项->选择模拟位置信息应用中进行设置")//这里是中间显示的具体信息 + .setMessage("请在\"开发者选项→选择模拟位置信息应用\"中进行设置")//这里是中间显示的具体信息 .setPositiveButton("设置",//这个string是设置左边按钮的文字 new DialogInterface.OnClickListener() { @Override @@ -1084,6 +1126,34 @@ public class MainActivity extends AppCompatActivity .show(); } + + //提醒开启悬浮窗的弹框 + private void setFloatWindowDialog() { + new AlertDialog.Builder(this) + .setTitle("启用悬浮窗")//这里是表头的内容 + .setMessage("为了模拟定位的稳定性,建议开启\"显示悬浮窗\"选项")//这里是中间显示的具体信息 + .setPositiveButton("设置",//这个string是设置左边按钮的文字 + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + try { + Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); + startActivity(intent); + } catch (Exception e) { + DisplayToast("无法跳转到设置界面,请在权限管理中开启该应用的悬浮窗"); + e.printStackTrace(); + } + } + })//setPositiveButton里面的onClick执行的是左边按钮 + .setNegativeButton("取消",//这个string是设置右边按钮的文字 + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + })//setNegativeButton里面的onClick执行的是右边的按钮的操作 + .show(); + } + //模拟位置权限是否开启 public boolean isAllowMockLocation() { boolean canMockPosition = false; @@ -1222,6 +1292,7 @@ public class MainActivity extends AppCompatActivity //更新地图状态显示面板 private void updateMapState() { Log.d("DEBUG", "updateMapState"); + log.debug("DEBUG: updateMapState"); if (currentPt != null) { MarkerOptions ooA = new MarkerOptions().position(currentPt).icon(bdA); mBaiduMap.clear(); @@ -1286,6 +1357,7 @@ public class MainActivity extends AppCompatActivity @Override protected void onPause() { Log.d("PROGRESS", "onPause"); + log.debug("PROGRESS: onPause"); mMapView.onPause(); super.onPause(); } @@ -1293,6 +1365,7 @@ public class MainActivity extends AppCompatActivity @Override protected void onResume() { Log.d("PROGRESS", "onPause"); + log.debug("PROGRESS: onPause"); mMapView.onResume(); super.onResume(); //为系统的方向传感器注册监听器 @@ -1303,6 +1376,7 @@ public class MainActivity extends AppCompatActivity @Override protected void onStop() { Log.d("PROGRESS", "onStop"); + log.debug("PROGRESS: onStop"); //取消注册传感器监听 mSensorManager.unregisterListener(this); super.onStop(); @@ -1359,9 +1433,9 @@ public class MainActivity extends AppCompatActivity permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n"; } // 读取电话状态权限 - if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) { - permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n"; - } +// if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) { +// permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n"; +// } if (permissions.size() > 0) { requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST); @@ -1477,14 +1551,18 @@ public class MainActivity extends AppCompatActivity contentValues.put("TimeStamp", System.currentTimeMillis() / 1000); if (!insertHistorySearchTable(searchHistoryDB, SearchDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistorySearchTable[SearchHistory] error"); + log.error("DATABASE: insertHistorySearchTable[SearchHistory] error"); } else { Log.d("DATABASE", "insertHistorySearchTable[SearchHistory] success"); + log.debug("DATABASE: insertHistorySearchTable[SearchHistory] success"); } mBaiduMap.clear(); mlinearLayout.setVisibility(View.INVISIBLE); } catch (Exception e) { DisplayToast("搜索失败,请检查网络连接"); + Log.d("HTTP", "搜索失败,请检查网络连接"); + log.debug("HTTP: 搜索失败,请检查网络连接"); e.printStackTrace(); } // @@ -1513,6 +1591,8 @@ public class MainActivity extends AppCompatActivity // .pageNum(0)); } catch (Exception e) { DisplayToast("搜索失败,请检查网络连接"); + Log.d("HTTP", "搜索失败,请检查网络连接"); + log.debug("HTTP: 搜索失败,请检查网络连接"); e.printStackTrace(); } // @@ -1588,9 +1668,11 @@ public class MainActivity extends AppCompatActivity Intent intent = new Intent(Settings.ACTION_SETTINGS); startActivity(intent); } -// else if (id == R.id.nav_share) { -// -// } + else if (id == R.id.nav_bug_report) { + //选择日志文件并上传 + DisplayToast("代码没写完"); + + } else if (id == R.id.nav_send) { Intent i = new Intent(Intent.ACTION_SEND); // i.setType("text/plain"); //模拟器请使用这行 @@ -1617,9 +1699,10 @@ public class MainActivity extends AppCompatActivity final String mcode = getResources().getString(R.string.safecode); final String ak = "iDVeohokAwgulI0Yga4voEoqDaGqxL7y"; //判断bd09坐标是否在国内 - String mapApiUrl = "http://api.map.baidu.com/geoconv/v1/?coords=" + longitude + "," + latitude + + String mapApiUrl = "https://api.map.baidu.com/geoconv/v1/?coords=" + longitude + "," + latitude + "&from=5&to=3&ak=" + ak + "&mcode=" + mcode; -// Log.d("HTTP", mapApiUrl); + Log.d("HTTP", mapApiUrl); + log.debug("HTTP: " + mapApiUrl); //bd09坐标转gcj02 StringRequest stringRequest = new StringRequest(mapApiUrl, new Response.Listener() { @@ -1630,6 +1713,7 @@ public class MainActivity extends AppCompatActivity //如果api接口转换成功 if (Integer.valueOf(getRetJson.getString("status")) == 0) { Log.d("HTTP", "call api[bd09_to_gcj02] success"); + log.debug("HTTP: call api[bd09_to_gcj02] success"); JSONArray coordinateArr = getRetJson.getJSONArray("result"); JSONObject coordinate = coordinateArr.getJSONObject(0); String gcj02Longitude = coordinate.getString("x"); @@ -1641,6 +1725,9 @@ public class MainActivity extends AppCompatActivity Log.d("DEBUG", "gcj02Longitude is " + gcj02Longitude); Log.d("DEBUG", "gcj02Latitude is " + gcj02Latitude); + log.debug("bd09Longitude is " + longitude + ", " + "bd09Latitude is " + latitude); + log.debug("gcj02Longitude is " + gcj02Longitude + ", " + "gcj02Latitude is " + gcj02Latitude); + BigDecimal bigDecimalGcj02Longitude = new BigDecimal(Double.valueOf(gcj02Longitude)); BigDecimal bigDecimalGcj02Latitude = new BigDecimal(Double.valueOf(gcj02Latitude)); @@ -1658,12 +1745,16 @@ public class MainActivity extends AppCompatActivity Log.d("DEBUG", "bd09LongitudeDouble is " + bd09LongitudeDouble); Log.d("DEBUG", "bd09LatitudeDouble is " + bd09LatitudeDouble); + log.debug("gcj02LongitudeDouble is " + gcj02LongitudeDouble + ", " + "gcj02LatitudeDouble is " + gcj02LatitudeDouble); + log.debug("bd09LongitudeDouble is " + bd09LongitudeDouble + ", " + "bd09LatitudeDouble is " + bd09LatitudeDouble); + //如果bd09转gcj02 结果误差很小 认为该坐标在国外 if ((Math.abs(gcj02LongitudeDouble - bd09LongitudeDouble)) <= error && (Math.abs(gcj02LatitudeDouble - bd09LatitudeDouble)) <= error) { //不进行坐标转换 latLngInfo = longitude + "&" + latitude; Log.d("DEBUG", "OUT OF CHN, NO NEED TO TRANSFORM COORDINATE"); + log.debug("OUT OF CHN, NO NEED TO TRANSFORM COORDINATE"); // DisplayToast("OUT OF CHN, NO NEED TO TRANSFORM COORDINATE"); } else { //离线转换坐标系 @@ -1671,6 +1762,7 @@ public class MainActivity extends AppCompatActivity double latLng[] = Utils.gcj02towgs84(Double.valueOf(gcj02Longitude), Double.valueOf(gcj02Latitude)); latLngInfo = latLng[0] + "&" + latLng[1]; Log.d("DEBUG", "IN CHN, NEED TO TRANSFORM COORDINATE"); + log.debug("IN CHN, NEED TO TRANSFORM COORDINATE"); // DisplayToast("IN CHN, NEED TO TRANSFORM COORDINATE"); } } @@ -1680,16 +1772,19 @@ public class MainActivity extends AppCompatActivity double latLng[] = Utils.bd2wgs(Double.valueOf(longitude), Double.valueOf(latitude)); latLngInfo = latLng[0] + "&" + latLng[1]; Log.d("DEBUG", "IN CHN, NEED TO TRANSFORM COORDINATE"); + log.debug("IN CHN, NEED TO TRANSFORM COORDINATE"); // DisplayToast("BD Map Api Return not Zero, ASSUME IN CHN, NEED TO TRANSFORM COORDINATE"); } } catch (JSONException e) { Log.e("JSON", "resolve json error"); + log.error("JSON: resolve json error"); e.printStackTrace(); //离线转换坐标系 double latLng[] = Utils.bd2wgs(Double.valueOf(longitude), Double.valueOf(latitude)); latLngInfo = latLng[0] + "&" + latLng[1]; Log.d("DEBUG", "IN CHN, NEED TO TRANSFORM COORDINATE"); + log.debug("IN CHN, NEED TO TRANSFORM COORDINATE"); // DisplayToast("Resolve JSON Error, ASSUME IN CHN, NEED TO TRANSFORM COORDINATE"); } } @@ -1699,10 +1794,12 @@ public class MainActivity extends AppCompatActivity public void onErrorResponse(VolleyError error) { //http 请求失败 Log.e("HTTP", "HTTP GET FAILED"); + log.error("HTTP: HTTP GET FAILED"); //离线转换坐标系 double latLng[] = Utils.bd2wgs(Double.valueOf(longitude), Double.valueOf(latitude)); latLngInfo = latLng[0] + "&" + latLng[1]; Log.d("DEBUG", "IN CHN, NEED TO TRANSFORM COORDINATE"); + log.debug("IN CHN, NEED TO TRANSFORM COORDINATE"); // DisplayToast("HTTP Get Failed, ASSUME IN CHN, NEED TO TRANSFORM COORDINATE"); } }); @@ -1723,7 +1820,7 @@ public class MainActivity extends AppCompatActivity final String mcode = getResources().getString(R.string.safecode); final String ak = "iDVeohokAwgulI0Yga4voEoqDaGqxL7y"; //bd09坐标的位置信息 - String mapApiUrl = "http://api.map.baidu.com/geocoder/v2/?location=" + currentPt.latitude + "," + currentPt.longitude + "&output=json&pois=1&ak=" + ak + "&mcode=" + mcode; + String mapApiUrl = "https://api.map.baidu.com/geocoder/v2/?location=" + currentPt.latitude + "," + currentPt.longitude + "&output=json&pois=1&ak=" + ak + "&mcode=" + mcode; StringRequest stringRequest = new StringRequest(mapApiUrl, new Response.Listener() { @Override @@ -1733,10 +1830,12 @@ public class MainActivity extends AppCompatActivity //位置获取成功 if (Integer.valueOf(getRetJson.getString("status")) == 0) { Log.d("HTTP", "call api[get_poisition_info] success"); + log.debug("HTTP: call api[get_poisition_info] success"); JSONObject posInfoJson = getRetJson.getJSONObject("result"); String formatted_address = posInfoJson.getString("formatted_address"); // DisplayToast(tmp); - Log.d("DEBUG", formatted_address); + Log.d("ADDR", formatted_address); + log.debug(formatted_address); //插表参数 ContentValues contentValues = new ContentValues(); @@ -1750,8 +1849,10 @@ public class MainActivity extends AppCompatActivity if (!insertHistoryLocTable(locHistoryDB, HistoryDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistoryLocTable[HistoryLocation] error"); + log.error("DATABASE: insertHistoryLocTable[HistoryLocation] error"); } else { Log.d("DATABASE", "insertHistoryLocTable[HistoryLocation] success"); + log.debug("DATABASE: insertHistoryLocTable[HistoryLocation] success"); } } //位置获取失败 @@ -1768,13 +1869,16 @@ public class MainActivity extends AppCompatActivity if (!insertHistoryLocTable(locHistoryDB, HistoryDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistoryLocTable[HistoryLocation] error"); + log.error("DATABASE: insertHistoryLocTable[HistoryLocation] error"); } else { Log.d("DATABASE", "insertHistoryLocTable[HistoryLocation] success"); + log.debug("DATABASE: insertHistoryLocTable[HistoryLocation] success"); } } } catch (JSONException e) { Log.e("JSON", "resolve json error"); + log.error("JSON: resolve json error"); //插表参数 ContentValues contentValues = new ContentValues(); contentValues.put("Location", "NULL"); @@ -1787,8 +1891,10 @@ public class MainActivity extends AppCompatActivity if (!insertHistoryLocTable(locHistoryDB, HistoryDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistoryLocTable[HistoryLocation] error"); + log.error("DATABASE: insertHistoryLocTable[HistoryLocation] error"); } else { Log.d("DATABASE", "insertHistoryLocTable[HistoryLocation] success"); + log.debug("DATABASE: insertHistoryLocTable[HistoryLocation] success"); } e.printStackTrace(); } @@ -1799,6 +1905,7 @@ public class MainActivity extends AppCompatActivity public void onErrorResponse(VolleyError error) { //http 请求失败 Log.e("HTTP", "HTTP GET FAILED"); + log.error("HTTP: HTTP GET FAILED"); //插表参数 ContentValues contentValues = new ContentValues(); contentValues.put("Location", "NULL"); @@ -1811,8 +1918,10 @@ public class MainActivity extends AppCompatActivity if (!insertHistoryLocTable(locHistoryDB, HistoryDBHelper.TABLE_NAME, contentValues)) { Log.e("DATABASE", "insertHistoryLocTable[HistoryLocation] error"); + log.error("DATABASE: insertHistoryLocTable[HistoryLocation] error"); } else { Log.d("DATABASE", "insertHistoryLocTable[HistoryLocation] success"); + log.debug("DATABASE: insertHistoryLocTable[HistoryLocation] success"); } } }); @@ -1829,7 +1938,8 @@ public class MainActivity extends AppCompatActivity Bundle bundle = intent.getExtras(); assert bundle != null; statusCode = bundle.getInt("statusCode"); -// Log.d("DEBUG", statusCode + ""); + Log.d("DEBUG", "BroadcastReceiver statusCode: " + statusCode + ""); + log.debug("DEBUG: BroadcastReceiver statusCode: " + statusCode + ""); if (statusCode == RunCode) { isServiceRun = true; } else if (statusCode == StopCode) { @@ -1854,6 +1964,7 @@ public class MainActivity extends AppCompatActivity } catch (Exception e) { ret = false; Log.e("UNKNOWN", "setHistoryLocation error"); + log.error("UNKNOWN: setHistoryLocation error"); e.printStackTrace(); } return ret; diff --git a/app/src/main/java/com/example/mockgps/StartActivity.java b/app/src/main/java/com/example/mockgps/StartActivity.java index 7d2edfa2b0a84feb7791550ad73b7db9a4cf21ca..6e1e42c23274baee98b4eced24c3ed0e2e5e05ae 100644 --- a/app/src/main/java/com/example/mockgps/StartActivity.java +++ b/app/src/main/java/com/example/mockgps/StartActivity.java @@ -8,6 +8,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.View; import android.widget.Button; @@ -30,6 +31,7 @@ public class StartActivity extends AppCompatActivity { permissions = new ArrayList(); getPersimmions(); isStart=false; + Log.d("START",""+permissions.size()); if (permissions.size()==0){ new Handler().postDelayed(new Runnable() { public void run() { @@ -87,9 +89,9 @@ public class StartActivity extends AppCompatActivity { permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n"; } // 读取电话状态权限 - if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) { - permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n"; - } +// if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) { +// permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n"; +// } if (permissions.size() > 0) { requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST); diff --git a/app/src/main/java/com/example/service/FloatWindow.java b/app/src/main/java/com/example/service/FloatWindow.java index b23925e07f5d6dde04654b05d50b835271d00bcc..41a252c56f77edc818d19ac6103d3bb52a0abf2e 100644 --- a/app/src/main/java/com/example/service/FloatWindow.java +++ b/app/src/main/java/com/example/service/FloatWindow.java @@ -60,7 +60,7 @@ public class FloatWindow implements View.OnTouchListener { mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; mWindowParams.gravity = Gravity.START | Gravity.TOP; mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - mWindowParams.height = 96; + mWindowParams.height = 108; // mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT; Log.d("FLOAT","initFloatWindow finish"); } diff --git a/app/src/main/java/com/example/service/MockGpsService.java b/app/src/main/java/com/example/service/MockGpsService.java index e6813e1fba843098026d956029e0d5d6ccf3e016..c33d106be3b7bcf70ae895dc6ed5f6138acde2b2 100644 --- a/app/src/main/java/com/example/service/MockGpsService.java +++ b/app/src/main/java/com/example/service/MockGpsService.java @@ -27,8 +27,11 @@ import android.view.Gravity; import android.widget.Toast; import com.baidu.mapapi.model.LatLng; +import com.example.log4j.LogUtil; import com.example.mockgps.R; +import org.apache.log4j.Logger; + import java.util.UUID; public class MockGpsService extends Service { @@ -53,6 +56,8 @@ public class MockGpsService extends Service { public static final int RunCode=0x01; public static final int StopCode=0x02; + //log debug + private static Logger log = Logger.getLogger(MockGpsService.class); @Nullable @Override @@ -63,7 +68,9 @@ public class MockGpsService extends Service { @SuppressLint("WrongConstant") @Override public void onCreate() { + LogUtil.configLog(); Log.d(TAG, "onCreate"); + log.debug(TAG+ ": onCreate"); super.onCreate(); locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE); @@ -72,9 +79,13 @@ public class MockGpsService extends Service { rmNetworkProvider(); //add a new network location provider -// setGPSProvider(); setNewNetworkProvider(); + +// rmGPSProvider(); +// setGPSProvider(); + //setGPSProvider(); + //thread handlerThread=new HandlerThread(getUUID(),-2); handlerThread.start(); @@ -84,6 +95,13 @@ public class MockGpsService extends Service { try { Thread.sleep(333); if (!isStop){ + + //remove default network location provider + //rmNetworkProvider(); + + //add a new network location provider + //setNewNetworkProvider(); + setNetworkLocation(); sendEmptyMessage(0); //broadcast to MainActivity @@ -94,7 +112,8 @@ public class MockGpsService extends Service { } } catch (InterruptedException e) { e.printStackTrace(); - Log.d(TAG, "setNetworkLocation error"); + Log.d(TAG, "handleMessage error"); + log.debug(TAG+ ": handleMessage error"); Thread.currentThread().interrupt(); } } @@ -106,12 +125,14 @@ public class MockGpsService extends Service { public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.d(TAG, "onStart"); + log.debug(TAG+ ": onStart"); } @RequiresApi(api = Build.VERSION_CODES.O) @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand"); + log.debug(TAG+ ": onStartCommand"); // DisplayToast("Mock Location Service Start"); // @@ -145,6 +166,7 @@ public class MockGpsService extends Service { //get location info from mainActivity latLngInfo=intent.getStringExtra("key"); Log.d(TAG, "dataFromMain is "+latLngInfo); + log.debug(TAG+ ": dataFromMain is "+latLngInfo); //start to refresh location isStop=false; @@ -165,6 +187,7 @@ public class MockGpsService extends Service { @Override public void onDestroy() { Log.d(TAG, "onDestroy"); + log.debug(TAG+ ": onDestroy"); // Toast.makeText(this, "Service destroyed", Toast.LENGTH_SHORT).show(); // DisplayToast("Mock Loction Service finish"); @@ -178,6 +201,7 @@ public class MockGpsService extends Service { handlerThread.quit(); rmNetworkProvider(); + //rmGPSProvider(); stopForeground(true); //broadcast to MainActivity @@ -219,15 +243,20 @@ public class MockGpsService extends Service { //set network location private void setNetworkLocation() { //default location 30.5437233 104.0610342 成都长虹科技大厦 + Log.d(TAG, "setNetworkLocation: "+latLngInfo); + log.debug(TAG+ ": setNetworkLocation: "+latLngInfo); String latLngStr[]=latLngInfo.split("&"); LatLng latLng = new LatLng(Double.valueOf(latLngStr[1]), Double.valueOf(latLngStr[0])); String providerStr = LocationManager.NETWORK_PROVIDER; +// String providerStr2 = LocationManager.GPS_PROVIDER; try { locationManager.setTestProviderLocation(providerStr, generateLocation(latLng)); +// locationManager.setTestProviderLocation(providerStr2, generateLocation(latLng)); //for test // locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, generateLocation(latLng)); } catch (Exception e) { Log.d(TAG, "setNetworkLocation error"); + log.debug(TAG+ ": setNetworkLocation error"); e.printStackTrace(); } } @@ -235,15 +264,23 @@ public class MockGpsService extends Service { //remove network provider private void rmNetworkProvider(){ try { - String providerStr = LocationManager.NETWORK_PROVIDER; - if (locationManager.isProviderEnabled(providerStr)){ - Log.d(TAG, "now remove NetworkProvider"); + for(int i=0;i<3;i++){ + String providerStr = LocationManager.NETWORK_PROVIDER; + if (locationManager.isProviderEnabled(providerStr)){ + Log.d(TAG, "now remove NetworkProvider: "+i); + log.debug(TAG+ ": now remove NetworkProvider: "+i); // locationManager.setTestProviderEnabled(providerStr,true); - locationManager.removeTestProvider(providerStr); + locationManager.removeTestProvider(providerStr); + }else{ + Log.d(TAG, "NetworkProvider is not enabled: "+i); + log.debug(TAG+ ": NetworkProvider is not enabled: "+i); + } } + }catch (Exception e){ e.printStackTrace(); Log.d(TAG, "rmNetworkProvider error"); + log.debug(TAG+ ": rmNetworkProvider error"); } } @@ -255,38 +292,57 @@ public class MockGpsService extends Service { false, false, false, false, false, 1, Criteria.ACCURACY_FINE); Log.d(TAG,"addTestProvider[network] success"); + log.debug(TAG+": addTestProvider[network] success"); // locationManager.setTestProviderStatus("network", LocationProvider.AVAILABLE, null, // System.currentTimeMillis()); }catch (SecurityException e){ Log.d(TAG,"setNewNetworkProvider error"); + log.debug(TAG+": setNewNetworkProvider error"); } if (!locationManager.isProviderEnabled(providerStr)){ Log.d(TAG, "now setTestProviderEnabled[network]"); + log.debug(TAG+ ": now setTestProviderEnabled[network]"); locationManager.setTestProviderEnabled(providerStr,true); } } // for test: set GPS provider + private void rmGPSProvider(){ + try { + String providerStr = LocationManager.GPS_PROVIDER; + if (locationManager.isProviderEnabled(providerStr)){ + Log.d(TAG, "now remove GPSProvider"); +// locationManager.setTestProviderEnabled(providerStr,true); + locationManager.removeTestProvider(providerStr); + } + }catch (Exception e){ + e.printStackTrace(); + Log.d(TAG, "rmGPSProvider error"); + } + } private void setGPSProvider(){ LocationProvider provider = locationManager.getProvider(LocationManager.GPS_PROVIDER); - if (provider != null) { - locationManager.addTestProvider( - provider.getName() - , provider.requiresNetwork() - , provider.requiresSatellite() - , provider.requiresCell() - , provider.hasMonetaryCost() - , provider.supportsAltitude() - , provider.supportsSpeed() - , provider.supportsBearing() - , provider.getPowerRequirement() - , provider.getAccuracy()); - } else { - locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, true, false, +// if (provider != null) { +// locationManager.addTestProvider( +// provider.getName() +// , provider.requiresNetwork() +// , provider.requiresSatellite() +// , provider.requiresCell() +// , provider.hasMonetaryCost() +// , provider.supportsAltitude() +// , provider.supportsSpeed() +// , provider.supportsBearing() +// , provider.getPowerRequirement() +// , provider.getAccuracy()); +// } else { + locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, true, true, false, true, true, true, 0, 5); - } +// } +// if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){ + locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true); +// } + - locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true); //新 locationManager.setTestProviderStatus(LocationManager.GPS_PROVIDER, LocationProvider.AVAILABLE, null, System.currentTimeMillis()); diff --git a/app/src/main/res/drawable/bkicon.png b/app/src/main/res/drawable/bkicon.png new file mode 100644 index 0000000000000000000000000000000000000000..16fc784b73702d90a8aae32705a4b76ffb714f85 Binary files /dev/null and b/app/src/main/res/drawable/bkicon.png differ diff --git a/app/src/main/res/drawable/ic_bug_report_18pt_3x.png b/app/src/main/res/drawable/ic_bug_report_18pt_3x.png new file mode 100644 index 0000000000000000000000000000000000000000..145f2e6e1cb470a78d6781a729fc1014ceb6560f Binary files /dev/null and b/app/src/main/res/drawable/ic_bug_report_18pt_3x.png differ diff --git a/app/src/main/res/drawable/myicon.png b/app/src/main/res/drawable/myicon.png new file mode 100644 index 0000000000000000000000000000000000000000..682856aeb34261cca667b4c43cd765452d101667 Binary files /dev/null and b/app/src/main/res/drawable/myicon.png differ diff --git a/app/src/main/res/layout/float_button.xml b/app/src/main/res/layout/float_button.xml index 7fc59bee2c6778246cc48d83d2b6215bad555764..b672c3357c2fe05b41bdafea7b0f379bb69da69a 100644 --- a/app/src/main/res/layout/float_button.xml +++ b/app/src/main/res/layout/float_button.xml @@ -1,6 +1,7 @@