From d25b3e1e309840fefe390f52a85ec0ceb2e5e322 Mon Sep 17 00:00:00 2001 From: md Date: Wed, 7 Jul 2021 18:58:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=88=E5=AD=98=E5=9C=A8=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=89=E6=B7=BB=E5=8A=A0=E2=80=98=E5=85=B6=E4=BB=96=E2=80=99?= =?UTF-8?q?=20=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 45 ++++--- .../outdoor/activity/PicturesActivity.java | 120 ++++++++++++++++++ .../com/navinfo/outdoor/api/Constant.java | 2 + .../navinfo/outdoor/base/BaseActivity.java | 2 +- .../outdoor/fragment/OtherFragment.java | 56 +++++--- .../navinfo/outdoor/fragment/PoiFragment.java | 74 +++++++++-- .../outdoor/fragment/PoiVideoFragment.java | 3 +- .../outdoor/fragment/RoadFragment.java | 3 +- app/src/main/res/layout/activity_picture.xml | 1 + app/src/main/res/layout/activity_pictures.xml | 67 ++++++++++ 11 files changed, 325 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java create mode 100644 app/src/main/res/layout/activity_pictures.xml diff --git a/app/build.gradle b/app/build.gradle index 554a859..0559a03 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion '29.0.2' - //ndkVersion '23.0.7123448' + ndkVersion '23.0.7123448' defaultConfig { applicationId "com.navinfo.outdoor" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 305f0d9..e96e2e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,10 +1,11 @@ - - - - + + + + + @@ -26,10 +27,6 @@ - - - - @@ -38,20 +35,23 @@ android:name=".api.UserApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" - android:requestLegacyExternalStorage="true" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config" + android:requestLegacyExternalStorage="true" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.WhiteScreen"> - - + + @@ -62,21 +62,28 @@ android:name="design_height_in_dp" android:value="800" /> - + - - - + + + - - + android:windowSoftInputMode="adjustPan" + android:screenOrientation="portrait"/> + + \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java new file mode 100644 index 0000000..5bc2803 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -0,0 +1,120 @@ +package com.navinfo.outdoor.activity; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import android.app.Activity; +import android.content.pm.ActivityInfo; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; + +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.api.Constant; +import com.navinfo.outdoor.base.BaseActivity; +import com.otaliastudios.cameraview.CameraListener; +import com.otaliastudios.cameraview.CameraLogger; +import com.otaliastudios.cameraview.CameraView; +import com.otaliastudios.cameraview.VideoResult; +import com.otaliastudios.cameraview.controls.Engine; +import com.otaliastudios.cameraview.controls.Mode; +import com.tencent.tencentmap.mapsdk.maps.MapView; +import com.tencent.tencentmap.mapsdk.maps.TencentMap; +import com.tencent.tencentmap.mapsdk.maps.UiSettings; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class PicturesActivity extends BaseActivity implements View.OnClickListener { + private static final CameraLogger LOG = CameraLogger.create("Picture"); + private com.otaliastudios.cameraview.CameraView cameraView; + private android.widget.Button capuretVideo; + private android.widget.Button btnStopVideo; +// private MapView ivMap; +// private TencentMap tencentMap; + + + + @Override + protected int getLayout() { + return R.layout.activity_pictures; + } +// + @Override + protected void initView() { + super.initView(); + cameraView = (CameraView) findViewById(R.id.cameraView); + capuretVideo = (Button) findViewById(R.id.capuretVideo); + capuretVideo.setOnClickListener(this::onClick); + btnStopVideo = (Button) findViewById(R.id.btn_stop_video); + btnStopVideo.setOnClickListener(this::onClick); + // ivMap = findViewById(R.id.iv_map); + cameraView.setLifecycleOwner(this); + cameraView.setEngine(Engine.CAMERA1); + cameraView.setMode(Mode.VIDEO); + cameraView.addCameraListener(new CameraListener() { + @Override + public void onVideoTaken(@NonNull @NotNull VideoResult result) { + super.onVideoTaken(result); + Toast.makeText(PicturesActivity.this, "停止摄像", Toast.LENGTH_SHORT).show(); + finish(); + } + }); + // tencentMap = ivMap.getMap(); + //获取地图UI 设置对象 +// UiSettings uiSettings = tencentMap.getUiSettings(); +// //设置logo的大小 +// uiSettings.setLogoScale(0.7f); + + + } + + @Override + protected void initData() { + super.initData(); + } + + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.capuretVideo: + DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + String format = formatter.format(calendar.getTime()); + //文件 + File file = new File(Constant.PICTURE_FOLDER, format + ".mp4"); + cameraView.takeVideo(file, 15000); + break; + } + } + + @Override + protected void onResume() { + super.onResume(); + cameraView.open(); +// ivMap.onResume(); + + } + + @Override + protected void onPause() { + super.onPause(); + cameraView.close(); +// ivMap.onPause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + cameraView.destroy(); +// ivMap.onDestroy(); + } +} \ No newline at end of file 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 f8c9437..76a2146 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -4,6 +4,7 @@ import com.navinfo.outdoor.R; import com.navinfo.outdoor.bean.JobSearchBean; import com.navinfo.outdoor.util.SdkFolderCreate; import com.tencent.map.geolocation.TencentLocation; +import com.tencent.tencentmap.mapsdk.maps.MapView; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; @@ -90,6 +91,7 @@ public class Constant { public static JobSearchBean jobSearchBean;//数据 + public static MapView treasureMap; } diff --git a/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java b/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java index 0c8c01a..bf21c03 100644 --- a/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java @@ -30,7 +30,7 @@ public abstract class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setScreenRoate(true); +// setScreenRoate(true); //初始化,默认透明状态栏和黑色导航栏 ImmersionBar.with(this).init(); Collector.addActivity(this); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java index 377a875..70e6e5d 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java @@ -86,12 +86,12 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis private PoiDao poiDao; private PoiEntity showPoiEntity; private LatLng latLng; - private int station_type=0; - String[] spinner = new String[]{"存在","不存在","无法验证"}; + private int station_type = 0; + String[] spinner = new String[]{"存在", "不存在", "无法验证"}; private RelativeLayout linearExist; private Spinner spinnerExist; - private ArrayList otheruploadList; + private ArrayList otheruploadList; private String takePhotoPath; private String takePhotoPath2; @@ -162,13 +162,13 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis public void onItemSelected(AdapterView parent, View view, int position, long id) { switch (position) { case 0: - station_type=6; + station_type = 6; break; case 1: - station_type=7; + station_type = 7; break; case 2: - station_type=8; + station_type = 8; break; } } @@ -244,7 +244,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis showPoiEntity = (PoiEntity) getArguments().getSerializable("poiEntity"); if (showPoiEntity != null) { String name = showPoiEntity.getName();//名称 - if (name != null&&!name.equals("")) { + if (name != null && !name.equals("")) { editTaskName.setText(name + ""); } String x = showPoiEntity.getX(); @@ -255,12 +255,12 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis latLng.setLatitude(Double.parseDouble(y)); } String describe = showPoiEntity.getDescribe();//任务描述 - if (describe != null &&!describe.equals("")) { + if (describe != null && !describe.equals("")) { editOtherDescribe.setText(describe); } linearExist.setVisibility(View.VISIBLE); int station_type = showPoiEntity.getStation_type(); - spinnerOther.setSelection(station_type,true); + spinnerOther.setSelection(station_type, true); if (showPoiEntity.getPhotoInfo() != null) { for (int i = 0; i < showPoiEntity.getPhotoInfo().size(); i++) { String photo = showPoiEntity.getPhotoInfo().get(i).getPhoto(); @@ -338,8 +338,8 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis } else { infoList.add(new Info(tagPictures)); } - if (showPoiEntity!=null){ - if (showPoiEntity.getTaskId()!=0){ + if (showPoiEntity != null) { + if (showPoiEntity.getTaskId() != 0) { poiEntity.setTaskId(showPoiEntity.getTaskId()); } } @@ -388,20 +388,42 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis otheruploadList = new ArrayList<>(); File otherUploadFile = new File(takePhotoPath); File otherUploadFile2 = new File(takePhotoPath2); - if (!otherUploadFile.exists() || !otherUploadFile2.exists()){ + if (!otherUploadFile.exists() || !otherUploadFile2.exists()) { Toast.makeText(getContext(), "照片不能为空", Toast.LENGTH_SHORT).show(); return; } otheruploadList.add(otherUploadFile); otheruploadList.add(otherUploadFile2); + OkGo + // 请求方式和请求url + .post(HttpInterface.USER_AUTH_ADD) + // 请求的 tag, 主要用于取消对应的请求 + .params("userid", "1") + .addFileParams("file", otheruploadList) + .tag(this) + .execute(new DialogCallback(NameAuthenticationBean.class) { + @Override + public void onSuccess(Response response) { + dismissLoadingDialog(); + Log.d("TAG", "onSuccess: " + response.toString() + "sssssssssssss"); + } + + @Override + public void onError(Response response) { + super.onError(response); + dismissLoadingDialog(); + Toast.makeText(getActivity(), response.message(), Toast.LENGTH_SHORT).show(); + Log.d("TAG", "onError: " + response.message()); + } + }); } private void otherSaveByNetWork(PoiEntity poiEntity) { showLoadingDialog(); HttpParams httpParams = new HttpParams(); - httpParams.put("type",poiEntity.getStation_type()); + httpParams.put("type", poiEntity.getStation_type()); httpParams.put("taskId", poiEntity.getTaskId()); httpParams.put("name", poiEntity.getName()); httpParams.put("existence", "1"); @@ -459,15 +481,15 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis poiEntity.setDescribe(describe); } String tagPicture = (String) ivPicture.getTag(); - if (tagPicture != null &&!tagPicture.equals("")) { + if (tagPicture != null && !tagPicture.equals("")) { arrayList.add(new Info(tagPicture)); } String tagPictures = (String) ivPictures.getTag(); - if (tagPictures != null&&!tagPictures.equals("")) { + if (tagPictures != null && !tagPictures.equals("")) { arrayList.add(new Info(tagPictures)); } - if (showPoiEntity!=null){ - if (showPoiEntity.getTaskId()!=0){ + if (showPoiEntity != null) { + if (showPoiEntity.getTaskId() != 0) { poiEntity.setTaskId(showPoiEntity.getTaskId()); } } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java index 6b2cf7d..b1a749d 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -40,15 +40,19 @@ import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.DialogSettings; import com.kongzue.dialog.v3.MessageDialog; import com.kongzue.dialog.v3.ShareDialog; +import com.lzy.okgo.OkGo; import com.lzy.okgo.model.HttpParams; +import com.lzy.okgo.model.Response; import com.navinfo.outdoor.R; import com.navinfo.outdoor.adapter.PoiRecycleAdapter; import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseDrawerFragment; import com.navinfo.outdoor.bean.Info; +import com.navinfo.outdoor.bean.NameAuthenticationBean; import com.navinfo.outdoor.bean.PoiBean; import com.navinfo.outdoor.bean.PoiSaveBean; import com.navinfo.outdoor.http.Callback; +import com.navinfo.outdoor.http.DialogCallback; import com.navinfo.outdoor.http.HttpInterface; import com.navinfo.outdoor.http.OkGoBuilder; import com.navinfo.outdoor.room.PoiDao; @@ -62,6 +66,7 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.json.JSONObject; +import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -96,6 +101,13 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe String[] spinner = new String[]{"存在","不存在","无法验证"}; private RelativeLayout linearExist; private Spinner spinnerExist; + private ArrayList poiUploadList; + //获取的拍照图片 + private String takePhotoPath2; + private String takePhotoPath5; + private String takePhotoPath4; + private String takePhotoPath3; + private String takePhotoPath1; public static PoiFragment newInstance(Bundle bundle) { PoiFragment fragment = new PoiFragment(); @@ -464,6 +476,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe obtain.what = Constant.TREASURE_FRAGMENT; obtain.obj = false; EventBus.getDefault().post(obtain); + poiUploadByNetWork(); break; case R.id.tv_examine: Toast.makeText(getContext(), editNameContent.getText().toString(), Toast.LENGTH_SHORT).show(); @@ -492,6 +505,47 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } } + private void poiUploadByNetWork() { + poiUploadList = new ArrayList<>(); + File poiUploadFile1 = new File(takePhotoPath1); + File poiUploadFile2 = new File(takePhotoPath2); + File poiUploadFile3 = new File(takePhotoPath3); + File poiUploadFile4 = new File(takePhotoPath4); + File poiUploadFile5 = new File(takePhotoPath5); + if (!poiUploadFile1.exists()||!poiUploadFile2.exists()||!poiUploadFile3.exists()||!poiUploadFile4.exists()||!poiUploadFile5.exists()){ + Toast.makeText(getActivity(), "照片不能为空", Toast.LENGTH_SHORT).show(); + return; + } + poiUploadList.add(poiUploadFile1); + poiUploadList.add(poiUploadFile2); + poiUploadList.add(poiUploadFile3); + poiUploadList.add(poiUploadFile4); + poiUploadList.add(poiUploadFile5); + OkGo + // 请求方式和请求url + .post(HttpInterface.USER_AUTH_ADD) + // 请求的 tag, 主要用于取消对应的请求 + .params("auditId", "1") + .addFileParams("file",poiUploadList) + .tag(this) + .execute(new DialogCallback(NameAuthenticationBean.class) { + @Override + public void onSuccess(Response response) { + dismissLoadingDialog(); + Log.d("TAG", "onSuccess: " + response.toString() + "sssssssssssss"); + + } + + @Override + public void onError(Response response) { + super.onError(response); + dismissLoadingDialog(); + Toast.makeText(getActivity(), response.message(), Toast.LENGTH_SHORT).show(); + Log.d("TAG", "onError: " + response.message()); + } + }); + } + private void poiSaveByNet(PoiEntity poiEntity) { showLoadingDialog(); HttpParams httpParams = new HttpParams(); @@ -631,8 +685,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } }); } else { - String takePhotoPath = PhotoPathUtil.getTakePhotoPath(data, "a"); - ivPanorama.setTag(takePhotoPath); + takePhotoPath1 = PhotoPathUtil.getTakePhotoPath(data, "a"); + ivPanorama.setTag(takePhotoPath1); ivPanorama.setImageBitmap(bitmap);//显示图像 } @@ -652,8 +706,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } }); } else { - String takePhotoPath = PhotoPathUtil.getTakePhotoPath(data, "b"); - ivName.setTag(takePhotoPath); + takePhotoPath2 = PhotoPathUtil.getTakePhotoPath(data, "b"); + ivName.setTag(takePhotoPath2); ivName.setImageBitmap(bitmap);//显示图像 } @@ -674,8 +728,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } }); } else { - String takePhotoPath = PhotoPathUtil.getTakePhotoPath(data, "c"); - ivInternal.setTag(takePhotoPath); + takePhotoPath3 = PhotoPathUtil.getTakePhotoPath(data, "c"); + ivInternal.setTag(takePhotoPath3); ivInternal.setImageBitmap(bitmap);//显示图像 } } else if (requestCode == 104 && resultCode == RESULT_OK) { @@ -694,8 +748,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } }); } else { - String takePhotoPath = PhotoPathUtil.getTakePhotoPath(data, "d"); - ivCard.setTag(takePhotoPath); + takePhotoPath4 = PhotoPathUtil.getTakePhotoPath(data, "d"); + ivCard.setTag(takePhotoPath4); ivCard.setImageBitmap(bitmap);//显示图像 } } else if (requestCode == 105 && resultCode == RESULT_OK) { @@ -714,8 +768,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } }); } else { - String takePhotoPath = PhotoPathUtil.getTakePhotoPath(data, "e"); - ivElse.setTag(takePhotoPath); + takePhotoPath5 = PhotoPathUtil.getTakePhotoPath(data, "e"); + ivElse.setTag(takePhotoPath5); ivElse.setImageBitmap(bitmap);//显示图像 } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java index 6255645..19012bc 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java @@ -29,6 +29,7 @@ import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.PictureActivity; +import com.navinfo.outdoor.activity.PicturesActivity; import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseDrawerFragment; import com.navinfo.outdoor.bean.RoadExtend; @@ -286,7 +287,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick break; case R.id.tv_pictures: - Intent intent = new Intent(getContext(), PictureActivity.class); + Intent intent = new Intent(getContext(), PicturesActivity.class); startActivity(intent); break; } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java index c0cb769..6990895 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java @@ -30,6 +30,7 @@ import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.PictureActivity; +import com.navinfo.outdoor.activity.PicturesActivity; import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseDrawerFragment; import com.navinfo.outdoor.bean.PoiBean; @@ -293,7 +294,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList break; case R.id.tv_pictures: - Intent intent = new Intent(getContext(), PictureActivity.class); + Intent intent = new Intent(getContext(), PicturesActivity.class); startActivity(intent); break; diff --git a/app/src/main/res/layout/activity_picture.xml b/app/src/main/res/layout/activity_picture.xml index 3a46520..3f6a90c 100644 --- a/app/src/main/res/layout/activity_picture.xml +++ b/app/src/main/res/layout/activity_picture.xml @@ -9,6 +9,7 @@ android:id="@+id/camera" android:layout_width="match_parent" android:layout_height="0dp" + android:keepScreenOn="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/activity_pictures.xml b/app/src/main/res/layout/activity_pictures.xml new file mode 100644 index 0000000..66ed398 --- /dev/null +++ b/app/src/main/res/layout/activity_pictures.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + +