From ed105e8ab72a2c579d1c6c5a886fc02ef6707477 Mon Sep 17 00:00:00 2001 From: wangdongsheng Date: Wed, 15 Sep 2021 16:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=8D=E7=85=A7=E7=82=B9=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 - app/libs/jacob.jar | Bin 47833 -> 0 bytes .../outdoor/activity/PicturesActivity.java | 33 ++---- .../outdoor/activity/TestActivity.java | 18 ++-- .../com/navinfo/outdoor/api/Constant.java | 6 +- .../fragment/ChargingStationFragment.java | 92 +++++++---------- .../outdoor/fragment/ContactFragment.java | 55 +++++----- .../outdoor/fragment/FilterFragment.java | 19 +++- .../outdoor/fragment/GatherGetFragment.java | 4 - .../navinfo/outdoor/http/HttpInterface.java | 4 +- .../com/navinfo/outdoor/util/SystemTTS.java | 95 ++++++++++++++++++ .../java/com/navinfo/outdoor/util/TTS.java | 7 ++ .../java/com/navinfo/outdoor/util/Voice.java | 62 ------------ app/src/main/res/layout/activity_pictures.xml | 66 +++++++----- 14 files changed, 238 insertions(+), 224 deletions(-) delete mode 100644 app/libs/jacob.jar create mode 100644 app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java create mode 100644 app/src/main/java/com/navinfo/outdoor/util/TTS.java delete mode 100644 app/src/main/java/com/navinfo/outdoor/util/Voice.java diff --git a/app/build.gradle b/app/build.gradle index 8394c74..d3987bb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,6 @@ dependencies { implementation 'androidx.navigation:navigation-ui:2.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation files('libs\\jts-1.13.jar') - implementation files('libs\\jacob.jar') testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' diff --git a/app/libs/jacob.jar b/app/libs/jacob.jar deleted file mode 100644 index 35ce4fa972c8f10720e28e528b05122b3ce04111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47833 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 T`13GL2G$Sy>ULl8^S}QC+%RXP diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java index 2ecac70..d5c02b8 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -32,6 +32,7 @@ import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.AWMp4ParserHelper; import com.navinfo.outdoor.util.GeometryTools; import com.navinfo.outdoor.util.MyTecentLocationSource; +import com.navinfo.outdoor.util.SystemTTS; import com.otaliastudios.cameraview.CameraException; import com.otaliastudios.cameraview.CameraListener; import com.otaliastudios.cameraview.CameraLogger; @@ -107,7 +108,6 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } capturePicture.setChecked(false); stopTimer(); - } return false; } @@ -117,7 +117,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen private int videoIndex = -1; private int oration; private ImageView ivPicImage; - private boolean isPicture=true; + private SystemTTS instance; @Override protected int getLayout() { @@ -152,6 +152,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } btnSwitch = findViewById(R.id.btn_switch); btnSwitch.setOnClickListener(this); + //相机记录器 CameraLogger.setLogLevel(CameraLogger.LEVEL_VERBOSE); ivZoomAdd = findViewById(R.id.iv_zoom_add); @@ -162,6 +163,8 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen ivLocation.setOnClickListener(this); camera = findViewById(R.id.camera); camera.setOnClickListener(this); + ImageView imageView = findViewById(R.id.iv_image); + imageView.setOnClickListener(this); capturePicture = findViewById(R.id.capture_picture); if (poi_video_type == 2) { capturePicture.setText("拍摄"); @@ -311,18 +314,9 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen setResult(0x111, intent); finish(); break; - /* case R.id.camera: + case R.id.iv_image: benSwitch(); - - if (!isPicture){ - // benSwitch(); - } break; - case R.id.iv_map: - if (isPicture){ - benSwitch(); - } - break;*/ case R.id.btn_switch: v.setEnabled(false); handler.sendEmptyMessageDelayed(0x102, 2000);// 利用handler延迟发送更改状态信息 @@ -338,8 +332,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen break; case R.id.iv_location://定位: if (Constant.currentLocation != null) { - CameraUpdate cameraSigma = - CameraUpdateFactory.newCameraPosition(new CameraPosition( + CameraUpdate cameraSigma = CameraUpdateFactory.newCameraPosition(new CameraPosition( new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude()), //中心点坐标,地图目标经纬度 tencentMap.getCameraPosition().zoom, //目标缩放级别 0, //目标倾斜角[0.0 ~ 45.0] (垂直地图时为0) @@ -350,6 +343,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } } + private Bitmap getBitMap() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.location); int width = bitmap.getWidth(); @@ -384,11 +378,6 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } public void benSwitch() { -// DisplayMetrics dm = new DisplayMetrics(); -// getWindowManager().getDefaultDisplay().getMetrics(dm); -// System.out.println("width-display :" + dm.widthPixels); -// System.out.println("height-display :" + dm.heightPixels); - int tmpWidth, tmpHeight; FrameLayout.LayoutParams layoutParamsMap = (FrameLayout.LayoutParams) ivMap.getLayoutParams();//地图的宽高 int heightMap = ivMap.getMeasuredHeight(); int widthMap = ivMap.getMeasuredWidth(); @@ -407,7 +396,6 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen layerChange.addView(ivMap); initMapBig(); ivPicImage.setVisibility(View.VISIBLE); - isPicture = true; } else { layoutParamsMap.height = heightCamera; layoutParamsMap.width = widthCamera; @@ -419,8 +407,6 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen layerChange.addView(camera); initMapShort(); ivPicImage.setVisibility(View.GONE); - isPicture = false; - } } @@ -483,9 +469,6 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen if (polyline != null) { polyline.remove(); } -/* - listenerPicture = false; -*/ for (int i = 0; i < removables.size(); i++) { removables.get(i).remove(); } diff --git a/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java index 71aab45..752ad72 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java @@ -106,7 +106,6 @@ public class TestActivity extends BaseActivity { } //获取中心点位置 LatLng mapCenterPoint = tencentMap.getCameraPosition().target; - String centerEncode = null; if (mapCenterPoint != null) { centerEncode = Geohash.getInstance().encode(mapCenterPoint.latitude, mapCenterPoint.longitude); @@ -115,6 +114,7 @@ public class TestActivity extends BaseActivity { OkGo.getInstance().cancelTag(this); showLoadingDialog(); // 请求方式和请求url + HttpParams httpParams = new HttpParams(); httpParams.put("userGeo", userEncode); httpParams.put("centerGeo", centerEncode); @@ -402,20 +402,21 @@ public class TestActivity extends BaseActivity { poiListEntity.setPrecision(listBean.getPrice() + ""); poiListEntity.setDist(listBean.getDist() + ""); poiListEntity.setDescribe(listBean.getMemo()); + poiListEntity.setGeoWkt(listBean.getGeo()); poiListEntity.setCreateTime(listBean.getEndDate()); poiListEntity.setType(listBean.getType()); String beanGeo = listBean.getGeo(); - poiListEntity.setGeoWkt(beanGeo); - Geometry geos = GeometryTools.createGeometry(beanGeo); - switch (geos.getGeometryType()) { + String geo = Geohash.getInstance().decode(beanGeo); + Geometry gens = GeometryTools.createGeometry(geo); + switch (gens.getGeometryType()) { case "Point": //点 - LatLng lng = GeometryTools.createLatLng(beanGeo); + LatLng lng = GeometryTools.createLatLng(geo); poiListEntity.setX(lng.longitude + ""); poiListEntity.setY(lng.latitude + ""); break; case "LineString": //线 case "Polygon": //面 - List latLineString = GeometryTools.getLatLags(beanGeo); + List latLineString = GeometryTools.getLatLags(geo); assert latLineString != null; poiListEntity.setX(latLineString.get(0).longitude + ""); poiListEntity.setY(latLineString.get(0).latitude + ""); @@ -589,9 +590,8 @@ public class TestActivity extends BaseActivity { if (msg.what == Constant.EVENT_WHAT_LOCATION_CHANGE) { // 用户位置更新 if (tencentMap != null) { TencentLocation tencentLocation = (TencentLocation) msg.obj; - CameraUpdate cameraSigma = - CameraUpdateFactory.newCameraPosition(new CameraPosition( - new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude()), //中心点坐标,地图目标经纬度 + CameraUpdate cameraSigma = CameraUpdateFactory.newCameraPosition( + new CameraPosition(new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude()), //中心点坐标,地图目标经纬度 tencentMap.getCameraPosition().zoom, //目标缩放级别 0, //目标倾斜角 tencentLocation.getBearing())); //目标旋转角 0~360° (正北方为0) diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index ad64d3e..4edcce3 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -146,12 +146,10 @@ public class Constant { //CompleteTask public static final int EVENT_WHAT_COMPLETE_TASK = 42; // 点击记录跳转开始采集 public static final int EVENT_STAY_REFRESH = 44; // 刷新记录页面 - public static final int EVENT_WORK_HOME = 45; //切换到寻宝 - public static final int PICTURE_VIDEO_WORD = 48; //视频页面崩溃后发给poi录像和道路 - public static final int REGISTER_WORD = 46; //注册的返回 public static final int VIDEO_FINISH_ROAD = 47;//录像视频列表的返回 + public static final int PICTURE_VIDEO_WORD = 48; //视频页面崩溃后发给poi录像和道路 public static final int PHOTO_FINISH_VIDEO = 49;//拍照列表的返回 public static final int NEST_WORD_SUBMIT =50;//所有的提交/上传 @@ -190,7 +188,7 @@ public class Constant { public static TencentMap.OnMarkerClickListener markerClickListener=null; - public static final String NAVIN_FO="9.14";//版本 + public static final String NAVIN_FO="9.14.2";//版本 /** * 联系我们的QQ群名称和QQ群号 diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java index 642701f..7d598e6 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java @@ -109,7 +109,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. private Spinner spinnerType; String[] caye = new String[]{"充电站", "充换电站", "充电桩组", "换电站"};//1."充电站"2 "充换电站"3 "充电桩组"4 "换电站"5 , String[] spinner = new String[]{"存在", "不存在", "无法验证"}; - private int existence = 0; private LinearLayout linearChargingPile; private ChargingPileAdapter chargingPileAdapter; @@ -123,13 +122,11 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. private ContactView contactView; private ArrayList chargingStationList; String str = ""; - - // private ArrayList fileList; + //private ArrayList fileList; private NestedScrollView nestedScrollView; private Marker markerStation; private Point screenStationPositions; private List removablesLocality; - public static ChargingStationFragment newInstance(Bundle bundle) { ChargingStationFragment fragment = new ChargingStationFragment(); fragment.setArguments(bundle); @@ -189,7 +186,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. if (!EventBus.getDefault().isRegistered(this)) {//加上判断 EventBus.getDefault().register(this); } - } @Override @@ -197,7 +193,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. super.onResume(); initHeader(); moveLatlng(latLng, null); - } @Override @@ -479,7 +474,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. } else { Toast.makeText(getActivity(), "请输入名称", Toast.LENGTH_SHORT).show(); } - String address = showPoiEntity.getAddress();//地址 if (address != null && !address.equals("")) { editSiteContent.setText(address); @@ -617,7 +611,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. initPileMarkerShow(); } }); - } }).start(); if (showPoiEntity.getTaskStatus() == 3) { @@ -687,14 +680,12 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. Toast.makeText(getActivity(), getPhoneBean.getMessage() + "", Toast.LENGTH_SHORT).show(); } } - @Override public void onError(Throwable e, int id) { dismissLoadingDialog(); Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); } }); - } public void initRemovePileSharePre() { @@ -709,9 +700,8 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. //根据要保存的数据的类型,调用对应的put方法,以键值对的形式添加新值。 edit.putString("chargingPileEntity", null); //提交新值。必须执行,否则前面的操作都无效。 - edit.commit(); + edit.apply(); } - //禁用所有可操作性控件 private void disables() { checkBoxLife.setEnabled(false); @@ -735,7 +725,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. poiBeans = new ArrayList<>(); } - @Subscribe public void onEvent(Message data) { if (data.what == Constant.CHARGING_STATION_WORD) { // 移动充电站点位 @@ -863,10 +852,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. Constant.isPresent = false; } else { Toast.makeText(getContext(), "有正在提交的数据,等提交成功后,方可操作", Toast.LENGTH_SHORT).show(); - } - - } }); } @@ -943,7 +929,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. } } } - /** * 上传充电桩数据 */ @@ -980,42 +965,39 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. } catch (IOException e) { e.printStackTrace(); } -/* - - OkGo - // 请求方式和请求url - .post(HttpInterface.CS_TASK_UP_LOAD_PIC) - // 请求的 tag, 主要用于取消对应的请求 - .params("auditId", chargingPileEntity.getBodyId()) - .addFileParams("file", chargingPileFileList) - .tag(this) - .execute(new DialogCallback(PoiUploadBean.class) { - @Override - public void onSuccess(Response poiUploadBeanResponse) { - dismissLoadingDialog(); - Toast.makeText(getActivity(), "上传成功", Toast.LENGTH_SHORT).show(); - isChargingPoleUploaded = true; - if (isChargeStationUploaded && isChargingPoleUploaded) { - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - getActivity().onBackPressed();//回退 - } - }); - } - } - - @Override - public void onError(Response poiUploadBeanResponse) { - super.onError(poiUploadBeanResponse); - dismissLoadingDialog(); - Toast.makeText(getActivity(), poiUploadBeanResponse.code() + "", Toast.LENGTH_SHORT).show(); - Log.d("TAG", "onError: " + poiUploadBeanResponse.code() + ""); - } - }); -*/ } - + /* + OkGo + // 请求方式和请求url + .post(HttpInterface.CS_TASK_UP_LOAD_PIC) + // 请求的 tag, 主要用于取消对应的请求 + .params("auditId", chargingPileEntity.getBodyId()) + .addFileParams("file", chargingPileFileList) + .tag(this) + .execute(new DialogCallback(PoiUploadBean.class) { + @Override + public void onSuccess(Response poiUploadBeanResponse) { + dismissLoadingDialog(); + Toast.makeText(getActivity(), "上传成功", Toast.LENGTH_SHORT).show(); + isChargingPoleUploaded = true; + if (isChargeStationUploaded && isChargingPoleUploaded) { + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + getActivity().onBackPressed();//回退 + } + }); + } + } + @Override + public void onError(Response poiUploadBeanResponse) { + super.onError(poiUploadBeanResponse); + dismissLoadingDialog(); + Toast.makeText(getActivity(), poiUploadBeanResponse.code() + "", Toast.LENGTH_SHORT).show(); + Log.d("TAG", "onError: " + poiUploadBeanResponse.code() + ""); + } + }); + */ private void initRoadSaveLocal(boolean isLocal) { XXPermissions.with(this) //读写权限 @@ -1067,7 +1049,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. Log.e("TAG", "poiUploadByNetWork: " + poiEntity.getBodyId() + chargingStationList); return; } - new Thread(new Runnable() { @Override public void run() { @@ -1096,7 +1077,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. Objects.requireNonNull(getActivity()).onBackPressed();//回退 WaitDialog.show((AppCompatActivity) getActivity(), "任务正在后台上传中,请稍候..."); WaitDialog.dismiss(3000); - } }); } @@ -1164,7 +1144,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. Toast.makeText(getActivity(), "" + chargingStationBean.getMessage(), Toast.LENGTH_SHORT).show(); } } - @Override public void onError(Throwable e, int id) { dismissLoadingDialog(); @@ -1216,9 +1195,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. btnUploading.setEnabled(false); Toast.makeText(getActivity(), taskNameBean.getMessage() + "", Toast.LENGTH_SHORT).show(); } - } - @Override public void onError(Throwable e, int id) { if (getActivity() == null) { @@ -1240,7 +1217,6 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); - initStationSharePre(); } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ContactFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ContactFragment.java index c8b28e1..2eff0d6 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ContactFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ContactFragment.java @@ -36,61 +36,60 @@ public class ContactFragment extends BaseFragment implements View.OnClickListene @Override protected void initView() { super.initView(); - ImageView ivContact = findViewById(R.id.iv_contact); + ImageView ivContact =findViewById(R.id.iv_contact); ivContact.setOnClickListener(this); - TextView tvJigName = (TextView) findViewById(R.id.tv_jingName); + TextView tvJigName =findViewById(R.id.tv_jingName); tvJigName.setText(Constant.REGION_JIG_NAME); - TextView tvJigPhone = (TextView) findViewById(R.id.tv_jingPhone); + TextView tvJigPhone =findViewById(R.id.tv_jingPhone); tvJigPhone.setText(Constant.REGION_JIG_PHONE); - TextView tvHeiName = (TextView) findViewById(R.id.tv_heiName); + TextView tvHeiName =findViewById(R.id.tv_heiName); tvHeiName.setText(Constant.REGION_HEI_NAME); - TextView tvHeiPhone = (TextView) findViewById(R.id.tv_heiPhone); + TextView tvHeiPhone =findViewById(R.id.tv_heiPhone); tvHeiPhone.setText(Constant.REGION_HEI_PHONE); - TextView tvSanName = (TextView) findViewById(R.id.tv_shanName); + TextView tvSanName =findViewById(R.id.tv_shanName); tvSanName.setText(Constant.REGION_SAN_NAME); - TextView tvSanPhone = (TextView) findViewById(R.id.tv_shanPhone); + TextView tvSanPhone =findViewById(R.id.tv_shanPhone); tvSanPhone.setText(Constant.REGION_SAN_PHONE); - TextView tvYuName = (TextView) findViewById(R.id.tv_yuName); + TextView tvYuName =findViewById(R.id.tv_yuName); tvYuName.setText(Constant.REGION_YU_NAME); - TextView tvYuPhone = (TextView) findViewById(R.id.tv_yuPhone); + TextView tvYuPhone =findViewById(R.id.tv_yuPhone); tvYuPhone.setText(Constant.REGION_YU_PHONE); - TextView tvChanName = (TextView) findViewById(R.id.tv_chuanName); + TextView tvChanName =findViewById(R.id.tv_chuanName); tvChanName.setText(Constant.REGION_CHAN_NAME); - TextView tvChanPhone = (TextView) findViewById(R.id.tv_chuanPhone); + TextView tvChanPhone =findViewById(R.id.tv_chuanPhone); tvChanPhone.setText(Constant.REGION_CHAN_PHONE); - TextView tvGanName = (TextView) findViewById(R.id.tv_ganName); + TextView tvGanName =findViewById(R.id.tv_ganName); tvGanName.setText(Constant.REGION_GAN_NAME); - TextView tvGanPhone = (TextView) findViewById(R.id.tv_ganPhone); + TextView tvGanPhone =findViewById(R.id.tv_ganPhone); tvGanPhone.setText(Constant.REGION_GAN_PHONE); - TextView tvSuName = (TextView) findViewById(R.id.tv_suName); + TextView tvSuName =findViewById(R.id.tv_suName); tvSuName.setText(Constant.REGION_SU_NAME); - TextView tvSuPhone = (TextView) findViewById(R.id.tv_suPhone); + TextView tvSuPhone =findViewById(R.id.tv_suPhone); tvSuPhone.setText(Constant.REGION_SU_PHONE); - TextView tvLuName = (TextView) findViewById(R.id.tv_luName); + TextView tvLuName =findViewById(R.id.tv_luName); tvLuName.setText(Constant.REGION_LU_NAME); - TextView tvLuPhone = (TextView) findViewById(R.id.tv_luPhone); + TextView tvLuPhone =findViewById(R.id.tv_luPhone); tvLuPhone.setText(Constant.REGION_LU_PHONE); - TextView tvFuName = (TextView) findViewById(R.id.tv_fuName); + TextView tvFuName =findViewById(R.id.tv_fuName); tvFuName.setText(Constant.REGION_FU_NAME); - TextView tvFuPhone = (TextView) findViewById(R.id.tv_fuPhone); + TextView tvFuPhone =findViewById(R.id.tv_fuPhone); tvFuPhone.setText(Constant.REGION_FU_PHONE); - TextView tvGangName = (TextView) findViewById(R.id.tv_guangName); + TextView tvGangName =findViewById(R.id.tv_guangName); tvGangName.setText(Constant.REGION_GANG_NAME); - TextView tvGangPhone = (TextView) findViewById(R.id.tv_guangPhone); + TextView tvGangPhone =findViewById(R.id.tv_guangPhone); tvGangPhone.setText(Constant.REGION_GANG_PHONE); - TextView tvGabeName = (TextView) findViewById(R.id.tv_ganzName); + TextView tvGabeName =findViewById(R.id.tv_ganzName); tvGabeName.setText(Constant.REGION_GANZ_NAME); - TextView tvGabePhone = (TextView) findViewById(R.id.tv_ganzPhone); + TextView tvGabePhone =findViewById(R.id.tv_ganzPhone); tvGabePhone.setText(Constant.REGION_GANZ_PHONE); - TextView tvYueName = (TextView) findViewById(R.id.tv_yueName); + TextView tvYueName =findViewById(R.id.tv_yueName); tvYueName.setText(Constant.REGION_YUE_NAME); - TextView tvYuePhone = (TextView) findViewById(R.id.tv_yuePhone); + TextView tvYuePhone =findViewById(R.id.tv_yuePhone); tvYuePhone.setText(Constant.REGION_YUE_PHONE); - TextView tvYunName = (TextView) findViewById(R.id.tv_yunName); + TextView tvYunName =findViewById(R.id.tv_yunName); tvYunName.setText(Constant.REGION_YUN_NAME); - TextView tvYunPhone = (TextView) findViewById(R.id.tv_yunPhone); + TextView tvYunPhone =findViewById(R.id.tv_yunPhone); tvYunPhone.setText(Constant.REGION_YUN_PHONE); - } @Override diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java index 61e4180..27c7a22 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java @@ -21,6 +21,7 @@ import com.jcodecraeer.xrecyclerview.ProgressStyle; import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.kongzue.dialog.interfaces.OnMenuItemClickListener; import com.kongzue.dialog.v3.BottomMenu; +import com.kongzue.dialog.v3.WaitDialog; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.adapter.FilterAdapter; @@ -236,14 +237,17 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi Button btnFilter = findViewById(R.id.btn_filter); btnFilter.setOnClickListener(this); RelativeLayout rlDraw = findViewById(R.id.rl_draw); - if (Constant.LEVEL==1||Constant.LEVEL==2){ - rlDraw.setVisibility(View.VISIBLE); - }else { - rlDraw.setVisibility(View.GONE); - } + rlDraw.setOnClickListener(this); checkOk = findViewById(R.id.check_ok); Button btnDraw = findViewById(R.id.btn_draw); btnDraw.setOnClickListener(this); + if (Constant.LEVEL == 1 || Constant.LEVEL == 2) { + checkOk.setEnabled(true); + btnDraw.setEnabled(true); + } else { + checkOk.setEnabled(false); + btnDraw.setEnabled(false); + } setSlidingUpPanelLayout(Constant.SLIDING_LAYOUT); recyclerFilter = findViewById(R.id.recycler_filter); if (slidingPaneLayout != null) { @@ -318,6 +322,11 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override public void onClick(View v) { switch (v.getId()) { + case R.id.rl_draw: + if (Constant.LEVEL != 1 && Constant.LEVEL != 2) { + Toast.makeText(getActivity(), "您的等级暂不具备此权限哦", Toast.LENGTH_SHORT).show(); + } + break; case R.id.btn_draw: if (btnChock == null) { return; diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java index 0f7c172..e2b7e5b 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -35,7 +35,6 @@ import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.Geohash; import com.navinfo.outdoor.util.GeometryTools; -import com.navinfo.outdoor.util.Voice; import com.tencent.tencentmap.mapsdk.maps.model.LatLng; import com.vividsolutions.jts.geom.Geometry; @@ -449,7 +448,6 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe Toast.makeText(getActivity(), response.getMessage(), Toast.LENGTH_SHORT).show(); } } - @Override public void onError(Throwable e, int id) { dismissLoadingDialog(); @@ -457,12 +455,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe Log.d("TAG", "onError: " + e.getMessage()); } }); - } /** * @param url 面妆任务领取任务 - * @param */ private void initPolygonTask(String url, int taskId, boolean aBoolean) { if (taskId == 0) { diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index f6b0512..880ef94 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -3,9 +3,9 @@ package com.navinfo.outdoor.http; import com.navinfo.outdoor.api.Constant; public class HttpInterface { - public static final String IP_TEST = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 + public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String DATA_IP = "http://172.23.139.4:9999/m4";//接口 - public static final String IP = "http://dtxbmaps.navinfo.com/dtxb_test/m4";//测试接口 + public static final String IP_TEXt = "http://dtxbmaps.navinfo.com/dtxb_test/m4";//测试接口 public static final String TEST_GUIDANCE_IP = "http://172.21.98.90:9999/m4";//引导页完成接口 public static final String APKIP = "http://172.23.139.4:8001/"; diff --git a/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java b/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java new file mode 100644 index 0000000..1d7c551 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java @@ -0,0 +1,95 @@ +package com.navinfo.outdoor.util; + +import android.content.Context; +import android.speech.tts.TextToSpeech; +import android.speech.tts.UtteranceProgressListener; +import android.widget.Toast; + +import java.util.Locale; + +public class SystemTTS extends UtteranceProgressListener implements TTS, TextToSpeech.OnUtteranceCompletedListener { + private Context mContext; + private static SystemTTS singleton; + private TextToSpeech textToSpeech; // 系统语音播报类 + private boolean isSuccess = true; + + public static SystemTTS getInstance(Context context) { + if (singleton == null) { + synchronized (SystemTTS.class) { + if (singleton == null) { + singleton = new SystemTTS(context); + } + } + } + return singleton; + } + + private SystemTTS(Context context) { + this.mContext = context.getApplicationContext(); + textToSpeech = new TextToSpeech(mContext, new TextToSpeech.OnInitListener() { + @Override + public void onInit(int i) { + //系统语音初始化成功 + if (i == TextToSpeech.SUCCESS) { + int result = textToSpeech.setLanguage(Locale.CHINA); + textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规 + textToSpeech.setSpeechRate(1.0f); + textToSpeech.setOnUtteranceProgressListener(SystemTTS.this); + textToSpeech.setOnUtteranceCompletedListener(SystemTTS.this); + if (result == TextToSpeech.LANG_MISSING_DATA + || result == TextToSpeech.LANG_NOT_SUPPORTED) { + //系统不支持中文播报 + isSuccess = false; + } + } + + } + }); + } + + public void playText(String playText) { + if (!isSuccess) { + Toast.makeText(mContext, "系统不支持中文播报", Toast.LENGTH_SHORT).show(); + return; + } + if (textToSpeech != null) { + textToSpeech.speak(playText, + TextToSpeech.QUEUE_ADD, null, null); + } + } + + public void stopSpeak() { + if (textToSpeech != null) { + textToSpeech.stop(); + } + } + +// public boolean isSpeaking() { +// if (textToSpeech.isSpeaking()) { +// return true; +// } +// return false; +// } + + + //播报完成回调 + @Override + public void onUtteranceCompleted(String utteranceId) { + + } + + @Override + public void onStart(String utteranceId) { + + } + + @Override + public void onDone(String utteranceId) { + } + + @Override + public void onError(String utteranceId) { + + } +} + diff --git a/app/src/main/java/com/navinfo/outdoor/util/TTS.java b/app/src/main/java/com/navinfo/outdoor/util/TTS.java new file mode 100644 index 0000000..46fe9cc --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/util/TTS.java @@ -0,0 +1,7 @@ +package com.navinfo.outdoor.util; + +public interface TTS { + void playText(String playText); + void stopSpeak(); + +} diff --git a/app/src/main/java/com/navinfo/outdoor/util/Voice.java b/app/src/main/java/com/navinfo/outdoor/util/Voice.java deleted file mode 100644 index 9b1d99a..0000000 --- a/app/src/main/java/com/navinfo/outdoor/util/Voice.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.navinfo.outdoor.util; - -import com.jacob.activeX.ActiveXComponent; -import com.jacob.com.Dispatch; -import com.jacob.com.Variant; - -/** - * 语音播放 - */ -public class Voice { - /** - * @param type 设定文件 0:开始,1停止 - * @return 返回类型:void - * @Title: start - * @Description: 该方法的主要作用:朗读 - */ - public static void sprat(String content, int type) { - ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice"); - Dispatch sago = sap.getObject(); - if (type == 0) { - try { - // 音量 0-100 - sap.setProperty("Volume", new Variant(100)); - // 语音朗读速度 -10 到 +10 - sap.setProperty("Rate", new Variant(1.3)); - Variant defaultVoice = sap.getProperty("Voice"); - Dispatch discrepantVoice = defaultVoice.toDispatch(); - Variant allVoices = Dispatch.call(sago, "GetVoices"); - Dispatch disVoices = allVoices.toDispatch(); - Dispatch serviced = Dispatch.call(disVoices, "Item", - new Variant(1)).toDispatch(); - ActiveXComponent voiceActive = new ActiveXComponent(discrepantVoice); - ActiveXComponent servicedActives = new ActiveXComponent(serviced); - Variant item = Dispatch.call(servicedActives, "GetDescription"); - // 执行朗读 - Dispatch.call(sago, "Speak", new Variant(content)); - } catch (Exception e) { - e.printStackTrace(); - } finally { - sago.safeRelease(); - sap.safeRelease(); - } - } else { - // 停止 - try { - Dispatch.call(sago, "Speak", new Variant(content), new Variant(2)); - } catch (Exception e) { - System.out.println(e.getMessage()); - e.printStackTrace(); - } - } - } - - /** - * @return 返回类型:void - * @Title: test - * @Description: 该方法的主要作用:执行朗读内容 - */ - public void test() { - sprat("请不要超过 多少", 0); - } -} diff --git a/app/src/main/res/layout/activity_pictures.xml b/app/src/main/res/layout/activity_pictures.xml index 8310b7d..92932aa 100644 --- a/app/src/main/res/layout/activity_pictures.xml +++ b/app/src/main/res/layout/activity_pictures.xml @@ -10,24 +10,28 @@ + android:layout_height="match_parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> @@ -41,7 +45,17 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintWidth_default="percent" app:layout_constraintWidth_percent="0.4" /> - + + - - - - - - - - - - - + + + + + + + + + + + -