提交 ae879d82 编写于 作者: J jackjintai

modify:

1、优化日志输出和GPS H5地图定位功能
上级 892cb6dd
......@@ -47,7 +47,7 @@
window['map'] = map;
//移动地图中心位置
map.panBy(120, 180);
map.panBy(120, 150);
//创建marker
var marker = new qq.maps.Marker({
position: center,
......@@ -76,7 +76,7 @@
var map = window['map'];
map.setCenter(center);
//移动地图中心位置
map.panBy(120, 180);
map.panBy(120, 150);
}
if(window['marker']){
......
......@@ -12,9 +12,11 @@ import android.text.TextWatcher;
import android.view.View;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.blankj.utilcode.util.ToastUtils;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.config.GpsMockConfig;
import com.didichuxing.doraemonkit.model.LatLng;
......@@ -32,6 +34,7 @@ import java.util.List;
/**
* Created by wanglikun on 2018/9/20.
* gps mock
*/
public class GpsMockFragment extends BaseFragment implements SettingItemAdapter.OnSettingItemSwitchListener, MyWebViewClient.InvokeListener {
......@@ -40,10 +43,13 @@ public class GpsMockFragment extends BaseFragment implements SettingItemAdapter.
private HomeTitleBar mTitleBar;
private RecyclerView mSettingList;
private SettingItemAdapter mSettingItemAdapter;
private EditText mLongitude;
private EditText mLatitude;
private TextView mMockLocationBtn;
// private EditText mLongitude;
// private EditText mLatitude;
// private TextView mMockLocationBtn;
private ImageView mIvSearch;
private EditText mEdLongLat;
private MyWebView mWebView;
private boolean isInit = true;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
......@@ -72,77 +78,64 @@ public class GpsMockFragment extends BaseFragment implements SettingItemAdapter.
}
private void initMockLocationArea() {
mLongitude = findViewById(R.id.longitude);
mLatitude = findViewById(R.id.latitude);
mLatitude.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (checkInput()) {
mMockLocationBtn.setEnabled(true);
} else {
mMockLocationBtn.setEnabled(false);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
mLongitude.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (checkInput()) {
mMockLocationBtn.setEnabled(true);
} else {
mMockLocationBtn.setEnabled(false);
}
}
mEdLongLat = findViewById(R.id.ed_long_lat);
mIvSearch = findViewById(R.id.iv_search);
@Override
public void afterTextChanged(Editable s) {
}
});
mMockLocationBtn = findViewById(R.id.mock_location);
mMockLocationBtn.setOnClickListener(new View.OnClickListener() {
mIvSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!checkInput()) {
return;
}
double latitude = Double.valueOf(mLatitude.getText().toString());
double longitude = Double.valueOf(mLongitude.getText().toString());
String strLongLat = mEdLongLat.getText().toString();
String[] longAndLat = strLongLat.split(" ");
double longitude, latitude;
try {
longitude = Double.valueOf(longAndLat[0]);
latitude = Double.valueOf(longAndLat[1]);
} catch (Exception e) {
ToastUtils.showShort("经纬度必须为数字");
return;
}
GpsMockManager.getInstance().mockLocation(latitude, longitude);
GpsMockConfig.saveMockLocation(getContext(), new LatLng(latitude, longitude));
//刷新地图
String url = String.format("javascript:updateLocation(%s,%s)", latitude, longitude);
mWebView.loadUrl(url);
//WebUtil.webViewLoadLocalHtml(mWebView, "html/map.html");
Toast.makeText(getContext(), getString(R.string.dk_gps_location_change_toast, mLatitude.getText(), mLongitude.getText()), Toast.LENGTH_SHORT).show();
ToastUtils.showShort(getString(R.string.dk_gps_location_change_toast, "" + longitude, "" + latitude));
}
});
}
private boolean checkInput() {
if (TextUtils.isEmpty(mLongitude.getText().toString())) {
String strLongLat = mEdLongLat.getText().toString();
if (TextUtils.isEmpty(strLongLat)) {
ToastUtils.showShort("请输入经纬度");
return false;
}
if (TextUtils.isEmpty(mLatitude.getText().toString())) {
String[] longAndLat = strLongLat.split(" ");
if (longAndLat.length != 2) {
ToastUtils.showShort("请输入符合规范的经纬度格式");
return false;
}
double longitude = Double.valueOf(mLongitude.getText().toString());
double latitude = Double.valueOf(mLatitude.getText().toString());
if (TextUtils.isEmpty(longAndLat[0])) {
return false;
}
if (TextUtils.isEmpty(longAndLat[1])) {
return false;
}
double longitude, latitude;
try {
longitude = Double.valueOf(longAndLat[0]);
latitude = Double.valueOf(longAndLat[1]);
} catch (Exception e) {
ToastUtils.showShort("经纬度必须为数字");
return false;
}
if (longitude > 180 || longitude < -180) {
return false;
}
......@@ -210,7 +203,24 @@ public class GpsMockFragment extends BaseFragment implements SettingItemAdapter.
if (TextUtils.isEmpty(lat) && TextUtils.isEmpty(lnt)) {
return;
}
mLatitude.setText(lat);
mLongitude.setText(lnt);
mEdLongLat.setText(String.format("%s %s", lnt, lat));
if (!isInit) {
double longitude, latitude;
try {
//保存当前的经纬度
longitude = Double.valueOf(lnt);
latitude = Double.valueOf(lat);
} catch (Exception e) {
ToastUtils.showShort("经纬度必须为数字");
return;
}
GpsMockManager.getInstance().mockLocation(latitude, longitude);
GpsMockConfig.saveMockLocation(getContext(), new LatLng(latitude, longitude));
ToastUtils.showShort(getString(R.string.dk_gps_location_change_toast, "" + longitude, "" + latitude));
}
isInit = false;
}
}
\ No newline at end of file
......@@ -46,7 +46,7 @@ import java.util.Arrays;
import java.util.List;
/**
* 数据mock 详情页
* 数据mock 相关设置 详情页
*/
public class NetWorkMockFragment extends BaseFragment {
private String projectId = DokitConstant.PRODUCT_ID;
......
......@@ -12,74 +12,134 @@
app:dkIcon="@drawable/dk_close_icon_big"
app:dkTitle="@string/dk_kit_gps_mock" />
<android.support.v7.widget.RecyclerView
android:id="@+id/setting_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title_bar" />
<com.didichuxing.doraemonkit.ui.widget.webview.MyWebView
android:id="@+id/web_view"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/setting_list" />
android:layout_below="@id/title_bar">
<RelativeLayout
android:id="@+id/mock_location_area"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/setting_list"
android:layout_marginLeft="40dp"
android:layout_marginTop="25dp"
android:layout_marginRight="40dp"
android:background="@color/dk_color_EFFFFFFF"
android:padding="5dp">
<TextView
android:id="@+id/mock_location"
style="@style/DK.ConfirmButton.Positive"
android:layout_width="50dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="15dp"
android:enabled="false"
android:text="@string/dk_gpsmock_tv_location" />
<EditText
android:id="@+id/longitude"
style="@style/DK.Input"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@id/mock_location"
android:hint="@string/dk_gpsmock_hint_longitude"
android:inputType="numberSigned|numberDecimal" />
<View
<com.didichuxing.doraemonkit.ui.widget.webview.MyWebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_below="@id/longitude"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@id/mock_location"
android:background="@color/dk_color_E5E5E5" />
<EditText
android:id="@+id/latitude"
style="@style/DK.Input"
android:layout_below="@id/longitude"
android:layout_marginTop="5dp"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@id/mock_location"
android:hint="@string/dk_gpsmock_hint_latitude"
android:inputType="numberSigned|numberDecimal" />
<View
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_below="@id/latitude"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@id/mock_location"
android:background="@color/dk_color_E5E5E5" />
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dk_dp_5"
android:layout_marginTop="10dp"
android:layout_marginRight="@dimen/dk_dp_5"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/setting_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@color/dk_color_FFFFFF"
android:orientation="vertical"
android:paddingLeft="@dimen/dk_dp_15"
android:paddingTop="10dp"
android:paddingRight="@dimen/dk_dp_15"
android:paddingBottom="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp">
<ImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/dk_search_icon" />
<EditText
android:id="@+id/ed_long_lat"
style="@style/DK.Input"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@id/iv_search"
android:hint="@string/dk_gpsmock_hint_longlat" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"
android:background="@color/dk_color_E5E5E5" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(示例:120.15 30.28)"
android:textColor="#cfcfcf"
android:textSize="14sp" />
</LinearLayout>
<!-- <RelativeLayout-->
<!-- android:id="@+id/mock_location_area"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="10dp"-->
<!-- android:background="@color/dk_color_FFFFFF"-->
<!-- android:padding="5dp">-->
<!-- <TextView-->
<!-- android:id="@+id/mock_location"-->
<!-- style="@style/DK.ConfirmButton.Positive"-->
<!-- android:layout_width="50dp"-->
<!-- android:layout_alignParentRight="true"-->
<!-- android:layout_centerVertical="true"-->
<!-- android:layout_marginRight="15dp"-->
<!-- android:enabled="false"-->
<!-- android:text="@string/dk_gpsmock_tv_location" />-->
<!-- <EditText-->
<!-- android:id="@+id/longitude"-->
<!-- style="@style/DK.Input"-->
<!-- android:layout_marginRight="15dp"-->
<!-- android:layout_toLeftOf="@id/mock_location"-->
<!-- android:hint="@string/dk_gpsmock_hint_longitude"-->
<!-- android:inputType="numberSigned|numberDecimal" />-->
<!-- <View-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="2px"-->
<!-- android:layout_below="@id/longitude"-->
<!-- android:layout_marginRight="15dp"-->
<!-- android:layout_toLeftOf="@id/mock_location"-->
<!-- android:background="@color/dk_color_E5E5E5" />-->
<!-- <EditText-->
<!-- android:id="@+id/latitude"-->
<!-- style="@style/DK.Input"-->
<!-- android:layout_below="@id/longitude"-->
<!-- android:layout_marginTop="5dp"-->
<!-- android:layout_marginRight="15dp"-->
<!-- android:layout_toLeftOf="@id/mock_location"-->
<!-- android:hint="@string/dk_gpsmock_hint_latitude"-->
<!-- android:inputType="numberSigned|numberDecimal" />-->
<!-- <View-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="2px"-->
<!-- android:layout_below="@id/latitude"-->
<!-- android:layout_marginRight="15dp"-->
<!-- android:layout_toLeftOf="@id/mock_location"-->
<!-- android:background="@color/dk_color_E5E5E5" />-->
<!-- </RelativeLayout>-->
</LinearLayout>
</FrameLayout>
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
......@@ -118,8 +118,9 @@
<string name="dk_web_door_clear_history">Clear History</string>
<string name="dk_gpsmock_tv_location">Mock</string>
<string name="dk_gpsmock_hint_latitude">Input latitude</string>
<string name="dk_gpsmock_hint_longitude">Input longitude</string>
<string name="dk_gpsmock_hint_longlat">Please Input latitude and longitude</string>
<!--卡顿检测-->
<string name="dk_kit_block_monitor">ANR Check</string>
......@@ -168,7 +169,7 @@
<string name="dk_frameinfo_ram">RAM</string>
<string name="dk_kit_network_monitor">Network Monitor</string>
<string name="dk_float_permission_toast">DoraemonKit need draw over other app permission</string>
<string name="dk_gps_location_change_toast">Location changed: %1$s, %2$s</string>
<string name="dk_gps_location_change_toast">Location changed: %1$s , %2$s</string>
<string name="dk_view_check_info_size">View Size:width%1$d,height%2$d</string>
<string name="dk_view_check_info_desc">View Background:%1$s</string>
<string name="dk_view_check_info_padding">View Padding:%1$d, %2$d, %3$d, %4$d</string>
......
......@@ -120,8 +120,8 @@
<string name="dk_gpsmock_open">开启模拟定位</string>
<string name="dk_gpsmock_tv_location">模拟</string>
<string name="dk_gpsmock_hint_latitude">输入纬度</string>
<string name="dk_gpsmock_hint_longitude">输入经</string>
<string name="dk_gpsmock_hint_longlat">请输入经纬</string>
<!--卡顿检测-->
<string name="dk_kit_block_monitor">卡顿检测</string>
......@@ -168,7 +168,7 @@
<string name="dk_frameinfo_ram">RAM</string>
<string name="dk_kit_network_monitor">流量监控</string>
<string name="dk_float_permission_toast">哆啦A梦需要打开悬浮窗权限才能正常使用</string>
<string name="dk_gps_location_change_toast">地址变为: %1$s, %2$s</string>
<string name="dk_gps_location_change_toast">地址变为: %1$s , %2$s</string>
<string name="dk_view_check_info_desc">背景颜色:%1$s</string>
<string name="dk_view_check_info_padding">内边距:%1$d, %2$d, %3$d, %4$d</string>
<string name="dk_view_check_info_margin">外边距:%1$d, %2$d, %3$d, %4$d</string>
......
......@@ -117,8 +117,9 @@
<string name="dk_gpsmock_open">開啟模擬定位</string>
<string name="dk_gpsmock_tv_location">模擬地址</string>
<string name="dk_gpsmock_hint_latitude">輸入緯度 (Lat)</string>
<string name="dk_gpsmock_hint_longitude">輸入經度 (Lng)</string>
<string name="dk_gpsmock_hint_longlat">請輸入經緯度</string>
<!--卡頓檢測-->
<string name="dk_kit_block_monitor">ANR 檢測</string>
......@@ -166,7 +167,7 @@
<string name="dk_kit_network_monitor">流量監控</string>
<string name="dk_data_clean_toast">清除系統資料</string>
<string name="dk_float_permission_toast">哆啦A夢需要打開懸浮視窗權限才能正常使用</string>
<string name="dk_gps_location_change_toast">地址變為: %1$s, %2$s</string>
<string name="dk_gps_location_change_toast">地址變為: %1$s , %2$s</string>
<string name="dk_view_check_info_desc">背景顏色:%1$s</string>
<string name="dk_view_check_info_padding">內邊距:%1$d, %2$d, %3$d, %4$d</string>
<string name="dk_view_check_info_margin">外邊距:%1$d, %2$d, %3$d, %4$d</string>
......
......@@ -124,8 +124,7 @@
<string name="dk_gpsmock_open">开启模拟定位</string>
<string name="dk_gpsmock_tv_location">模拟</string>
<string name="dk_gpsmock_hint_latitude">输入纬度</string>
<string name="dk_gpsmock_hint_longitude">输入经度</string>
<string name="dk_gpsmock_hint_longlat">请输入经纬度</string>
<!--卡顿检测-->
<string name="dk_kit_block_monitor">卡顿检测</string>
......@@ -227,7 +226,7 @@
<string name="dk_float_permission_toast">哆啦A梦需要打开悬浮窗权限才能正常使用</string>
<string name="dk_gps_location_change_toast">地址变为: %1$s, %2$s</string>
<string name="dk_gps_location_change_toast">地址变为: %1$s , %2$s</string>
<string name="dk_layout_level">布局层级</string>
......
......@@ -164,7 +164,7 @@
<style name="DK.Input">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">36dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:gravity">center_vertical|left</item>
<item name="android:textColor">@color/dk_color_333333</item>
<item name="android:textColorHint">@color/dk_color_CCCCCC</item>
......
......@@ -59,7 +59,7 @@ DoraemonKit 是一个功能集合面板,能够让每一个 App 快速接入一
1. **【帧率】** App 帧率信息提供波形图查看功能,让帧率监控的趋势更加明显;
2. **【CPU】** App CPU 使用率信息提供波形图查看功能,让 CPU 监控的趋势更加形象;
3. **【内存】** App 内存使用量信息提供波形图查看功能,让内存监控的趋势更加鲜明;
4. **【流量】** 拦截 App 内部流量信息,提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情,对流量信息统一拦截,成为我们 App 中自带的 “Charles”
4. **【流量】** 拦截 App 内部流量信息,提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情,对流量信息统一拦截,成为我们 App 中自带的 "Charles"
5. **【卡顿】** 锁定 App 出现卡顿的时刻,打印出对应的代码调用堆栈;
6. **【大图检测】** 通过流量监测,找出所有的大小超标的图片,避免下载大图造成的流量浪费和渲染大图带来的CPU消耗。
7. **【自定义】** 可以选择你要监控的选项,包括 FPS、CPU、内存、流量。监控完毕之后,把数据保存到本地,按照页面进行维度进行分析;
......@@ -185,7 +185,20 @@ DoraemonKit 基于 Apache-2.0 协议进行分发和使用,更多信息参见 [
iOS上传代码详见DoraemonStatisticsUtil类中的实现
Andoid上传代码详见DoraemonStatisticsUtil类中的实现
**以下为Android端所有涉及到网络请求的部分**
1、统计有多少人集成了dokit
DoraemonStatisticsUtil#uploadUserInfo
2、统计每个内置kit的使用情况
DataPickManager#realPost
3、上传健康体检的相关数据
AppHealthInfoUtil#post
4、数据mock的相关网络请求
NetWorkMockFragment 里涉及到接口mock的相关网络请求
敬请各位用户知晓。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册