diff --git a/app/build.gradle b/app/build.gradle index 1307bc8..3e90d45 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 b19ea0d..4eab927 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,7 +47,6 @@ android:supportsRtl="true" android:theme="@style/Theme.WhiteScreen" tools:targetApi="n"> - diff --git a/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java b/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java index 7043b58..441f146 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java @@ -22,6 +22,7 @@ import com.navinfo.outdoor.fragment.MapDownloadFragment; import com.navinfo.outdoor.fragment.MessageFragment; import com.navinfo.outdoor.fragment.MineFragment; import com.navinfo.outdoor.fragment.OtherFragment; +import com.navinfo.outdoor.fragment.PhotoFragment; import com.navinfo.outdoor.fragment.PoiFragment; import com.navinfo.outdoor.fragment.PoiTaskFragment; import com.navinfo.outdoor.fragment.PrivilegeFragment; @@ -37,6 +38,7 @@ import com.navinfo.outdoor.fragment.TaskPrefectureFragment; import com.navinfo.outdoor.fragment.RegisterFragment; import com.navinfo.outdoor.fragment.TreasureFragment; import com.navinfo.outdoor.fragment.UserAttestationFragment; +import com.navinfo.outdoor.fragment.VideoFragment; import com.navinfo.outdoor.fragment.WithdrawFragment; import com.gyf.immersionbar.ImmersionBar; import com.navinfo.outdoor.fragment.WithdrawalRecordFragment; @@ -87,6 +89,8 @@ public class FragmentManagement extends BaseActivity { private OtherFragment otherFragment;//寻宝-上传-其他的fragment -33 private ChargingPileFragment chargingPileFragment;//寻宝-上传-充电站-充电桩的fragment-34 private MessageFragment messageFragment;//寻宝 -消息的fragment -35 + private PhotoFragment photoFragment;//查看详情-图片-36 + private VideoFragment videoFragment;//查看详情-视频-37 @Override protected int getLayout() { @@ -174,9 +178,12 @@ public class FragmentManagement extends BaseActivity { fragmentTransaction.hide(otherFragment); if (chargingPileFragment!=null)//寻宝-上传-充电站-充电桩的fragment-34 fragmentTransaction.hide(chargingPileFragment); - if (messageFragment!=null){//寻宝 -消息的Fragment -35 + if (messageFragment!=null)//寻宝 -消息的Fragment -35 fragmentTransaction.hide(messageFragment); - } + if (photoFragment!=null)//查看详情-图片 36 + fragmentTransaction.hide(photoFragment); + if (videoFragment!=null)//查看详情-视频 37 + fragmentTransaction.hide(videoFragment); } @@ -470,6 +477,26 @@ public class FragmentManagement extends BaseActivity { fragmentTransaction.show(messageFragment); } break; + case 36://查看详情-图片 + if (photoFragment == null){ + Bundle bundle = new Bundle(); + bundle.putSerializable("showPoiEntity",getIntent().getSerializableExtra("showPoiEntity")); + photoFragment = PhotoFragment.newInstance(bundle); + fragmentTransaction.add(R.id.frame_layout,photoFragment); + }else { + fragmentTransaction.show(photoFragment); + } + break; + case 37://查看详情-视频 + if (videoFragment==null){ + Bundle bundle = new Bundle(); + bundle.putSerializable("showPoiEntity",getIntent().getSerializableExtra("showPoiEntity")); + videoFragment=VideoFragment.newInstance(bundle); + fragmentTransaction.add(R.id.frame_layout,videoFragment); + }else { + fragmentTransaction.show(videoFragment); + } + break; } fragmentTransaction.commit(); } diff --git a/app/src/main/java/com/navinfo/outdoor/activity/LoginActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/LoginActivity.java index e113d62..a7de253 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/LoginActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/LoginActivity.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; +import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; @@ -38,6 +39,18 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener private android.widget.EditText etLoginPaw; private SharedPreferences.Editor navInfoEditor; private CheckBox cbStatement; + private Handler handler=new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(@NonNull Message msg) { + if (msg.what==0x103){ + if (btnLogin!=null){ + btnLogin.setEnabled(true); + } + } + return false; + } + }); + private Button btnLogin; @Override public void onStart() { @@ -79,7 +92,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener etLoginPaw = findViewById(R.id.et_login_paw); TextView tvForgetPaw = findViewById(R.id.tv_forget_paw); cbStatement = findViewById(R.id.iv_login_check); - Button btnLogin = findViewById(R.id.btn_login); + btnLogin = findViewById(R.id.btn_login); btnLogin.setOnClickListener(this); TextView tvStatement = findViewById(R.id.tv_statement); tvStatement.setOnClickListener(this); @@ -110,6 +123,10 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener startActivity(forgetPaw); break; case R.id.btn_login: + btnLogin.setEnabled(false); + Message message = new Message(); + message.what=0x103; + handler.sendMessageDelayed(message,500); String name = etLoginName.getText().toString().trim(); if (name.equals("")) { Toast.makeText(this, "请输入账号", Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java deleted file mode 100644 index 577cf4c..0000000 --- a/app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.navinfo.outdoor.activity; - -import androidx.recyclerview.widget.GridLayoutManager; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; -import com.jcodecraeer.xrecyclerview.XRecyclerView; -import com.navinfo.outdoor.R; -import com.navinfo.outdoor.adapter.PhotoAlbumAdapter; -import com.navinfo.outdoor.base.BaseActivity; -import com.navinfo.outdoor.room.PoiEntity; -import com.navinfo.outdoor.util.AWMp4ParserHelper; - -import java.io.File; -import java.io.Serializable; -import java.util.List; - -public class PhotoAlbumActivity extends BaseActivity implements View.OnClickListener { - - private android.widget.ImageView ivPhotoFinal; - private android.widget.TextView tvPhotoAlbumDelete,tvPhotoChoose; - private com.jcodecraeer.xrecyclerview.XRecyclerView photoAlbumRecycler; - private PhotoAlbumAdapter photoAlbumAdapter; - private List fileListByUUID; - - @Override - protected int getLayout() { - return R.layout.activity_photo_album; - } - - @Override - protected void initView() { - super.initView(); - PoiEntity showPoiEntity = (PoiEntity) getIntent().getSerializableExtra("showPoiEntity"); - if (showPoiEntity!=null){ - String id = showPoiEntity.getId(); - if (showPoiEntity.getRecord_way()==1){ - fileListByUUID = AWMp4ParserHelper.getInstance().getVideoFileListByUUID(id); - }else if (showPoiEntity.getRecord_way()==2){ - fileListByUUID=AWMp4ParserHelper.getInstance().getJPGFileListByUUID(id); - - } - } - ivPhotoFinal = (ImageView) findViewById(R.id.iv_photo_final); - ivPhotoFinal.setOnClickListener(this::onClick); - tvPhotoChoose = (TextView) findViewById(R.id.tv_photo_choose); - tvPhotoChoose.setOnClickListener(this::onClick); - tvPhotoAlbumDelete = (TextView) findViewById(R.id.tv_photo_album_delete); - tvPhotoAlbumDelete.setOnClickListener(this::onClick); - photoAlbumRecycler = (XRecyclerView) findViewById(R.id.photo_album_recycler); - photoAlbumRecycler.setLayoutManager(new GridLayoutManager(this,4)); - photoAlbumAdapter = new PhotoAlbumAdapter(fileListByUUID,this); - photoAlbumRecycler.setAdapter(photoAlbumAdapter); - } - - @Override - protected void initData() { - super.initData(); - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.iv_photo_final: - finish(); - break; - - case R.id.tv_photo_album_delete: - //photoAlbumAdapter.setDeletePhoto(); - break; - - case R.id.tv_photo_choose: - - break; - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java new file mode 100644 index 0000000..5e0a122 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java @@ -0,0 +1,84 @@ +package com.navinfo.outdoor.adapter; + +import android.content.Context; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.util.AWMp4ParserHelper; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.List; + +/** + * 查看拍照成果的activity + */ + +public class PhotoAdapter extends RecyclerView.Adapter { + private List files ; + private Context context; + + public PhotoAdapter(List files, Context context) { + this.files = files; + this.context = context; + } + @NotNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View inflate = LayoutInflater.from(context).inflate(R.layout.photo_item, parent, false); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + File file= files.get(position); + if (file.exists()) { + AWMp4ParserHelper.getInstance().loadFirstWithGlide(context, Uri.fromFile(file).toString(), holder.ivPhoto, 500); + } + holder.cbPhoto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + + } + }); + + + } + @Override + public int getItemCount() { + return files.size(); + } + + static class ViewHolder extends RecyclerView.ViewHolder { + private ImageView ivPhoto; + private CheckBox cbPhoto; + + public ViewHolder(@NonNull @NotNull View itemView) { + super(itemView); + ivPhoto = itemView.findViewById(R.id.iv_photo); + cbPhoto = itemView.findViewById(R.id.check_photo); + } + } + + public photoClickItem photoClickItem; + + public void setPhotoClickItem(photoClickItem photoClickItem) { + this.photoClickItem = photoClickItem; + } + + public interface photoClickItem { + void item(int aInt); + } + + +} diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAlbumAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAlbumAdapter.java deleted file mode 100644 index 3aa87d4..0000000 --- a/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAlbumAdapter.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.navinfo.outdoor.adapter; - -import android.content.Context; -import android.net.Uri; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.ImageView; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; -import com.bumptech.glide.Glide; -import com.navinfo.outdoor.R; -import com.navinfo.outdoor.room.PoiDatabase; -import com.navinfo.outdoor.room.PoiEntity; -import com.navinfo.outdoor.util.AWMp4ParserHelper; - -import org.jetbrains.annotations.NotNull; - -import java.io.File; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -/** - * 查看拍照成果的activity - */ - -public class PhotoAlbumAdapter extends RecyclerView.Adapter { - private List files ; - private Context context; - - public PhotoAlbumAdapter(List files, Context context) { - this.files = files; - this.context = context; - } - - - - Handler handler = new Handler() { - @Override - public void handleMessage(@NonNull @NotNull Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case 0x107: - notifyDataSetChanged(); - break; - } - } - }; - - @NonNull - @NotNull - @Override - public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) { - View inflate = LayoutInflater.from(context).inflate(R.layout.photo_album_item, parent, false); - return new ViewHolder(inflate); - } - - @Override - public void onBindViewHolder(@NonNull @NotNull ViewHolder holder, int position) { - File file= files.get(position); - if (file.exists()) { - AWMp4ParserHelper.getInstance().loadFirstWithGlide(context, Uri.fromFile(file).toString(), holder.ivPhoto, 500); - } - - //点击每个条目 - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (photoClickItem != null) { - photoClickItem.item(position); - } - } - }); - holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - holder.cbPhoto.setVisibility(View.VISIBLE); - holder.cbPhoto.setChecked(true); - return false; - } - }); - - - } - @Override - public int getItemCount() { - return files.size(); - } - - class ViewHolder extends RecyclerView.ViewHolder { - private ImageView ivPhoto; - private CheckBox cbPhoto; - - public ViewHolder(@NonNull @NotNull View itemView) { - super(itemView); - ivPhoto = itemView.findViewById(R.id.iv_photo_album); - cbPhoto = itemView.findViewById(R.id.cb_photo_album); - } - } - - public photoClickItem photoClickItem; - - public void setPhotoClickItem(photoClickItem photoClickItem) { - this.photoClickItem = photoClickItem; - } - - public interface photoClickItem { - void item(int aInt); - } - - -} diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/VideoAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/VideoAdapter.java new file mode 100644 index 0000000..5e20f3b --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/adapter/VideoAdapter.java @@ -0,0 +1,84 @@ +package com.navinfo.outdoor.adapter; + +import android.content.Context; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.util.AWMp4ParserHelper; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.List; + +/** + * 查看录像成果的activity + */ + +public class VideoAdapter extends RecyclerView.Adapter { + private List files ; + private Context context; + + public VideoAdapter(List files, Context context) { + this.files = files; + this.context = context; + } + + @NotNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View inflate = LayoutInflater.from(context).inflate(R.layout.video_item, parent, false); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + File file= files.get(position); + if (file.exists()) { + AWMp4ParserHelper.getInstance().loadFirstWithGlide(context, Uri.fromFile(file).toString(), holder.ivVideo, 500); + } + + holder.cbVideo.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + + } + }); + } + @Override + public int getItemCount() { + return files.size(); + } + + class ViewHolder extends RecyclerView.ViewHolder { + private ImageView ivVideo; + private CheckBox cbVideo; + + public ViewHolder(@NonNull @NotNull View itemView) { + super(itemView); + ivVideo = itemView.findViewById(R.id.iv_video); + cbVideo = itemView.findViewById(R.id.check_video); + } + } + + public photoClickItem photoClickItem; + + public void setPhotoClickItem(photoClickItem photoClickItem) { + this.photoClickItem = photoClickItem; + } + + public interface photoClickItem { + void item(int aInt); + } + + +} 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 19f3350..47ada11 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -35,7 +35,6 @@ public class Constant { public static final String GET_ERR_MESSAGE2 = "manifest 中配置的 key 不正确"; public static final String GET_ERR_MESSAGE3 = "自动加载libtencentloc.so失败"; - public static final String ROOT_FOLDER = SdkFolderCreate.getSDPath() + "/navinfoOutDoor"; public static String BASE_FOLDER = ROOT_FOLDER; // 保存图片的目录 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 eb1b2f0..9d986b7 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java @@ -900,10 +900,11 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. private void saveChargingPileByChargingStation(PoiEntity chargingStationPoiEntity) { if (chargingStationPoiEntity != null) { List chargingPileEntityList = PoiDatabase.getInstance(getActivity()).getChargingPileDao().getChargingPileByStationId(chargingStationPoiEntity.getId()); + PoiEntity poiEntity = PoiDatabase.getInstance(getActivity()).getPoiDao().getPoiEntity(chargingStationPoiEntity.getId()); if (chargingPileEntityList != null && !chargingPileEntityList.isEmpty()) { for (ChargingPileEntity pileEntity : chargingPileEntityList) { if (pileEntity.getBodyId() == 0) { - saveChargingPileByWork(pileEntity); + saveChargingPileByWork(pileEntity,poiEntity.getBodyId()); } } } @@ -1357,14 +1358,14 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. /** * 上传充电桩数据到服务端 */ - private void saveChargingPileByWork(ChargingPileEntity chargingPileEntity) { + private void saveChargingPileByWork(ChargingPileEntity chargingPileEntity, int bodyId) { HttpParams httpParams = new HttpParams(); httpParams.put("taskId", chargingPileEntity.getTaskId()); httpParams.put("name", chargingPileEntity.getName()); httpParams.put("existence", chargingPileEntity.getExist()); httpParams.put("geo", chargingPileEntity.getP()); httpParams.put("memo", chargingPileEntity.getMemo()); - httpParams.put("ffid", chargingPileEntity.getFid()); + httpParams.put("ffid", bodyId); HashMap hashMap = new HashMap<>(); hashMap.put("cp_openType", chargingPileEntity.getCp_openType()); hashMap.put("cp_floor", chargingPileEntity.getCp_floor()); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java new file mode 100644 index 0000000..1c2b550 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java @@ -0,0 +1,85 @@ +package com.navinfo.outdoor.fragment; + +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.jcodecraeer.xrecyclerview.XRecyclerView; +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.adapter.PhotoAdapter; +import com.navinfo.outdoor.base.BaseFragment; +import com.navinfo.outdoor.room.PoiEntity; +import com.navinfo.outdoor.util.AWMp4ParserHelper; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * 图片-fragment + */ +public class PhotoFragment extends BaseFragment implements View.OnClickListener { + + + private List fileArrayList; + + public static PhotoFragment newInstance(Bundle bundle) { + PhotoFragment fragment = new PhotoFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + protected int getLayout() { + return R.layout.fragment_photo; + } + + @Override + protected void initView() { + super.initView(); + PoiEntity showPoiEntity = (PoiEntity) Objects.requireNonNull(getActivity()).getIntent().getSerializableExtra("showPoiEntity"); + + if (showPoiEntity!=null){ + String id = showPoiEntity.getId(); + if (showPoiEntity.getRecord_way()==2){//連拍 + fileArrayList = new ArrayList<>(); + List fileListByUUID = AWMp4ParserHelper.getInstance().getVideoFileListByUUID(id); + for (int i = 0; i < fileListByUUID.size(); i++) { + if (!fileListByUUID.get(i).getPath().contains(".txt")){ + fileArrayList.add(fileListByUUID.get(i)); + } + } + } + } + ImageView ivPhotoFinal = (ImageView) findViewById(R.id.iv_photo_final); + ivPhotoFinal.setOnClickListener(this); + TextView tvPhotoChoose = (TextView) findViewById(R.id.tv_photo_choose); + tvPhotoChoose.setOnClickListener(this); + TextView tvPhotoAlbumDelete = (TextView) findViewById(R.id.tv_photo_album_delete); + tvPhotoAlbumDelete.setOnClickListener(this); + RecyclerView photoRecycler = findViewById(R.id.photo_album_recycler); + photoRecycler.setLayoutManager(new GridLayoutManager(getContext(),2)); + PhotoAdapter photoAdapter = new PhotoAdapter(fileArrayList, getContext()); + photoRecycler.setAdapter(photoAdapter); + } + + @Override + protected void initData() { + super.initData(); + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.iv_photo_final: + Objects.requireNonNull(getActivity()).finish(); + break; + + } + } +} 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 c351fe2..5b5450a 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java @@ -2,24 +2,17 @@ package com.navinfo.outdoor.fragment; 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; -import android.view.LayoutInflater; import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.RadioGroup; -import android.widget.RelativeLayout; -import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; @@ -42,7 +35,6 @@ import com.kongzue.dialog.v3.MessageDialog; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.FragmentManagement; -import com.navinfo.outdoor.activity.PhotoAlbumActivity; import com.navinfo.outdoor.activity.PictureActivity; import com.navinfo.outdoor.activity.PicturesActivity; import com.navinfo.outdoor.api.Constant; @@ -65,12 +57,13 @@ import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; import com.tencent.tencentmap.mapsdk.maps.model.LatLng; import com.tencent.tencentmap.mapsdk.maps.model.Marker; import com.tencent.tencentmap.mapsdk.maps.model.MarkerOptions; + import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; + import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Objects; @@ -173,9 +166,9 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick Button btnPoiVideoUpload = findViewById(R.id.btn_poi_video_upload); btnPoiVideoUpload.setOnClickListener(this); rgType = (RadioGroup) findViewById(R.id.rg_type); - rbCar =findViewById(R.id.rb_car); - rbBicycle =findViewById(R.id.rb_bicycle); - rbWalking =findViewById(R.id.rb_walking); + rbCar = findViewById(R.id.rb_car); + rbBicycle = findViewById(R.id.rb_bicycle); + rbWalking = findViewById(R.id.rb_walking); rbManual = findViewById(R.id.rb_manual); tvPhotoAlbum = findViewById(R.id.tv_photo_album); tvPhotoAlbum.setOnClickListener(this::onClick); @@ -188,7 +181,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick case R.id.rb_bicycle: case R.id.rb_walking: tvPicture.setVisibility(View.VISIBLE); - break; + break; case R.id.rb_manual: tvPicture.setVisibility(View.GONE); break; @@ -239,7 +232,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } int work_type = showPoiEntity.getWork_type(); showPictureType(work_type); - if (work_type==3){ + if (work_type == 3) { tvPicture.setVisibility(View.GONE); } String describe = showPoiEntity.getMemo();//任务描述 @@ -268,7 +261,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } } else if (record_way == 2) {//连拍 isRequest = 0x102; - if (work_type==3){ + if (work_type == 3) { showWorkType(work_type); } tvPicture.setEnabled(false); @@ -296,7 +289,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } private void showWorkType(int work_type) { - switch (work_type){ + switch (work_type) { case 0: rgType.setEnabled(false); rbCar.setEnabled(true); @@ -351,7 +344,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } } - @Override public void onClick(View v) { switch (v.getId()) { @@ -364,7 +356,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick File filePath = AWMp4ParserHelper.getInstance().obtainJPGFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); intents.putExtra(Constant.INTENT_JPG_PATH, filePath.getAbsolutePath()); int pictureType = getPictureType(); - intents.putExtra("type",pictureType); + intents.putExtra("type", pictureType); intents.putExtra("poiEntity", showPoiEntity); startActivityForResult(intents, 0x102); break; @@ -413,15 +405,25 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } break; case R.id.tv_photo_album: - if (tvPicture.isEnabled()){ + if (tvPicture.isEnabled() && tvPictures.isEnabled()) {//如果两个都有 + Toast.makeText(getActivity(), "请拍照或者录像!", Toast.LENGTH_SHORT).show(); + return; + } + if (tvPicture.isEnabled()) { showPoiEntity.setRecord_way(1); + Intent photoAlbumIntent = new Intent(getActivity(), FragmentManagement.class); + photoAlbumIntent.putExtra("tag", 37); + photoAlbumIntent.putExtra("showPoiEntity", showPoiEntity); + startActivity(photoAlbumIntent); } - if (tvPictures.isEnabled()){ + if (tvPictures.isEnabled()) { showPoiEntity.setRecord_way(2); + Intent photoAlbumIntent = new Intent(getActivity(), FragmentManagement.class); + photoAlbumIntent.putExtra("tag", 36); + photoAlbumIntent.putExtra("showPoiEntity", showPoiEntity); + startActivity(photoAlbumIntent); } - Intent photoAlbumIntent = new Intent(getActivity(), PhotoAlbumActivity.class); - photoAlbumIntent.putExtra("showPoiEntity",showPoiEntity); - startActivity(photoAlbumIntent); + break; } } @@ -613,7 +615,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick if (data != null && data.hasExtra(Constant.INTENT_PICTURES_PATH)) { int type = data.getIntExtra("type", 0); - if (type==3){ + if (type == 3) { showWorkType(type); } @@ -665,7 +667,7 @@ 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; @@ -765,7 +767,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick @Override protected PoiEntity initPoiEntityByUI(PoiEntity poiEntity) { String roadName = etRoadName.getText().toString().trim(); - if (roadName!= null&&!roadName.equals("")) { + if (roadName != null && !roadName.equals("")) { poiEntity.setName(roadName + ""); } else { DateFormat formatters = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/VideoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/VideoFragment.java new file mode 100644 index 0000000..6496144 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/fragment/VideoFragment.java @@ -0,0 +1,76 @@ +package com.navinfo.outdoor.fragment; + +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.adapter.VideoAdapter; +import com.navinfo.outdoor.base.BaseFragment; +import com.navinfo.outdoor.room.PoiEntity; +import com.navinfo.outdoor.util.AWMp4ParserHelper; + +import java.io.File; +import java.util.List; +import java.util.Objects; + +/** + * 视频-fragment + */ +public class VideoFragment extends BaseFragment implements View.OnClickListener { + + private List fileListByUUID; + + public static VideoFragment newInstance(Bundle bundle) { + VideoFragment fragment = new VideoFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + protected int getLayout() { + return R.layout.fragment_video; + } + + @Override + protected void initView() { + super.initView(); + PoiEntity showPoiEntity = (PoiEntity) Objects.requireNonNull(getActivity()).getIntent().getSerializableExtra("showPoiEntity"); + if (showPoiEntity != null) { + String id = showPoiEntity.getId(); + if (showPoiEntity.getRecord_way() == 2) { + fileListByUUID = AWMp4ParserHelper.getInstance().getVideoFileListByUUID(id); + } + } + ImageView ivPhotoFinal =(ImageView) findViewById(R.id.iv_video_final); + ivPhotoFinal.setOnClickListener(this); + TextView tvPhotoChoose =(TextView) findViewById(R.id.tv_video_choose); + tvPhotoChoose.setOnClickListener(this); + TextView tvPhotoAlbumDelete =(TextView) findViewById(R.id.tv_video_album_delete); + tvPhotoAlbumDelete.setOnClickListener(this); + RecyclerView videoRecycler = findViewById(R.id.video_album_recycler); + videoRecycler.setLayoutManager(new GridLayoutManager(getContext(), 2)); + VideoAdapter videoAdapter = new VideoAdapter(fileListByUUID, getContext()); + videoRecycler.setAdapter(videoAdapter); + + } + + @Override + protected void initData() { + super.initData(); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.iv_video_final: + Objects.requireNonNull(getActivity()).finish(); + break; + + } + } +} diff --git a/app/src/main/java/com/navinfo/outdoor/util/PoiSaveUtils.java b/app/src/main/java/com/navinfo/outdoor/util/PoiSaveUtils.java index 8148191..6e57137 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/PoiSaveUtils.java +++ b/app/src/main/java/com/navinfo/outdoor/util/PoiSaveUtils.java @@ -354,11 +354,13 @@ public class PoiSaveUtils { boolean result = true; if (chargingStationPoiEntity != null) { List chargingPileEntityList = PoiDatabase.getInstance(mContext).getChargingPileDao().getChargingPileByStationId(chargingStationPoiEntity.getId()); + PoiEntity poiEntity = PoiDatabase.getInstance(mContext).getPoiDao().getPoiEntity(chargingStationPoiEntity.getId()); + if (chargingPileEntityList != null && !chargingPileEntityList.isEmpty()) { // 依次上传充电桩数据,如果有一条数据未上传成功,则返回false for (ChargingPileEntity pileEntity : chargingPileEntityList) { if (pileEntity.getBodyId() == 0) { - int saveResult = saveChargingPile2NetWork(pileEntity); + int saveResult = saveChargingPile2NetWork(pileEntity,poiEntity.getBodyId()); if (saveResult == 200) { result = result & true; } else { @@ -375,14 +377,14 @@ public class PoiSaveUtils { /** * 保存充电桩数据到服务端 */ - private int saveChargingPile2NetWork(ChargingPileEntity chargingPileEntity) { + private int saveChargingPile2NetWork(ChargingPileEntity chargingPileEntity, int bodyId) { HttpParams httpParams = new HttpParams(); httpParams.put("taskId", chargingPileEntity.getTaskId()); httpParams.put("name", chargingPileEntity.getName()); httpParams.put("existence", chargingPileEntity.getExist()); httpParams.put("geo", chargingPileEntity.getP()); httpParams.put("memo", chargingPileEntity.getMemo()); - httpParams.put("ffid", chargingPileEntity.getFid()); + httpParams.put("ffid", bodyId); HashMap hashMap = new HashMap<>(); hashMap.put("cp_openType", chargingPileEntity.getCp_openType()); hashMap.put("cp_floor", chargingPileEntity.getCp_floor()); @@ -390,6 +392,7 @@ public class PoiSaveUtils { hashMap.put("sign_exist", chargingPileEntity.getSign_exist()); httpParams.put("detail", String.valueOf(hashMap)); try { + Response execute = OkGoBuilder.getInstance() .Builder(mContext) .url(HttpInterface.SUBMIT_CSTASK) diff --git a/app/src/main/res/layout/activity_photo_album.xml b/app/src/main/res/layout/fragment_photo.xml similarity index 87% rename from app/src/main/res/layout/activity_photo_album.xml rename to app/src/main/res/layout/fragment_photo.xml index d6a378f..66403ea 100644 --- a/app/src/main/res/layout/activity_photo_album.xml +++ b/app/src/main/res/layout/fragment_photo.xml @@ -3,8 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".activity.PhotoAlbumActivity"> + android:layout_height="match_parent"> + android:text="查看图片" /> - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/photo_album_item.xml b/app/src/main/res/layout/photo_album_item.xml deleted file mode 100644 index 008d700..0000000 --- a/app/src/main/res/layout/photo_album_item.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/photo_item.xml b/app/src/main/res/layout/photo_item.xml new file mode 100644 index 0000000..9af8adc --- /dev/null +++ b/app/src/main/res/layout/photo_item.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/video_item.xml b/app/src/main/res/layout/video_item.xml new file mode 100644 index 0000000..31a5ae2 --- /dev/null +++ b/app/src/main/res/layout/video_item.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file