Commit c9a614ba authored by liuzhaoce's avatar liuzhaoce

report device msg

parent eaf572a4
......@@ -54,6 +54,7 @@ dependencies {
api 'com.google.guava:guava:23.6-android'
api 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'commons-io:commons-io:2.6'
compile 'com.alibaba:fastjson:1.2.10'
//短信收发
api 'ir.mtajik.android:advancedsmsmanager:1.1.0'
api 'com.google.dagger:dagger:2.7'
......@@ -61,6 +62,9 @@ dependencies {
implementation project(':LittleProxy')
api project(':g4proxy-lib')
compile files('libs/BaiduLBS_Android.jar')
api 'com.github.tony19:logback-android:1.3.0-2'
// compileOnly 'org.projectlombok:lombok:1.18.2'
......
......@@ -28,8 +28,7 @@
<uses-permission android:name="android.permission.SEND_SMS" />
<!-- 辅助功能权限 -->
<!-- <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" /> -->
<!-- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> -->
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
......@@ -124,10 +123,16 @@
android:resource="@xml/file_paths" />
</provider>
<service
android:name="com.virjar.g4proxy.AppUpdateService"
android:enabled="true"
android:exported="true" />
<!--百度定位-->
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="Ls6ew4yMAiZkfp1dUtob0pdi2bWoLoNo" />
<!--<service-->
<!--android:name="com.virjar.g4proxy.AppUpdateService"-->
<!--android:enabled="true"-->
<!--android:exported="true" />-->
</application>
</manifest>
\ No newline at end of file
package com.virjar.g4proxy;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.tencent.mm.R;
import com.virjar.g4proxy.bean.Const;
import com.virjar.g4proxy.service.SchedulerTaskService;
import com.virjar.g4proxy.utils.AccessAuthority;
import com.virjar.g4proxy.utils.BDLocationUtils;
import com.virjar.g4proxy.utils.DeviceInfoHolder;
import com.virjar.g4proxy.utils.DeviceMessageUtil;
import com.virjar.g4proxy.utils.HttpClientUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
import top.wuhaojie.installerlibrary.AutoInstaller;
public class MainActivity extends AppCompatActivity {
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -26,18 +41,20 @@ public class MainActivity extends AppCompatActivity {
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.text);
textView = findViewById(R.id.text);
Button button = findViewById(R.id.btn_report);
button.setOnClickListener(this);
String clientKey = Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
textView.setText("device: " + clientKey + "\n\n");
//待上传的设备信息:devicesMsg
JSONObject deviceMsg = DeviceMessageUtil.getDeviceMessage(this);
textView.append(deviceMsg.toString());
BDLocationUtils bdLocationUtils = new BDLocationUtils(this);
//开启定位
bdLocationUtils.doLocation();
//开始定位
bdLocationUtils.mLocationClient.start();
startService(new Intent(this, SchedulerTaskService.class));
startService(new Intent(this, HttpProxyService.class));
......@@ -58,4 +75,32 @@ public class MainActivity extends AppCompatActivity {
//不给权限的话,循环申请
DeviceInfoHolder.initDeviceInfo(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_report){
//待上传的设备信息:devicesMsg
JSONObject deviceMsg = DeviceMessageUtil.getDeviceMessage(this);
textView.append(deviceMsg.toString());
Request request = HttpClientUtils.postRequest("http://taskcenter.beta.qunar.com/phone/report", deviceMsg);
HttpClientUtils.getClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@javax.annotation.Nullable Call call, @javax.annotation.Nullable IOException e) {
Log.e(Constant.TAG, "report device msg failed", e);
}
@Override
public void onResponse(@javax.annotation.Nullable Call call, @javax.annotation.Nullable Response response) {
try {
Log.e("report response", response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
}
package com.virjar.g4proxy.bean;
/**
* Created by liuzhaoce on 2019/4/24.
*/
public class Const {
//经度
public static double LONGITUDE = 0;
//纬度
public static double LATITUDE = 0;
}
package com.virjar.g4proxy.utils;
import android.content.Context;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
/**
* Created by liuzhaoce on 2019/4/24.
*/
public class BDLocationUtils {
public Context context;
public LocationClient mLocationClient = null; //LocationClient类是定位SDK的核心类
public BDLocationListener myListener = new MyLocationListener();
public BDLocationUtils(Context context){
this.context = context;
}
public void doLocation(){
//声明LocationClient类
mLocationClient = new LocationClient(context.getApplicationContext());
//注册监听函数
mLocationClient.registerLocationListener( myListener );
//初始化定位
initLocation();
}
private void initLocation(){
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");
//可选,默认gcj02,设置返回的定位结果坐标系
int span = 1000 * 60 * 60;
option.setScanSpan(span);
//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);
//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);
//可选,默认false,设置是否使用gps
// option.setLocationNotify(true);
//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);
//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);
//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);
//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);
//可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);
//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要
mLocationClient.setLocOption(option);
}
}
\ No newline at end of file
......@@ -20,8 +20,11 @@ import android.support.v4.content.ContextCompat;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.google.common.collect.Lists;
import com.virjar.g4proxy.bean.App;
import com.virjar.g4proxy.bean.Const;
import org.json.JSONException;
import org.json.JSONObject;
......@@ -41,6 +44,7 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static android.content.Context.ACTIVITY_SERVICE;
......@@ -79,11 +83,13 @@ public class DeviceMessageUtil {
public static JSONObject getDeviceMessage(Context context) {
JSONObject devicesMsg = new JSONObject();
Map<String, String> latAndLon = DeviceMessageUtil.getLatAndLon(context);
try {
devicesMsg.put("IMEI", DeviceInfoHolder.getCachedImei(context));
devicesMsg.put("deviceId", DeviceInfoHolder.getCachedImei(context));
devicesMsg.put("brand", android.os.Build.BRAND);
devicesMsg.put("os", Build.VERSION.RELEASE);
devicesMsg.put("mac", getNewMac());
devicesMsg.put("ip", getIPAddress(context));
......@@ -93,7 +99,8 @@ public class DeviceMessageUtil {
devicesMsg.put("slaveInfo", getSlaveInfo(context));
devicesMsg.put("latitude", latAndLon.get(latitude));
devicesMsg.put("longitude", latAndLon.get(longitude));
devicesMsg.put("appList", getAPPList(context));
devicesMsg.put("osType", 2);
// devicesMsg.put("appList", getAPPList(context));
} catch (JSONException e) {
e.printStackTrace();
}
......@@ -112,7 +119,8 @@ public class DeviceMessageUtil {
return latAndLon;
}
String bestProvider = locationManager.getBestProvider(getCriteria(), true);
Log.e(DeviceMsg, "bestProvider :" + bestProvider);
Log.e(DeviceMsg, "bestProvider: " + bestProvider);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return latAndLon;
}
......@@ -136,11 +144,17 @@ public class DeviceMessageUtil {
}
}
}
if(location == null){
latAndLon.put(latitude, "" + Const.LATITUDE);
latAndLon.put(longitude, "" + Const.LONGITUDE);
}
if (location != null) {
Log.e(DeviceMsg, "Latitude: " + String.valueOf(location.getLatitude()));
Log.e(DeviceMsg, "Longitude: " + String.valueOf(location.getLongitude()));
latAndLon.put(latitude, String.valueOf(location.getLatitude()));
latAndLon.put(longitude, String.valueOf(location.getLongitude()));
}else{
Log.e(DeviceMsg, "location is null");
}
return latAndLon;
}
......
......@@ -3,6 +3,8 @@ package com.virjar.g4proxy.utils;
import android.support.annotation.NonNull;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import java.io.IOException;
......@@ -18,8 +20,10 @@ import java.util.concurrent.TimeUnit;
import okhttp3.ConnectionPool;
import okhttp3.Dispatcher;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
/**
* Created by liuzhaoce on 2019/4/12.
......@@ -90,4 +94,18 @@ public class HttpClientUtils {
.url(url)
.build();
}
public static Request postRequest(String url, org.json.JSONObject data){
Log.e("report msg", String.valueOf(data));
String dataJson = JSONObject.toJSONString(data);
Log.e("report msg", dataJson);
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, String.valueOf(data));
return new Request.Builder()
.url(url)
.post(body)
.build();
}
}
package com.virjar.g4proxy.utils;
import android.util.Log;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.Poi;
import com.virjar.g4proxy.bean.Const;
import java.util.List;
/**
* Created by liuzhaoce on 2019/4/24.
*/
public class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
//获取定位结果
StringBuffer sb = new StringBuffer(256);
sb.append("time : ");
sb.append(location.getTime()); //获取定位时间
sb.append("\nerror code : ");
sb.append(location.getLocType()); //获取类型类型
sb.append("\nlatitude : ");
sb.append(location.getLatitude()+""); //获取纬度信息
sb.append("\nlontitude : ");
sb.append(location.getLongitude()+""); //获取经度信息
sb.append("\nradius : ");
sb.append(location.getRadius()); //获取定位精准度
if (location.getLocType() == BDLocation.TypeGpsLocation){
// GPS定位结果
sb.append("\nspeed : ");
sb.append(location.getSpeed()); // 单位:公里每小时
sb.append("\nsatellite : ");
sb.append(location.getSatelliteNumber()); //获取卫星数
sb.append("\nheight : ");
sb.append(location.getAltitude()); //获取海拔高度信息,单位米
sb.append("\ndirection : ");
sb.append(location.getDirection()); //获取方向信息,单位度
sb.append("\naddr : ");
sb.append(location.getAddrStr()); //获取地址信息
sb.append("\ndescribe : ");
sb.append("gps定位成功");
} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
// 网络定位结果
sb.append("\naddr : ");
sb.append(location.getAddrStr()); //获取地址信息
sb.append("\noperationers : ");
sb.append(location.getOperators()); //获取运营商信息
sb.append("\ndescribe : ");
sb.append("网络定位成功");
} else if (location.getLocType() == BDLocation.TypeOffLineLocation) {
// 离线定位结果
sb.append("\ndescribe : ");
sb.append("离线定位成功,离线定位结果也是有效的");
} else if (location.getLocType() == BDLocation.TypeServerError) {
sb.append("\ndescribe : ");
sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");
} else if (location.getLocType() == BDLocation.TypeNetWorkException) {
sb.append("\ndescribe : ");
sb.append("网络不同导致定位失败,请检查网络是否通畅");
} else if (location.getLocType() == BDLocation.TypeCriteriaException) {
sb.append("\ndescribe : ");
sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
}
sb.append("\nlocationdescribe : ");
sb.append(location.getLocationDescribe()); //位置语义化信息
List<Poi> list = location.getPoiList(); // POI数据
if (list != null) {
sb.append("\npoilist size = : ");
sb.append(list.size());
for (Poi p : list) {
sb.append("\npoi= : ");
sb.append(p.getId() + " " + p.getName() + " " + p.getRank());
}
}
Log.i("BaiduLocationApiDem", sb.toString());
//定位成功,可以将定位的数据保存下来,Const就是保存数据的类
if(Const.LONGITUDE == 0 || Const.LONGITUDE == 4.9E-324) {
Const.LONGITUDE = location.getLongitude();
Const.LATITUDE = location.getLatitude();
Log.e("baiduMap", "" + location.getLongitude());
Log.e("baiduMap", "" + location.getLatitude());
}
}
}
\ No newline at end of file
......@@ -16,5 +16,11 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="report"/>
</android.support.constraint.ConstraintLayout>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment