提交 a199b39e 编写于 作者: N NeroZhang

1.9.5

上级 264561f3
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')
}
[{"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
......@@ -13,7 +13,7 @@
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
......@@ -46,6 +46,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
......
package com.example.log4j;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Layout;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.spi.LoggingEvent;
import android.util.Log;
/**
* 源自 android-logging-log4j-1.0.3.jar
*
* @author Administrator
*/
public class LogCatAppender extends AppenderSkeleton {
protected Layout tagLayout;
public LogCatAppender(Layout messageLayout, Layout tagLayout) {
this.tagLayout = tagLayout;
setLayout(messageLayout);
}
public LogCatAppender(Layout messageLayout) {
//这里定义的是Tag名称
this(messageLayout, new PatternLayout("%c"));
}
public LogCatAppender() {
this(new PatternLayout("%c"));
}
protected void append(LoggingEvent le) {
switch (le.getLevel().toInt()) {
case 5000:
if (le.getThrowableInformation() != null) {
Log.v(getTagLayout().format(le), getLayout().format(le), le.getThrowableInformation().getThrowable());
} else {
Log.v(getTagLayout().format(le), getLayout().format(le));
}
break;
case 10000:
if (le.getThrowableInformation() != null) {
Log.d(getTagLayout().format(le), getLayout().format(le), le.getThrowableInformation().getThrowable());
} else {
Log.d(getTagLayout().format(le), getLayout().format(le));
}
break;
case 20000:
if (le.getThrowableInformation() != null) {
Log.i(getTagLayout().format(le), getLayout().format(le), le.getThrowableInformation().getThrowable());
} else {
Log.i(getTagLayout().format(le), getLayout().format(le));
}
break;
case 30000:
if (le.getThrowableInformation() != null) {
Log.w(getTagLayout().format(le), getLayout().format(le), le.getThrowableInformation().getThrowable());
} else {
Log.w(getTagLayout().format(le), getLayout().format(le));
}
break;
case 40000:
if (le.getThrowableInformation() != null) {
Log.e(getTagLayout().format(le), getLayout().format(le), le.getThrowableInformation().getThrowable());
} else {
Log.e(getTagLayout().format(le), getLayout().format(le));
}
break;
case 50000:
if (le.getThrowableInformation() != null) {
Log.wtf(getTagLayout().format(le), getLayout().format(le), le.getThrowableInformation().getThrowable());
} else
Log.wtf(getTagLayout().format(le), getLayout().format(le));
break;
}
}
public void close() {
}
public boolean requiresLayout() {
return true;
}
public Layout getTagLayout() {
return this.tagLayout;
}
public void setTagLayout(Layout tagLayout) {
this.tagLayout = tagLayout;
}
}
package com.example.log4j;
import java.io.IOException;
import org.apache.log4j.Layout;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.apache.log4j.helpers.LogLog;
/**
* 源自 android-logging-log4j-1.0.3.jar
*
* @author Administrator
*/
public class LogConfig {
private Level rootLevel = Level.DEBUG;
/**
* ### log文件的格式
*
* ### 输出格式解释:
* ### [%-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 String filePattern = "[%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n";
/**
* ### LogCat控制台输出格式
*
* ### [Class: 信息所在的class.method(className:lineNumber)] 换行
* ### [Level: 5个字符的等级名称] - Msg: 输出信息 换行
*/
private String logCatPattern = "[Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n";
private String fileName = "android-log4j.log";
private int maxBackupSize = 5;
private long maxFileSize = 1024 * 1024 * 5L;
private boolean immediateFlush = true;
private boolean useLogCatAppender = true;
private boolean useFileAppender = true;
private boolean resetConfiguration = true;
private boolean internalDebugging = false;
public LogConfig() {
}
public LogConfig(String fileName) {
setFileName(fileName);
}
public LogConfig(String fileName, Level rootLevel) {
this(fileName);
setRootLevel(rootLevel);
}
public LogConfig(String fileName, Level rootLevel, String filePattern) {
this(fileName);
setRootLevel(rootLevel);
setFilePattern(filePattern);
}
public LogConfig(String fileName, int maxBackupSize, long maxFileSize, String filePattern, Level rootLevel) {
this(fileName, rootLevel, filePattern);
setMaxBackupSize(maxBackupSize);
setMaxFileSize(maxFileSize);
}
public void configure() {
Logger root = Logger.getRootLogger();
if (isResetConfiguration()) {
LogManager.getLoggerRepository().resetConfiguration();
}
LogLog.setInternalDebugging(isInternalDebugging());
if (isUseFileAppender()) {
configureFileAppender();
}
if (isUseLogCatAppender()) {
configureLogCatAppender();
}
root.setLevel(getRootLevel());
}
public void setLevel(String loggerName, Level level) {
Logger.getLogger(loggerName).setLevel(level);
}
private void configureFileAppender() {
Logger root = Logger.getRootLogger();
Layout fileLayout = new PatternLayout(getFilePattern());
RollingFileAppender rollingFileAppender;
try {
rollingFileAppender = new RollingFileAppender(fileLayout, getFileName());
} catch (IOException e) {
throw new RuntimeException("Exception configuring log system", e);
}
rollingFileAppender.setMaxBackupIndex(getMaxBackupSize());
rollingFileAppender.setMaximumFileSize(getMaxFileSize());
rollingFileAppender.setImmediateFlush(isImmediateFlush());
root.addAppender(rollingFileAppender);
}
private void configureLogCatAppender() {
Logger root = Logger.getRootLogger();
Layout logCatLayout = new PatternLayout(getLogCatPattern());
LogCatAppender logCatAppender = new LogCatAppender(logCatLayout);
root.addAppender(logCatAppender);
}
public Level getRootLevel() {
return this.rootLevel;
}
public void setRootLevel(Level level) {
this.rootLevel = level;
}
public String getFilePattern() {
return this.filePattern;
}
public void setFilePattern(String filePattern) {
this.filePattern = filePattern;
}
public String getLogCatPattern() {
return this.logCatPattern;
}
public void setLogCatPattern(String logCatPattern) {
this.logCatPattern = logCatPattern;
}
public String getFileName() {
return this.fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public int getMaxBackupSize() {
return this.maxBackupSize;
}
public void setMaxBackupSize(int maxBackupSize) {
this.maxBackupSize = maxBackupSize;
}
public long getMaxFileSize() {
return this.maxFileSize;
}
public void setMaxFileSize(long maxFileSize) {
this.maxFileSize = maxFileSize;
}
public boolean isImmediateFlush() {
return this.immediateFlush;
}
public void setImmediateFlush(boolean immediateFlush) {
this.immediateFlush = immediateFlush;
}
public boolean isUseFileAppender() {
return this.useFileAppender;
}
public void setUseFileAppender(boolean useFileAppender) {
this.useFileAppender = useFileAppender;
}
public boolean isUseLogCatAppender() {
return this.useLogCatAppender;
}
public void setUseLogCatAppender(boolean useLogCatAppender) {
this.useLogCatAppender = useLogCatAppender;
}
public void setResetConfiguration(boolean resetConfiguration) {
this.resetConfiguration = resetConfiguration;
}
public boolean isResetConfiguration() {
return this.resetConfiguration;
}
public void setInternalDebugging(boolean internalDebugging) {
this.internalDebugging = internalDebugging;
}
public boolean isInternalDebugging() {
return this.internalDebugging;
}
}
\ No newline at end of file
package com.example.log4j;
import java.io.File;
import java.util.Date;
import java.util.Locale;
import java.text.SimpleDateFormat;
import org.apache.log4j.Level;
import android.os.Environment;
/**
* LogUtil 工具类
*
* @author Administrator
*/
@SuppressWarnings("all")
public class LogUtil {
private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd");
private static final String timeStr = formatter.format(new Date(System.currentTimeMillis()));
/**
* 这里的AppName决定log的文件位置和名称
**/
private static final String APP_NAME = "MockGPS";
/**
* 设置log文件全路径,这里是 MyApp/Log/myapp.log
**/
private static final String LOG_FILE_PATH = Environment.getExternalStorageDirectory() + File.separator + APP_NAME
+ File.separator + "Log" + File.separator + APP_NAME.toLowerCase(Locale.CHINA) + timeStr + ".log";
/**
* ### log文件的格式
* <p>
* ### 输出格式解释:
* ### [%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n
* <p>
* ### %d{yyyy-MM-dd HH:mm:ss}: 时间,大括号内是时间格式
* ### %c: 全类名
* ### %M: 调用的方法名称
* ### %F:%L 类名:行号(在控制台可以追踪代码)
* ### %n: 换行
* ### %p: 日志级别,这里%-5p是指定的5个字符的日志名称,为的是格式整齐
* ### %m: 日志信息
* <p>
* ### 输出的信息大概如下:
* ### [时间{时间格式}][信息所在的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);
}
}
......@@ -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<Map<String, Object>> 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<String>() {
......@@ -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<String>() {
@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;
......
......@@ -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<String>();
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);
......
......@@ -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");
}
......
......@@ -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());
......
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/floatButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
......
......@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/white">
<ImageView
......@@ -16,14 +17,14 @@
<Button
android:id="@+id/startButton"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_height="35dp"
android:background="@drawable/btn_bottom_confirm_bg"
android:gravity="center"
android:text="@string/startUse"
android:textSize="17sp"
android:textAlignment="center"
android:layout_gravity="bottom|center"
android:layout_margin="96dp" />
android:layout_margin="106dp" />
<TextView
android:layout_width="wrap_content"
......
......@@ -20,14 +20,15 @@
android:id="@+id/nav_manage"
android:icon="@drawable/ic_menu_manage"
android:title="设置" />
<item
android:id="@+id/nav_bug_report"
android:icon="@drawable/ic_bug_report_18pt_3x"
android:title="问题反馈" />
</group>
<item android:title="Communicate">
<menu>
<!--<item-->
<!--android:id="@+id/nav_share"-->
<!--android:icon="@drawable/ic_menu_share"-->
<!--android:title="分享" />-->
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册