提交 1b0c889e 编写于 作者: N NeroZhang

修复部分bug

上级 a199b39e
......@@ -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
......
......@@ -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)) {
permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n";
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissions.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";
......
......@@ -85,9 +85,12 @@ public class StartActivity extends AppCompatActivity {
* 读写权限和电话状态权限非必要权限(建议授予)只会申请一次,用户同意或者禁止,只会弹一次
*/
// 读写权限
if (addPermission(permissions, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n";
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissions.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";
......
......@@ -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 setNetworkLocation() {
//给test provider添加网络定位
private void setTestProviderLocation() {
//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 rmNetworkProvider(){
private void rmNetworkTestProvider() {
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 setNewNetworkProvider(){
private void setNetworkTestProvider() {
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 rmGPSProvider(){
private void rmGPSTestProvider() {
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.
先完成此消息的编辑!
想要评论请 注册