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 b8665a4..9072888 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -31,6 +31,7 @@ public class Constant { public static final String BASE_FOLDER = SdkFolderCreate.getSDPath()+"/navinfoOutDoor"; // 保存图片的目录 public static final String PICTURE_FOLDER = BASE_FOLDER+"/picture"; + public static final String VIDEOS_ = BASE_FOLDER+"/videos"; public static final String POI_DAO = BASE_FOLDER+"/BaseDao/"; // 申请权限的RequestCode public static final int PERMISSION_REQUEST_CODE = 0x100; diff --git a/app/src/main/java/com/navinfo/outdoor/bean/PoiVideoBean.java b/app/src/main/java/com/navinfo/outdoor/bean/PoiVideoBean.java new file mode 100644 index 0000000..0f9698a --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/bean/PoiVideoBean.java @@ -0,0 +1,32 @@ +package com.navinfo.outdoor.bean; + +public class PoiVideoBean { + + private Integer code; + private String message; + private Integer body; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Integer getBody() { + return body; + } + + public void setBody(Integer body) { + this.body = body; + } +} 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 bcf72a2..9ac0e8c 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -399,8 +399,7 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe new Thread(new Runnable() { @Override public void run() { - PoiEntity poiEntity = poiDao.getPoiEntity(taskId); - poiDao.deletePoiEntity(poiEntity); + poiDao.deleteFormTaskID(taskId); } }).start(); btnGetTask.setVisibility(View.VISIBLE); @@ -473,8 +472,7 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe new Thread(new Runnable() { @Override public void run() { - PoiEntity poiEntity = poiDao.getPoiEntity(taskId); - poiDao.deletePoiEntity(poiEntity); + poiDao.deleteFormTaskID(taskId); } }).start(); btnGather.setVisibility(View.VISIBLE); 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 d67233c..8e8887a 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java @@ -364,11 +364,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis new Thread(new Runnable() { @Override public void run() { - if (poiEntity.getTaskId() == 0) { - poiDao.insertPoiEntity(poiEntity); - } else { - poiDao.updatePoiEntity(poiEntity); - } + poiDao.insertPoiEntity(poiEntity); getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -405,21 +401,26 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis if (tagPictures != null) { otherUploadList.add(new File(tagPictures)); } + new Thread(new Runnable() { @Override public void run() { - PoiEntity poiEntity = poiDao.getPoiEntity(showPoiEntity.getTaskId()); - int taskStatus = poiEntity.getTaskStatus(); - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - if (taskStatus == 2) {//保存本地未提交 - Toast.makeText(getActivity(), "请保存本地", Toast.LENGTH_SHORT).show(); - } else if (taskStatus == 3) {//保存本地已提交 - otherUploadByNet(body, otherUploadList); + if (showPoiEntity.getId()!=0){ + PoiEntity poiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); + int taskStatus = poiEntity.getTaskStatus(); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + if (taskStatus == 2) {//保存本地未提交 + Toast.makeText(getActivity(), "请保存本地", Toast.LENGTH_SHORT).show(); + } else if (taskStatus == 3) {//保存本地已提交 + otherUploadByNet(body, otherUploadList); + } } - } - }); + }); + }else { + Toast.makeText(getActivity(), "请保存本地", Toast.LENGTH_SHORT).show(); + } } }).start(); break; @@ -445,6 +446,13 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis dismissLoadingDialog(); Toast.makeText(getActivity(), "上传成功", Toast.LENGTH_SHORT).show(); Log.d("TAG", "onSuccess: " + response.toString() + "sssssssssssss"); +// new Thread(new Runnable() { +// @Override +// public void run() { +// PoiEntity poiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); +// poiDao.deletePoiEntity(poiEntity); +// } +// }).start(); } @Override @@ -485,10 +493,10 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis new Thread(new Runnable() { @Override public void run() { - poiDao.updatePoiEntity(poiEntity); + poiDao.insertPoiEntity(poiEntity); } }).start(); - // Log.d("TAG", " 其他其他其他其他" + poiSaveBean.getBody()); + // Log.d("TAG", " 其他其他其他其他" + poiSaveBean.getBody()); } @Override 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 711a1ab..cc4bf24 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -587,7 +587,6 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe @Override public void onSuccess(PoiSaveBean poiSaveBean, int id) { dismissLoadingDialog(); - body = poiSaveBean.getBody(); Toast.makeText(getActivity(), "保存成功", Toast.LENGTH_SHORT).show(); Log.d("TAG", "onSuccess: "+poiSaveBean.getBody()); 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 9f84422..50cd196 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java @@ -24,17 +24,33 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import com.github.lazylibrary.util.ZipUtil; import com.google.gson.Gson; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; +import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; +import com.kongzue.dialog.util.BaseDialog; +import com.kongzue.dialog.util.DialogSettings; +import com.kongzue.dialog.v3.MessageDialog; +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.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.OtherUploadPicBean; +import com.navinfo.outdoor.bean.PoiSaveBean; +import com.navinfo.outdoor.bean.PoiVideoBean; import com.navinfo.outdoor.bean.RoadExtend; +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; import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiEntity; @@ -45,6 +61,7 @@ import org.greenrobot.eventbus.EventBus; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -56,7 +73,7 @@ import java.util.List; public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClickListener { private TextView tvPictures; private EditText etRoadName; - private ImageView ivRoadPicture; + private ImageView ivPoiVideoPicture; private RadioButton rbCar; private RadioButton rbBicycle; private RadioButton rbWalking; @@ -69,7 +86,11 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick private PoiEntity showPoiEntity; private RelativeLayout linearExist; private Spinner spinnerExist; - String[] spinner = new String[]{"存在","不存在","无法验证"}; + String[] spinner = new String[]{"存在", "不存在", "无法验证"}; + private Integer poiVideoBody; + private File videoFile; + private Button roadUpload; + private String videoPath; public static PoiVideoFragment newInstance(Bundle bundle) { PoiVideoFragment fragment = new PoiVideoFragment(); @@ -94,20 +115,20 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick @Override public void onClick(View v) { Bundle arguments = getArguments(); - if (arguments!=null) { - isSliding= arguments.getBoolean("isSliding",true); - Log.d("TAG", "onCreatessss: "+isSliding); + if (arguments != null) { + isSliding = arguments.getBoolean("isSliding", true); + Log.d("TAG", "onCreatessss: " + isSliding); } if (isSliding) { // 监听到返回按钮点击事件 Message obtain = Message.obtain(); - obtain.what= Constant.TREASURE_FRAGMENT; - obtain.obj=isSliding; + obtain.what = Constant.TREASURE_FRAGMENT; + obtain.obj = isSliding; EventBus.getDefault().post(obtain); Message mainButtonVisiableMsg = Message.obtain(); - mainButtonVisiableMsg.what= Constant.MAIN_BUTTON_VISIABLE; - mainButtonVisiableMsg.obj= View.VISIBLE; + mainButtonVisiableMsg.what = Constant.MAIN_BUTTON_VISIABLE; + mainButtonVisiableMsg.obj = View.VISIBLE; EventBus.getDefault().post(mainButtonVisiableMsg); } onBackPressed(); @@ -116,8 +137,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } - - @Override protected void initView() { super.initView(); @@ -126,7 +145,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick tvPictures = (TextView) findViewById(R.id.tv_pictures); tvPictures.setOnClickListener(this::onClick); etRoadName = (EditText) findViewById(R.id.et_road_name); - ivRoadPicture = (ImageView) findViewById(R.id.iv_road_picture); + ivPoiVideoPicture = (ImageView) findViewById(R.id.iv_road_picture); rbCar = (RadioButton) findViewById(R.id.rb_car); rbBicycle = (RadioButton) findViewById(R.id.rb_bicycle); rbWalking = (RadioButton) findViewById(R.id.rb_walking); @@ -134,6 +153,8 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick etDesc = (EditText) findViewById(R.id.et_desc); btnRoadSave = (Button) findViewById(R.id.btn_road_save); btnRoadSave.setOnClickListener(this::onClick); + roadUpload = findViewById(R.id.road_upload); + roadUpload.setOnClickListener(this::onClick); rgType = (RadioGroup) findViewById(R.id.rg_type); linearExist = findViewById(R.id.linear_exist); spinnerExist = findViewById(R.id.spinner_exist); @@ -158,7 +179,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } }); - ivRoadPicture.setOnClickListener(new View.OnClickListener() { + ivPoiVideoPicture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.getTag() == null) { @@ -171,12 +192,33 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick startActivityForResult(intent, 0x101); } }); - + ivPoiVideoPicture.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + DialogSettings.style = DialogSettings.STYLE.STYLE_KONGZUE; + MessageDialog.show((AppCompatActivity) getContext(), "提示", "对否删除", "确定", "取消").setOkButton(new OnDialogButtonClickListener() { + @Override + public boolean onClick(BaseDialog baseDialog, View v) { + if (videoFile != null) { + videoFile.delete(); + //获取文件名 + String csvFileName = videoFile.getName() + ".txt"; + File cavFile = new File(videoFile.getParent(), csvFileName); + cavFile.delete(); + ivPoiVideoPicture.setImageDrawable(null); + } + return false; + } + }); + return false; + } + }); //添加数据 initShowPoi(); //禁用可操作性控件 // disables(); } + private void initShowPoi() { // 添加信息: showPoiEntity = (PoiEntity) getArguments().getSerializable("poiEntity"); @@ -186,9 +228,9 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick etRoadName.setText(name + ""); } String extend = showPoiEntity.getExtend(); - if (extend!=null&&!extend.equals("")){ + if (extend != null && !extend.equals("")) { RoadExtend roadExtend = new Gson().fromJson(extend, RoadExtend.class); - int type= roadExtend.getType(); + int type = roadExtend.getType(); showPictureType(type); } linearExist.setVisibility(View.VISIBLE); @@ -197,20 +239,21 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick etDesc.setText(describe); } String photo = showPoiEntity.getPhoto(); - if (photo!=null) { + if (photo != null) { File videoFile = new File(photo); if (videoFile.exists()) { // 使用glide加载视频的第一帧 - AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivRoadPicture, 500); - ivRoadPicture.setTag(videoFile); + AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivPoiVideoPicture, 500); + ivPoiVideoPicture.setTag(videoFile); } } } } + private void disables() { etRoadName.setEnabled(false); rgType.setEnabled(false); - ivRoadPicture.setEnabled(false); + ivPoiVideoPicture.setEnabled(false); tvPictures.setEnabled(false); etDesc.setEnabled(false); btnRoadSave.setEnabled(false); @@ -219,7 +262,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick @Override protected void initData() { super.initData(); - // infos = new ArrayList<>(); + // infos = new ArrayList<>(); } /** @@ -264,9 +307,9 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } RoadExtend roadExtend = new RoadExtend(); int type = getPictureType(); - if (type== -1){ + if (type == -1) { Toast.makeText(getContext(), "请选择拍照方式", Toast.LENGTH_SHORT).show(); - return; + return; } roadExtend.setType(type); Gson gson = new Gson(); @@ -278,13 +321,13 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } else { poiEntity.setDescribe(desc); } - if (showPoiEntity!=null){ - if (showPoiEntity.getTaskId()!=0){ + if (showPoiEntity != null) { + if (showPoiEntity.getTaskId() != 0) { poiEntity.setTaskId(showPoiEntity.getTaskId()); } } - if (ivRoadPicture.getTag()!=null) { - File videoFile = (File) ivRoadPicture.getTag(); + if (ivPoiVideoPicture.getTag() != null) { + File videoFile = (File) ivPoiVideoPicture.getTag(); poiEntity.setPhoto(videoFile.getAbsolutePath()); } DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -298,13 +341,16 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick new Thread(new Runnable() { @Override public void run() { - if (showPoiEntity != null) { - poiDao.updatePoiEntity(poiEntity); - } poiDao.insertPoiEntity(poiEntity); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + poiVideoSave(poiEntity); + } + }); } }).start(); - onBackPressed(); + //onBackPressed(); } } @@ -316,7 +362,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick XXPermissions.startPermissionActivity(getActivity(), permissions); } } - }); break; @@ -325,22 +370,98 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String videoFormatName = formatter.format(new Date()); Intent intent = new Intent(getContext(), PictureActivity.class); - intent.putExtra(Constant.INTENT_VIDEO_PATH, Constant.PICTURE_FOLDER+"/"+videoFormatName+".mp4"); + intent.putExtra(Constant.INTENT_VIDEO_PATH, Constant.PICTURE_FOLDER + "/" + videoFormatName + ".mp4"); startActivityForResult(intent, 0x101); break; + + case R.id.road_upload: + ArrayList files = new ArrayList<>(); + if (videoFile != null) { + files.add(videoFile); + } + File file = new File(Constant.PICTURE_FOLDER, "files" + ".zip"); + ZipUtil.zipFiles(files, file, new ZipUtil.ZipListener() { + @Override + public void zipProgress(int zipProgress) { + if (zipProgress == 100) { + + } + } + }); + poiVideoUpload(); + break; } } + private void poiVideoUpload() { +// OkGo +// // 请求方式和请求url +// .post(HttpInterface.POI_VIDEO_UPLOAD_PIC) +// // 请求的 tag, 主要用于取消对应的请求 +// .params("auditId", ) +// .addFileParams("file",) +// .tag(this) +// .execute(new DialogCallback(OtherUploadPicBean.class) { +// @Override +// public void onSuccess(Response otherUploadPicBeanResponse) { +// dismissLoadingDialog(); +// Toast.makeText(getActivity(), "上传成功", Toast.LENGTH_SHORT).show(); +// Log.d("TAG", "onSuccess: " + otherUploadPicBeanResponse.toString() + "sssssssssssss"); +// +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// dismissLoadingDialog(); +// Toast.makeText(getActivity(), response.code()+"", Toast.LENGTH_SHORT).show(); +// Log.d("TAG", "onError: " + response.code()+""); +// } +// }); + } + + private void poiVideoSave(PoiEntity poiEntity) { + showLoadingDialog(); + OkGoBuilder.getInstance() + .Builder(getActivity()) + .url(HttpInterface.INSIDE_API_LIST) + .method(OkGoBuilder.GET) + .cls(PoiVideoBean.class) + .callback(new Callback() { + @Override + public void onSuccess(PoiVideoBean poiVideoBean, int id) { + dismissLoadingDialog(); + poiVideoBody = poiVideoBean.getBody(); + poiEntity.setTaskStatus(3); + poiEntity.setBodyId(poiVideoBody); + new Thread(new Runnable() { + @Override + public void run() { + poiDao.insertPoiEntity(poiEntity); + } + }).start(); + Toast.makeText(getActivity(), "保存成功", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onError(Throwable e, int id) { + dismissLoadingDialog(); + Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); + Log.d("TAG", "onError: " + e.getMessage()); + } + }).build(); + } + @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (requestCode == 0x101&&resultCode == 0x101) { - if (data!=null&&data.hasExtra(Constant.INTENT_VIDEO_PATH)) { - String videoPath = data.getStringExtra(Constant.INTENT_VIDEO_PATH); - File videoFile = new File(videoPath); + if (requestCode == 0x101 && resultCode == 0x101) { + if (data != null && data.hasExtra(Constant.INTENT_VIDEO_PATH)) { + videoPath = data.getStringExtra(Constant.INTENT_VIDEO_PATH); + videoFile = new File(videoPath); if (videoFile.exists()) { - AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivRoadPicture, 500); - ivRoadPicture.setTag(videoFile); + AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivPoiVideoPicture, 500); + ivPoiVideoPicture.setTag(videoFile); } } } @@ -353,9 +474,9 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } /** - *防止程序崩溃后数据丢失 + * 防止程序崩溃后数据丢失 */ - public void initPoiVideoSharePre(){ + public void initPoiVideoSharePre() { //获取SharedPreferences对象,方法中两个参数的意思为:第一个name //表示文件名,系统将会在/dada/dada/包名/shared_prefs目录下生成 //一个以该参数命名的.xml文件。第二个mode表示创建的模式,通过查看 @@ -382,8 +503,8 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick if (desc != null && !desc.equals("")) { poiEntity.setDescribe(desc); } - if (showPoiEntity!=null){ - if (showPoiEntity.getTaskId()!=0){ + if (showPoiEntity != null) { + if (showPoiEntity.getTaskId() != 0) { poiEntity.setTaskId(showPoiEntity.getTaskId()); } } @@ -400,7 +521,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick edit.putString("poiEntity", newPoiEntity); //提交新值。必须执行,否则前面的操作都无效。 edit.commit(); - Log.d("TAG", "initRoadSharePre: "+newPoiEntity); + Log.d("TAG", "initRoadSharePre: " + newPoiEntity); } @@ -412,13 +533,14 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick return 1; } else if (rbWalking != null && rbWalking.isChecked()) { return 2; - }else if (rbManual != null && rbManual.isChecked()) { + } else if (rbManual != null && rbManual.isChecked()) { return 3; } return -1; } - private void showPictureType(int type){ - switch (type){ + + private void showPictureType(int type) { + switch (type) { case 0: rbCar.setChecked(true); 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 fdf58e9..67db5ef 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.media.MediaMetadataRetriever; +import android.net.Uri; import android.os.Bundle; import android.os.Message; import android.util.Log; @@ -22,6 +23,7 @@ import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.bumptech.glide.Glide; import com.google.gson.Gson; @@ -38,15 +40,18 @@ import com.navinfo.outdoor.bean.RoadExtend; import com.navinfo.outdoor.room.PoiDao; import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiEntity; +import com.navinfo.outdoor.util.AWMp4ParserHelper; import org.greenrobot.eventbus.EventBus; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; import java.util.List; /** @@ -157,6 +162,19 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList public void onNothingSelected(AdapterView parent) { } }); + ivRoadPicture.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (v.getTag() == null) { + Toast.makeText(getActivity(), "还没有拍摄视频!", Toast.LENGTH_SHORT).show(); + return; + } + File videoFile = (File) v.getTag(); + Intent intent = new Intent(getContext(), PictureActivity.class); + intent.putExtra(Constant.INTENT_VIDEO_PATH, videoFile.getAbsolutePath()); + startActivityForResult(intent, 0x101); + } + }); //数据展示 initShowPoi(); //禁用可操作性控件 @@ -182,7 +200,17 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList if (describe != null && !describe.equals("")) { etDesc.setText(describe); } + String photo = showPoiEntity.getPhoto(); + if (photo!=null) { + File videoFile = new File(photo); + if (videoFile.exists()) { + // 使用glide加载视频的第一帧 + AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivRoadPicture, 500); + ivRoadPicture.setTag(videoFile); + } + } } + } //禁用控件 private void disables() throws JSONException { @@ -261,6 +289,10 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList poiEntity.setTaskId(showPoiEntity.getTaskId()); } } + if (ivRoadPicture.getTag()!=null) { + File videoFile = (File) ivRoadPicture.getTag(); + poiEntity.setPhoto(videoFile.getAbsolutePath()); + } DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); @@ -295,13 +327,30 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList break; case R.id.tv_pictures: + // 根据用户点击的时间为视频名称赋值 + DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String videoFormatName = formatter.format(new Date()); Intent intent = new Intent(getContext(), PictureActivity.class); - startActivity(intent); + intent.putExtra(Constant.INTENT_VIDEO_PATH, Constant.PICTURE_FOLDER+"/"+videoFormatName+".mp4"); + startActivityForResult(intent, 0x101); break; } } - + @Override + public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 0x101&&resultCode == 0x101) { + if (data!=null&&data.hasExtra(Constant.INTENT_VIDEO_PATH)) { + String videoPath = data.getStringExtra(Constant.INTENT_VIDEO_PATH); + File videoFile = new File(videoPath); + if (videoFile.exists()) { + AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivRoadPicture, 500); + ivRoadPicture.setTag(videoFile); + } + } + } + } @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); 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 23393d6..b0d4382 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -103,4 +103,18 @@ public class HttpInterface { //172.23.139.4:8003/poitask/1/uploadpic public static final String POI_TASK_UPLOAD_PIC=IPm13+"uploadpic";//poi-上传 + + public static final String IPm14 = "http://172.23.139.4:8003/poivideotask/1/"; + + // 172.23.139.4:8003/poivideotask/1/submitPoivideotask + public static final String INSIDE_API_LIST = IPm14+"submitPoivideotask";//poi录像 保存 + + //172.23.139.4:8003/poivideotask/1/uploadpic + public static final String POI_VIDEO_UPLOAD_PIC = IPm14+"uploadpic";//poi录像-上传 + + + + + + } diff --git a/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java b/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java index 2427334..5772f77 100644 --- a/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java +++ b/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java @@ -31,8 +31,8 @@ public interface PoiDao { List getAllTaskStatus(int taskStatus, int taskStatus1, int type, int type1, int isExclusive, int isExclusive1); - @Query("SELECT * FROM poi where taskId=:taskId") - PoiEntity getPoiEntity(int taskId); + @Query("SELECT * FROM poi where id=:id") + PoiEntity getPoiEntity(int id); /** * 添加 * @@ -82,6 +82,9 @@ public interface PoiDao { @Query("DELETE FROM poi where taskId=:taskId") void deleteFormTaskID(int taskId); + + @Query("DELETE FROM poi where id =:id") + void deleteFormID(int id); /** * 全部删除 */ diff --git a/app/src/main/res/layout/poi_video_fragment.xml b/app/src/main/res/layout/poi_video_fragment.xml index 3b78d3d..4be3e39 100644 --- a/app/src/main/res/layout/poi_video_fragment.xml +++ b/app/src/main/res/layout/poi_video_fragment.xml @@ -1,7 +1,11 @@ - - \ No newline at end of file + \ No newline at end of file