Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kaoshuangli9552
mockgps
提交
1b0c889e
M
mockgps
项目概览
kaoshuangli9552
/
mockgps
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mockgps
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1b0c889e
编写于
5月 18, 2019
作者:
N
NeroZhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复部分bug
上级
a199b39e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
162 addition
and
84 deletion
+162
-84
.idea/caches/build_file_checksums.ser
.idea/caches/build_file_checksums.ser
+0
-0
README.md
README.md
+5
-1
app/release/MockGPS_v1.9.5.190508_alpha.apk
app/release/MockGPS_v1.9.5.190508_alpha.apk
+0
-0
app/src/main/java/com/example/mockgps/MainActivity.java
app/src/main/java/com/example/mockgps/MainActivity.java
+11
-3
app/src/main/java/com/example/mockgps/StartActivity.java
app/src/main/java/com/example/mockgps/StartActivity.java
+5
-2
app/src/main/java/com/example/service/MockGpsService.java
app/src/main/java/com/example/service/MockGpsService.java
+141
-78
未找到文件。
.idea/caches/build_file_checksums.ser
浏览文件 @
1b0c889e
无法预览此类型文件
README.md
浏览文件 @
1b0c889e
...
...
@@ -26,7 +26,11 @@ Version 1.9.5测试版
3.
删除了获取IMEI的权限
4.
增加运行日志记录,目录为 你的手机/MockGPS/Log/xxx.log,这个是为了方便bug反馈和调试。有好几个人反应说定位来回跳,但我死活重现不了。所以加上这个运行日志记录,看看能不能找到问题在哪。但是我还没服务器,这个log文件怎么传给我还没想好,先改这些吧有空再说
4.
修改EMUI9.1的存储权限获取bug(然后我想到如果不给存储权限的话,这个app就直接崩了...)
5.
增强了一下稳定性???我也不是很确定,不太好测试
6.
增加运行日志记录,目录为 你的手机/MockGPS/Log/xxx.log,这个是为了方便bug反馈和调试。有好几个人反应说定位来回跳,但我死活重现不了。所以加上这个运行日志记录,看看能不能找到问题在哪。但是我还没服务器,这个log文件怎么传给我还没想好,先改这些吧有空再说
Version 1.9.4
...
...
app/release/MockGPS_v1.9.5.190508_alpha.apk
已删除
100644 → 0
浏览文件 @
a199b39e
文件已删除
app/src/main/java/com/example/mockgps/MainActivity.java
浏览文件 @
1b0c889e
...
...
@@ -211,7 +211,12 @@ public class MainActivity extends AppCompatActivity
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
LogUtil
.
configLog
();
try
{
LogUtil
.
configLog
();
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
//Logger log = Logger.getLogger(MainActivity.class);
Log
.
d
(
"PROGRESS"
,
"onCreate"
);
log
.
debug
(
"PROGRESS: onCreate"
);
...
...
@@ -1429,9 +1434,12 @@ public class MainActivity extends AppCompatActivity
* 读写权限和电话状态权限非必要权限(建议授予)只会申请一次,用户同意或者禁止,只会弹一次
*/
// 读写权限
if
(
addPermission
(
permissions
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
)
{
permission
Info
+=
"Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n"
;
if
(
checkSelfPermission
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
permission
s
.
add
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
;
}
// if (addPermission(permissions, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n";
// }
// 读取电话状态权限
// if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) {
// permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n";
...
...
app/src/main/java/com/example/mockgps/StartActivity.java
浏览文件 @
1b0c889e
...
...
@@ -85,9 +85,12 @@ public class StartActivity extends AppCompatActivity {
* 读写权限和电话状态权限非必要权限(建议授予)只会申请一次,用户同意或者禁止,只会弹一次
*/
// 读写权限
if
(
addPermission
(
permissions
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
)
{
permission
Info
+=
"Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n"
;
if
(
checkSelfPermission
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
permission
s
.
add
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
;
}
// if (addPermission(permissions, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n";
// }
// 读取电话状态权限
// if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) {
// permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n";
...
...
app/src/main/java/com/example/service/MockGpsService.java
浏览文件 @
1b0c889e
...
...
@@ -32,6 +32,7 @@ import com.example.mockgps.R;
import
org.apache.log4j.Logger
;
import
java.util.List
;
import
java.util.UUID
;
public
class
MockGpsService
extends
Service
{
...
...
@@ -43,18 +44,18 @@ public class MockGpsService extends Service {
private
HandlerThread
handlerThread
;
private
Handler
handler
;
private
boolean
isStop
=
true
;
private
boolean
isStop
=
true
;
//经纬度字符串
private
String
latLngInfo
=
"104.06121778639009&30.544111926165282"
;
private
String
latLngInfo
=
"104.06121778639009&30.544111926165282"
;
//悬浮窗
private
FloatWindow
floatWindow
;
private
boolean
isFloatWindowStart
=
false
;
private
boolean
isFloatWindowStart
=
false
;
public
static
final
int
RunCode
=
0x01
;
public
static
final
int
StopCode
=
0x02
;
public
static
final
int
RunCode
=
0x01
;
public
static
final
int
StopCode
=
0x02
;
//log debug
private
static
Logger
log
=
Logger
.
getLogger
(
MockGpsService
.
class
);
...
...
@@ -70,31 +71,31 @@ public class MockGpsService extends Service {
public
void
onCreate
()
{
LogUtil
.
configLog
();
Log
.
d
(
TAG
,
"onCreate"
);
log
.
debug
(
TAG
+
": onCreate"
);
log
.
debug
(
TAG
+
": onCreate"
);
super
.
onCreate
();
locationManager
=
(
LocationManager
)
this
.
getSystemService
(
Context
.
LOCATION_SERVICE
);
locationManager
=(
LocationManager
)
this
.
getSystemService
(
Context
.
LOCATION_SERVICE
);
//for test
getProviders
();
//remove default network location provider
rmNetworkProvider
();
//add a new network location provider
setNewNetworkProvider
();
rmNetworkTestProvider
();
//remove gps provider
rmGPSTestProvider
();
// rmGPSProvider();
// setGPSProvider();
//setGPSProvider();
//add a new test network location provider
setNetworkTestProvider
();
// add a GPS test Provider
setGPSTestProvider
();
//thread
handlerThread
=
new
HandlerThread
(
getUUID
(),
-
2
);
handlerThread
=
new
HandlerThread
(
getUUID
(),
-
2
);
handlerThread
.
start
();
handler
=
new
Handler
(
handlerThread
.
getLooper
())
{
public
void
handleMessage
(
Message
msg
){
handler
=
new
Handler
(
handlerThread
.
getLooper
())
{
public
void
handleMessage
(
Message
msg
)
{
try
{
Thread
.
sleep
(
333
);
if
(!
isStop
){
Thread
.
sleep
(
128
);
if
(!
isStop
)
{
//remove default network location provider
//rmNetworkProvider();
...
...
@@ -102,10 +103,11 @@ public class MockGpsService extends Service {
//add a new network location provider
//setNewNetworkProvider();
setNetworkLocation
();
setTestProviderLocation
();
setGPSLocation
();
sendEmptyMessage
(
0
);
//broadcast to MainActivity
Intent
intent
=
new
Intent
();
Intent
intent
=
new
Intent
();
intent
.
putExtra
(
"statusCode"
,
RunCode
);
intent
.
setAction
(
"com.example.service.MockGpsService"
);
sendBroadcast
(
intent
);
...
...
@@ -113,7 +115,7 @@ public class MockGpsService extends Service {
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"handleMessage error"
);
log
.
debug
(
TAG
+
": handleMessage error"
);
log
.
debug
(
TAG
+
": handleMessage error"
);
Thread
.
currentThread
().
interrupt
();
}
}
...
...
@@ -125,19 +127,19 @@ public class MockGpsService extends Service {
public
void
onStart
(
Intent
intent
,
int
startId
)
{
super
.
onStart
(
intent
,
startId
);
Log
.
d
(
TAG
,
"onStart"
);
log
.
debug
(
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"
);
log
.
debug
(
TAG
+
": onStartCommand"
);
// DisplayToast("Mock Location Service Start");
//
String
channelId
=
"channel_01"
;
String
name
=
"channel_name"
;
String
name
=
"channel_name"
;
NotificationManager
notificationManager
=
(
NotificationManager
)
getSystemService
(
NOTIFICATION_SERVICE
);
Notification
notification
=
null
;
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
...
...
@@ -160,26 +162,24 @@ public class MockGpsService extends Service {
.
setChannelId
(
channelId
);
//无效
notification
=
notificationBuilder
.
build
();
}
startForeground
(
1
,
notification
);
startForeground
(
1
,
notification
);
//
//get location info from mainActivity
latLngInfo
=
intent
.
getStringExtra
(
"key"
);
Log
.
d
(
TAG
,
"
dataFromMain is "
+
latLngInfo
);
log
.
debug
(
TAG
+
": dataFromMain is "
+
latLngInfo
);
latLngInfo
=
intent
.
getStringExtra
(
"key"
);
Log
.
d
(
TAG
,
"
DataFromMain is "
+
latLngInfo
);
log
.
debug
(
TAG
+
": DataFromMain is "
+
latLngInfo
);
//start to refresh location
isStop
=
false
;
isStop
=
false
;
//这里开启悬浮窗
if
(!
isFloatWindowStart
){
floatWindow
=
new
FloatWindow
(
this
);
if
(!
isFloatWindowStart
)
{
floatWindow
=
new
FloatWindow
(
this
);
floatWindow
.
showFloatWindow
();
isFloatWindowStart
=
true
;
isFloatWindowStart
=
true
;
}
// return START_STICKY;
return
super
.
onStartCommand
(
intent
,
flags
,
startId
);
}
...
...
@@ -187,25 +187,28 @@ public class MockGpsService extends Service {
@Override
public
void
onDestroy
()
{
Log
.
d
(
TAG
,
"onDestroy"
);
log
.
debug
(
TAG
+
": onDestroy"
);
log
.
debug
(
TAG
+
": onDestroy"
);
// Toast.makeText(this, "Service destroyed", Toast.LENGTH_SHORT).show();
// DisplayToast("Mock Loction Service finish");
isStop
=
true
;
isStop
=
true
;
//移除悬浮窗
floatWindow
.
hideFloatWindow
();
isFloatWindowStart
=
false
;
isFloatWindowStart
=
false
;
handler
.
removeMessages
(
0
);
handlerThread
.
quit
();
rmNetworkProvider
();
//remove test provider
rmNetworkTestProvider
();
rmGPSTestProvider
();
//rmGPSProvider();
stopForeground
(
true
);
//broadcast to MainActivity
Intent
intent
=
new
Intent
();
Intent
intent
=
new
Intent
();
intent
.
putExtra
(
"statusCode"
,
StopCode
);
intent
.
setAction
(
"com.example.service.MockGpsService"
);
sendBroadcast
(
intent
);
...
...
@@ -213,6 +216,14 @@ public class MockGpsService extends Service {
super
.
onDestroy
();
}
//provider test
public
void
getProviders
()
{
List
<
String
>
providerList
=
locationManager
.
getProviders
(
true
);
for
(
String
str
:
providerList
)
{
Log
.
d
(
"PROV"
,
str
);
log
.
debug
(
"active provider: "
+
str
);
}
}
//generate a location
public
Location
generateLocation
(
LatLng
latLng
)
{
...
...
@@ -240,12 +251,12 @@ public class MockGpsService extends Service {
return
loc
;
}
//
set network location
private
void
set
Network
Location
()
{
//
给test provider添加网络定位
private
void
set
TestProvider
Location
()
{
//default location 30.5437233 104.0610342 成都长虹科技大厦
Log
.
d
(
TAG
,
"setNetworkLocation: "
+
latLngInfo
);
log
.
debug
(
TAG
+
": setNetworkLocation: "
+
latLngInfo
);
String
latLngStr
[]
=
latLngInfo
.
split
(
"&"
);
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;
...
...
@@ -256,71 +267,107 @@ public class MockGpsService extends Service {
// locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, generateLocation(latLng));
}
catch
(
Exception
e
)
{
Log
.
d
(
TAG
,
"setNetworkLocation error"
);
log
.
debug
(
TAG
+
": setNetworkLocation error"
);
log
.
debug
(
TAG
+
": setNetworkLocation error"
);
e
.
printStackTrace
();
}
}
//set gps location
private
void
setGPSLocation
(){
//default location 30.5437233 104.0610342 成都长虹科技大厦
Log
.
d
(
TAG
,
"setGPSLocation: "
+
latLngInfo
);
log
.
debug
(
TAG
+
": setGPSLocation: "
+
latLngInfo
);
String
latLngStr
[]
=
latLngInfo
.
split
(
"&"
);
LatLng
latLng
=
new
LatLng
(
Double
.
valueOf
(
latLngStr
[
1
]),
Double
.
valueOf
(
latLngStr
[
0
]));
String
providerStr
=
LocationManager
.
GPS_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
,
"setGPSLocation error"
);
log
.
debug
(
TAG
+
": setGPSLocation error"
);
e
.
printStackTrace
();
}
}
//remove network provider
private
void
rmNetwork
Provider
()
{
private
void
rmNetwork
TestProvider
()
{
try
{
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
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
);
if
(
locationManager
.
isProviderEnabled
(
providerStr
))
{
Log
.
d
(
TAG
,
"now remove NetworkProvider:
try_"
+
i
);
log
.
debug
(
TAG
+
": now remove NetworkProvider: try_"
+
i
);
// locationManager.setTestProviderEnabled(providerStr,true);
locationManager
.
removeTestProvider
(
providerStr
);
}
else
{
Log
.
d
(
TAG
,
"NetworkProvider is not enabled:
"
+
i
);
log
.
debug
(
TAG
+
": NetworkProvider is not enabled: "
+
i
);
}
else
{
Log
.
d
(
TAG
,
"NetworkProvider is not enabled:
try_"
+
i
);
log
.
debug
(
TAG
+
": NetworkProvider is not enabled: try_"
+
i
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"rmNetworkProvider error"
);
log
.
debug
(
TAG
+
": rmNetworkProvider error"
);
log
.
debug
(
TAG
+
": rmNetworkProvider error"
);
}
}
//set new network provider
private
void
setNe
wNetworkProvider
()
{
private
void
setNe
tworkTestProvider
()
{
String
providerStr
=
LocationManager
.
NETWORK_PROVIDER
;
// String providerStr = LocationManager.GPS_PROVIDER;
try
{
locationManager
.
addTestProvider
(
providerStr
,
false
,
false
,
false
,
false
,
false
,
false
,
false
,
1
,
Criteria
.
ACCURACY_FINE
);
Log
.
d
(
TAG
,
"addTestProvider[network
] success"
);
log
.
debug
(
TAG
+
": addTestProvider[network
] success"
);
Log
.
d
(
TAG
,
"addTestProvider[NETWORK_PROVIDER
] success"
);
log
.
debug
(
TAG
+
": addTestProvider[NETWORK_PROVIDER
] success"
);
// locationManager.setTestProviderStatus("network", LocationProvider.AVAILABLE, null,
// System.currentTimeMillis());
}
catch
(
SecurityException
e
){
Log
.
d
(
TAG
,
"setNewNetworkProvider error"
);
log
.
debug
(
TAG
+
": setNewNetworkProvider error"
);
}
catch
(
SecurityException
e
)
{
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"addTestProvider[NETWORK_PROVIDER] error"
);
log
.
debug
(
TAG
+
": addTestProvider[NETWORK_PROVIDER] error"
);
}
if
(!
locationManager
.
isProviderEnabled
(
providerStr
)){
Log
.
d
(
TAG
,
"now setTestProviderEnabled[network]"
);
log
.
debug
(
TAG
+
": now setTestProviderEnabled[network]"
);
locationManager
.
setTestProviderEnabled
(
providerStr
,
true
);
if
(!
locationManager
.
isProviderEnabled
(
providerStr
))
{
try
{
locationManager
.
setTestProviderEnabled
(
providerStr
,
true
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"setTestProviderEnabled[NETWORK_PROVIDER] error"
);
log
.
debug
(
TAG
+
": setTestProviderEnabled[NETWORK_PROVIDER] error"
);
}
}
}
// for test: set GPS provider
private
void
rmGPS
Provider
()
{
private
void
rmGPS
TestProvider
()
{
try
{
String
providerStr
=
LocationManager
.
GPS_PROVIDER
;
if
(
locationManager
.
isProviderEnabled
(
providerStr
)){
Log
.
d
(
TAG
,
"now remove GPSProvider"
);
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
String
providerStr
=
LocationManager
.
GPS_PROVIDER
;
if
(
locationManager
.
isProviderEnabled
(
providerStr
))
{
Log
.
d
(
TAG
,
"now remove GPSProvider: try_"
+
i
);
log
.
debug
(
TAG
+
": now remove GPSProvider: try_"
+
i
);
// locationManager.setTestProviderEnabled(providerStr,true);
locationManager
.
removeTestProvider
(
providerStr
);
locationManager
.
removeTestProvider
(
providerStr
);
}
else
{
Log
.
d
(
TAG
,
"GPSProvider is not enabled: try_"
+
i
);
log
.
debug
(
TAG
+
": GPSProvider is not enabled: try_"
+
i
);
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"rmGPSProvider error"
);
log
.
debug
(
TAG
+
": rmGPSProvider error"
);
}
}
private
void
setGPSProvider
(){
private
void
setGPSTestProvider
()
{
LocationProvider
provider
=
locationManager
.
getProvider
(
LocationManager
.
GPS_PROVIDER
);
// if (provider != null) {
// locationManager.addTestProvider(
...
...
@@ -335,12 +382,28 @@ public class MockGpsService extends Service {
// , provider.getPowerRequirement()
// , provider.getAccuracy());
// } else {
try
{
locationManager
.
addTestProvider
(
LocationManager
.
GPS_PROVIDER
,
false
,
true
,
true
,
false
,
true
,
true
,
true
,
0
,
5
);
Log
.
d
(
TAG
,
"addTestProvider[GPS_PROVIDER] success"
);
log
.
debug
(
TAG
+
": addTestProvider[GPS_PROVIDER] success"
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"addTestProvider[GPS_PROVIDER] error"
);
log
.
debug
(
TAG
+
": addTestProvider[GPS_PROVIDER] error"
);
}
// }
// if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locationManager
.
setTestProviderEnabled
(
LocationManager
.
GPS_PROVIDER
,
true
);
// }
if
(!
locationManager
.
isProviderEnabled
(
LocationManager
.
GPS_PROVIDER
))
{
try
{
locationManager
.
setTestProviderEnabled
(
LocationManager
.
GPS_PROVIDER
,
true
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
Log
.
d
(
TAG
,
"setTestProviderEnabled[GPS_PROVIDER] error"
);
log
.
debug
(
TAG
+
": setTestProviderEnabled[GPS_PROVIDER] error"
);
}
}
//新
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录