diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 1a0aaec..df338e2 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -23,7 +23,6 @@ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5fad0b2..c3952e7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,12 @@ android:label="实时数据测试"> + + + + \ No newline at end of file diff --git a/app/src/main/java/com/mogo/cloud/MainActivity.java b/app/src/main/java/com/mogo/cloud/MainActivity.java index 532cf07..29a3de1 100644 --- a/app/src/main/java/com/mogo/cloud/MainActivity.java +++ b/app/src/main/java/com/mogo/cloud/MainActivity.java @@ -17,33 +17,26 @@ public class MainActivity extends AppCompatActivity { private Button btnJumpPassPort; private Button btnJumpNetWorkPort; private Button btnJumpRealTime; + private Button btnJumpRoadCondition; private TextView tvSn; private TextView tvToken; + private TextView tvAppKey; + private TextView tvDevicesId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + tvAppKey = findViewById(R.id.tvAppKey); + tvDevicesId = findViewById(R.id.tvDevicesId); tvSn = findViewById(R.id.tvSn); tvToken = findViewById(R.id.tvToken); - initPassportInfo(); - btnJumpPassPort = findViewById(R.id.btnJumpPassPort); btnJumpPassPort.setOnClickListener(v -> { - MoGoAiCloudClient.getInstance().refreshToken(new IMoGoTokenCallback() { - @Override - public void onTokenGot(String token, String sn) { - initPassportInfo(); - } - - @Override - public void onError(int code, String msg) { - - } - }); + MoGoAiCloudClient.getInstance().refreshToken(); }); btnJumpNetWorkPort = findViewById(R.id.btnJumpNetWorkPort); @@ -57,12 +50,33 @@ public class MainActivity extends AppCompatActivity { Intent intent = new Intent(MainActivity.this, RealTimeActivity.class); startActivity(intent); }); + + btnJumpRoadCondition = findViewById(R.id.btnJumpRoadcondition); + btnJumpRoadCondition.setOnClickListener(v -> { + Intent intent = new Intent(MainActivity.this, RoadConditionActivity.class); + startActivity(intent); + }); + + MoGoAiCloudClient.getInstance().addTokenCallbacks(new IMoGoTokenCallback() { + @Override + public void onTokenGot(String token, String sn) { + initPassportInfo(); + } + + @Override + public void onError(int code, String msg) { + initPassportInfo(); + } + }); } /** * 初始化令牌信息 */ private void initPassportInfo() { + tvAppKey.setText("AppKey:" + MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getThirdPartyDeviceId()); + tvDevicesId.setText("DevicesId:" + MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getThirdPartyDeviceId()); + String sn = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn(); String token = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getToken(); diff --git a/app/src/main/java/com/mogo/cloud/MoGoApplication.java b/app/src/main/java/com/mogo/cloud/MoGoApplication.java index 36070af..c8d7b35 100644 --- a/app/src/main/java/com/mogo/cloud/MoGoApplication.java +++ b/app/src/main/java/com/mogo/cloud/MoGoApplication.java @@ -5,17 +5,22 @@ import androidx.multidex.MultiDexApplication; import com.mogo.cloud.httpdns.MogoHttpDnsConfig; import com.mogo.cloud.httpdns.bean.HttpDnsSimpleLocation; import com.mogo.cloud.httpdns.listener.IHttpDnsCurrentLocation; +import com.mogo.cloud.passport.IMoGoTokenCallback; import com.mogo.cloud.passport.MoGoAiCloudClient; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; import java.util.Random; /** * */ public class MoGoApplication extends MultiDexApplication { + + @Override public void onCreate() { super.onCreate(); @@ -54,7 +59,8 @@ public class MoGoApplication extends MultiDexApplication { }); // 初始化SDK,可以设置状态回调来监听 - MoGoAiCloudClient.getInstance().init(this, clientConfig, null); + MoGoAiCloudClient.getInstance().init( + this, clientConfig); } } diff --git a/app/src/main/java/com/mogo/cloud/RoadConditionActivity.java b/app/src/main/java/com/mogo/cloud/RoadConditionActivity.java new file mode 100644 index 0000000..4cda9ca --- /dev/null +++ b/app/src/main/java/com/mogo/cloud/RoadConditionActivity.java @@ -0,0 +1,142 @@ +package com.mogo.cloud; + +import android.os.Bundle; +import android.util.Log; +import android.widget.Button; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.google.gson.Gson; +import com.mogo.cloud.network.BaseData; +import com.mogo.cloud.network.NetworkActivity; +import com.mogo.cloud.passport.MoGoAiCloudClient; +import com.mogo.cloud.tanlu.MogoRoadSearchManager; +import com.mogo.cloud.tanlu.MogoUploadManager; +import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback; +import com.mogo.cloud.tanlu.api.ITanluUploadCallback; +import com.mogo.cloud.tanlu.bean.RoadInfoRequest; +import com.mogo.cloud.tanlu.bean.RoadInfos; +import com.mogo.cloud.tanlu.bean.UploadInfo; +import com.mogo.cloud.tanlu.bean.UploadResult; +import com.mogo.cloud.tanlu.bean.location.Location; +import com.mogo.realtime.Interface.MoGoAiCloudRealTime; +import com.mogo.realtime.entity.MogoSnapshotSetData; +import com.mogo.realtime.socket.IMogoCloudOnMsgListener; + +import java.util.ArrayList; + +/** + * @author lixiaopeng + * @description 路况服务 + * @since: 2021/1/21 + */ +public class RoadConditionActivity extends AppCompatActivity { + private static final String TAG = "RoadConditionActivity"; + private Button roadUploadButton; + private Button roadQueryButton; + private TextView roadUploadTv; + private TextView roadQueryTv; + + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_roadcondition); + + roadUploadTv = findViewById(R.id.road_upload_tv); + roadQueryTv = findViewById(R.id.road_query_tv); + + roadUploadButton = findViewById(R.id.road_upload_bt); + roadUploadButton.setOnClickListener(view -> { + uploadRoadInfo(); + }); + + roadQueryButton = findViewById(R.id.road_query_bt); + roadQueryButton.setOnClickListener(view -> { + queryRoad(); + }); + } + + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + + public void queryRoad() { + ArrayList list = new ArrayList(); + list.add("10007"); + + //北京市朝阳区小黄庄北街2号, 经纬度和地理位置必须有一个 + Location location = new Location(); + location.setLatitude(39.968139); + location.setLongitude(116.411468); + RoadInfoRequest request = new RoadInfoRequest(location, "中关村", list, false, false); + + MogoRoadSearchManager.getInstance(RoadConditionActivity.this).init(); + MogoRoadSearchManager.getInstance(RoadConditionActivity.this).queryRoadInfo(request, new IRoadInfoSearchCallback() { + @Override + public void onSuccess(BaseData result) { + if (result != null && result.getResult() != null) { + if (result != null && result.getResult() != null) { + roadQueryTv.setText(new Gson().toJson(result)); + } else { + roadQueryTv.setText("onSuccess code = " + result.getCode() + " --message = " + result.getMsg()); + } + } + } + + @Override + public void onFailure(int code) { + roadQueryTv.setText("onFailure code = " + code); + } + + @Override + public void onError(Throwable e) { + roadQueryTv.setText("onError e = " + e); + } + }); + } + + public void uploadRoadInfo() { + UploadInfo info = new UploadInfo(); +// info.setFilePath("/storage/emulated/0/Movies/compress_video_20210127112035.mp4"); + info.setFilePath("/storage/emulated/0/Movies/2222.png"); + + info.setAddr("北京市东城区小黄庄北街2号靠近中国银行"); + info.setLongitude(116.410892); + info.setLatitude(39.968317); + info.setPoiType("10007"); + info.setDirection(0); + info.setAreaCode("110101"); + info.setCityCode("010"); + info.setSn("F803EB2046PZD00228"); + info.setType(0); //0为图片, 1为视频 + + MogoUploadManager.getInstance(RoadConditionActivity.this).uploadInfo(info, new ITanluUploadCallback() { + @Override + public void onSuccess(BaseData result) { + if (result != null && result.getResult() != null) { + roadUploadTv.setText("onSuccess id = " + result.getResult().id + ""); + } else { + roadUploadTv.setText("onSuccess code = " + result.getCode() + " --message = " + result.getMsg()); + } + } + + @Override + public void onFailure(int code) { + roadUploadTv.setText("onFailure code = " + code); + } + + @Override + public void onError(Throwable e) { + roadUploadTv.setText("onError e = " + e); + } + }); + } + + +} diff --git a/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java b/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java index 4847b27..28ea228 100644 --- a/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java +++ b/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java @@ -1,7 +1,6 @@ package com.mogo.cloud.network; import android.os.Bundle; -import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; @@ -10,13 +9,6 @@ import androidx.appcompat.app.AppCompatActivity; import com.google.gson.Gson; import com.mogo.cloud.R; -import com.mogo.cloud.tanlu.MogoRoadSearchManager; -import com.mogo.cloud.tanlu.MogoUploadManager; -import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback; -import com.mogo.cloud.tanlu.api.ITanluUploadCallback; -import com.mogo.cloud.tanlu.bean.RoadInfos; -import com.mogo.cloud.tanlu.bean.UploadInfo; -import com.mogo.cloud.tanlu.bean.UploadResult; import java.util.HashMap; import java.util.Map; @@ -27,6 +19,7 @@ import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import static com.mogo.cloud.network.NetConstants.GEOFENCE_HOST; +import static com.mogo.cloud.network.NetConstants.REALTIME_LOCATION_HOST; /** * created by wujifei on 2021/1/21 12:26 @@ -53,76 +46,6 @@ public class NetworkActivity extends AppCompatActivity { tvResult.setText("结果显示"); queryRoadData("ZD802C1938L10797"); // queryHelpSignal("F803EB2046PZD00006"); - - //上报路况到服务端 - // uploadRoadInfo(); - //查询路况 -// queryRoad(); - } - }); - - } - - public void queryRoad() { - MogoRoadSearchManager.getInstance(NetworkActivity.this).init(); - MogoRoadSearchManager.getInstance(NetworkActivity.this).queryRoadInfo(null, new IRoadInfoSearchCallback() { - @Override - public void onSuccess(BaseData result) { - if (result != null && result.getResult() != null) { - Log.d(TAG, "msg = " + result.getMsg() + " --code =" + result.getCode()); - if (result.getResult().getData() != null) { - Log.d(TAG, "NetworkActivity queryRoad size() = " + result.getResult().getData().size()); - } - tvResult.setText(new Gson().toJson(result)); - } - } - - @Override - public void onFailure(int code) { - Log.d(TAG, "NetworkActivity queryRoad code = " + code); - } - - @Override - public void onError(Throwable e) { - Log.d(TAG, "NetworkActivity queryRoad e = " + e); - } - }); - } - - public void uploadRoadInfo() { - UploadInfo info = new UploadInfo(); -// info.setFilePath("/storage/emulated/0/Movies/compress_video_20210127112035.mp4"); -// info.setFilePath("/storage/emulated/0/Movies/2222.png"); - - info.setAddr("北京市东城区小黄庄北街2号靠近中国银行"); - info.setLongitude(116.410892); - info.setLatitude(39.968317); - info.setPoiType("10007"); - info.setDirection(0); - info.setAreaCode("110101"); - info.setCityCode("010"); - info.setSn("F803EB2046PZD00228"); - info.setType(0); //0为图片, 1为视频 - - MogoUploadManager.getInstance(NetworkActivity.this).uploadInfo(info, new ITanluUploadCallback() { - @Override - public void onSuccess(BaseData result) { - if (result != null && result.getResult() != null) { - Log.d(TAG, "NetworkActivity uploadRoadInfo result.id = " + result.getResult().id); - tvResult.setText(result.getResult().id + ""); - } else { - Log.e(TAG, "NetworkActivity uploadRoadInfo result == null"); - } - } - - @Override - public void onFailure(int code) { - Log.d(TAG, "NetworkActivity uploadRoadInfo code = " + code); - } - - @Override - public void onError(Throwable e) { - Log.d(TAG, "NetworkActivity uploadRoadInfo onError e = " + e); } }); } @@ -144,8 +67,8 @@ public class NetworkActivity extends AppCompatActivity { @Override public void onNext(BaseData value) { - tvResult.setText(new Gson().toJson(value)); - System.out.println(new Gson().toJson(value)); + tvResult.setText(formatJson(new Gson().toJson(value))); + System.out.println(formatJson(new Gson().toJson(value))); } @Override @@ -163,7 +86,7 @@ public class NetworkActivity extends AppCompatActivity { } public void queryHelpSignal(String sn) { - apiService = RetrofitFactory.INSTANCE.getInstance("http://dzt-realtimeLocation.zhidaozhixing.com") + apiService = RetrofitFactory.INSTANCE.getInstance(REALTIME_LOCATION_HOST) .create(ApiService.class); if (apiService != null) { Map map = new HashMap<>(); @@ -179,8 +102,8 @@ public class NetworkActivity extends AppCompatActivity { @Override public void onNext(BaseData value) { - tvResult.setText(new Gson().toJson(value)); - System.out.println(new Gson().toJson(value)); + tvResult.setText(formatJson(new Gson().toJson(value))); + System.out.println(formatJson(new Gson().toJson(value))); } @Override @@ -196,4 +119,62 @@ public class NetworkActivity extends AppCompatActivity { }); } } + + + public static String formatJson(String jsonStr) { + if (null == jsonStr || "".equals(jsonStr)) + return ""; + StringBuilder sb = new StringBuilder(); + char last = '\0'; + char current = '\0'; + int indent = 0; + boolean isInQuotationMarks = false; + for (int i = 0; i < jsonStr.length(); i++) { + last = current; + current = jsonStr.charAt(i); + switch (current) { + case '"': + if (last != '\\') { + isInQuotationMarks = !isInQuotationMarks; + } + sb.append(current); + break; + case '{': + case '[': + sb.append(current); + if (!isInQuotationMarks) { + sb.append('\n'); + indent++; + addIndentBlank(sb, indent); + } + break; + case '}': + case ']': + if (!isInQuotationMarks) { + sb.append('\n'); + indent--; + addIndentBlank(sb, indent); + } + sb.append(current); + break; + case ',': + sb.append(current); + if (last != '\\' && !isInQuotationMarks) { + sb.append('\n'); + addIndentBlank(sb, indent); + } + break; + default: + sb.append(current); + } + } + + return sb.toString(); + } + + private static void addIndentBlank(StringBuilder sb, int indent) { + for (int i = 0; i < indent; i++) { + sb.append('\t'); + } + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a6cf79b..b61d77c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,11 +10,27 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + + @@ -22,7 +38,7 @@ android:id="@+id/tvToken" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="10dp" + android:layout_margin="5dp" android:text="Token:" android:textSize="20dp" /> @@ -43,6 +59,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:text="实时数据测试" /> + +