From b1f3d251ba08b5bb10d22a1a4222b5f93aa9a942 Mon Sep 17 00:00:00 2001 From: md Date: Thu, 2 Sep 2021 15:45:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B99.2=E5=8F=B7=E6=8F=90?= =?UTF-8?q?=E5=87=BA=E7=9A=84bug=EF=BC=88=E9=83=A8=E5=88=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 1 + .../outdoor/activity/PhotoAlbumActivity.java | 78 ++++++++++++ .../outdoor/activity/PictureActivity.java | 18 ++- .../outdoor/activity/PicturesActivity.java | 19 ++- .../outdoor/activity/RegardMapActivity.java | 15 ++- .../adapter/CapacityEvaluationAdapter.java | 7 +- .../outdoor/adapter/PhotoAlbumAdapter.java | 117 ++++++++++++++++++ .../outdoor/adapter/StaySubmitAdapter.java | 1 + .../navinfo/outdoor/base/BaseActivity.java | 3 + .../outdoor/base/BaseDrawerFragment.java | 14 ++- .../outdoor/fragment/PoiVideoFragment.java | 16 ++- .../outdoor/fragment/StaySubmitFragment.java | 9 +- .../outdoor/fragment/TreasureFragment.java | 26 +++- .../main/res/layout/activity_photo_album.xml | 66 ++++++++++ app/src/main/res/layout/activity_picture.xml | 26 ++-- app/src/main/res/layout/activity_pictures.xml | 26 ++-- .../main/res/layout/activity_statement.xml | 2 +- app/src/main/res/layout/fragment_message.xml | 1 + app/src/main/res/layout/photo_album_item.xml | 25 ++++ .../main/res/layout/poi_video_fragment.xml | 10 ++ app/src/main/res/values/styles.xml | 2 +- 22 files changed, 420 insertions(+), 64 deletions(-) create mode 100644 app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java create mode 100644 app/src/main/java/com/navinfo/outdoor/adapter/PhotoAlbumAdapter.java create mode 100644 app/src/main/res/layout/activity_photo_album.xml create mode 100644 app/src/main/res/layout/photo_album_item.xml diff --git a/app/build.gradle b/app/build.gradle index 3fa13e6..1307bc8 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 4eab927..b19ea0d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,6 +47,7 @@ android:supportsRtl="true" android:theme="@style/Theme.WhiteScreen" tools:targetApi="n"> + diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java new file mode 100644 index 0000000..577cf4c --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/activity/PhotoAlbumActivity.java @@ -0,0 +1,78 @@ +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/activity/PictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java index b0fde8c..e586796 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java @@ -158,13 +158,13 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene ivZoomAdd.setOnClickListener(this); ivZoomDel = findViewById(R.id.iv_zoom_del); ivZoomDel.setOnClickListener(this); - cbMapType = findViewById(R.id.cb_map_type); - cbMapType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); - } - }); +// cbMapType = findViewById(R.id.cb_map_type); +// cbMapType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { +// @Override +// public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { +// setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); +// } +// }); ivLocation = findViewById(R.id.iv_location); ivLocation.setOnClickListener(this); layerChange = findViewById(R.id.layer_change); @@ -627,10 +627,9 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene isMapSlide = false; ivZoomAdd.setVisibility(View.GONE); ivZoomDel.setVisibility(View.GONE); - cbMapType.setVisibility(View.GONE); ivLocation.setVisibility(View.GONE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); - cbMapType.setChecked(false); + } //大图 @@ -638,7 +637,6 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene isMapSlide = true; ivZoomAdd.setVisibility(View.VISIBLE); ivZoomDel.setVisibility(View.VISIBLE); - cbMapType.setVisibility(View.VISIBLE); ivLocation.setVisibility(View.VISIBLE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); 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 7c532a8..8e46a82 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -137,13 +137,13 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen ivZoomAdd.setOnClickListener(this); ivZoomDel =findViewById(R.id.iv_zoom_del); ivZoomDel.setOnClickListener(this); - cbMapType =findViewById(R.id.cb_map_type); - cbMapType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); - } - }); +// cbMapType =findViewById(R.id.cb_map_type); +// cbMapType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { +// @Override +// public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { +// setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); +// } +// }); ivLocation =findViewById(R.id.iv_location); ivLocation.setOnClickListener(this); camera =findViewById(R.id.camera); @@ -416,10 +416,10 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen isMapSlide = false; ivZoomAdd.setVisibility(View.GONE); ivZoomDel.setVisibility(View.GONE); - cbMapType.setVisibility(View.GONE); + ivLocation.setVisibility(View.GONE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); - cbMapType.setChecked(false); + } //大图 @@ -427,7 +427,6 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen isMapSlide = true; ivZoomAdd.setVisibility(View.VISIBLE); ivZoomDel.setVisibility(View.VISIBLE); - cbMapType.setVisibility(View.VISIBLE); ivLocation.setVisibility(View.VISIBLE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); } diff --git a/app/src/main/java/com/navinfo/outdoor/activity/RegardMapActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/RegardMapActivity.java index a7e8b4e..9156730 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/RegardMapActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/RegardMapActivity.java @@ -1,6 +1,7 @@ package com.navinfo.outdoor.activity; import android.content.Intent; +import android.net.Uri; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -37,13 +38,17 @@ public class RegardMapActivity extends BaseActivity implements View.OnClickLis finish(); break; case R.id.tv_map_link: - Intent linkIntent = new Intent(this, LinkActivity.class); - linkIntent.putExtra("url","http://www.navinfo.com"); - startActivity(linkIntent); + Uri uri = Uri.parse("http://www.navinfo.com"); + Intent intent = new Intent(); + intent.setAction("android.intent.action.VIEW"); + intent.setData(uri); + startActivity(intent); break; case R.id.tv_official_link: - Intent officialIntent = new Intent(this, LinkActivity.class); - officialIntent.putExtra("url","https://dtxbmaps.navinfo.com/user"); + Uri officialUri = Uri.parse("https://dtxbmaps.navinfo.com/user"); + Intent officialIntent = new Intent(); + officialIntent.setAction("android.intent.action.VIEW"); + officialIntent.setData(officialUri); startActivity(officialIntent); break; } diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/CapacityEvaluationAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/CapacityEvaluationAdapter.java index 9f36ff3..fd752b1 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/CapacityEvaluationAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/CapacityEvaluationAdapter.java @@ -40,7 +40,12 @@ public class CapacityEvaluationAdapter 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/StaySubmitAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/StaySubmitAdapter.java index 8cd599f..6e67b3d 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/StaySubmitAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/StaySubmitAdapter.java @@ -41,6 +41,7 @@ public class StaySubmitAdapter extends RecyclerView.Adapter videoFileListByUUID = AWMp4ParserHelper.getInstance().getVideoFileListByUUID(showPoiEntity.getId()); for (int i = 0; i < videoFileListByUUID.size(); i++) { videoFileListByUUID.get(i).delete(); - } ivPoiVideoPicture.setImageDrawable(null); return false; @@ -409,6 +412,17 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick return; } break; + case R.id.tv_photo_album: + if (tvPicture.isEnabled()){ + showPoiEntity.setRecord_way(1); + } + if (tvPictures.isEnabled()){ + showPoiEntity.setRecord_way(2); + } + Intent photoAlbumIntent = new Intent(getActivity(), PhotoAlbumActivity.class); + photoAlbumIntent.putExtra("showPoiEntity",showPoiEntity); + startActivity(photoAlbumIntent); + break; } } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java index d307ee1..26f78a0 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java @@ -53,6 +53,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList private List roadEntities; private ArrayList newEntities; private ArrayList poiEntities; + private CheckBox cbSelect; public static StaySubmitFragment newInstance(Bundle bundle) { @@ -84,7 +85,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList ConstraintLayout clStayType = findViewById(R.id.cl_stay_type); clStayType.setOnClickListener(this); RecyclerView stayXrv =findViewById(R.id.stay_xrv); - CheckBox cbSelect =findViewById(R.id.cb_select); + cbSelect = findViewById(R.id.cb_select); cbSelect.setOnClickListener(this); TextView tvDelete =findViewById(R.id.tv_delete); tvDelete.setOnClickListener(this); @@ -111,6 +112,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList } }); + //全选 cbSelect.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @@ -124,6 +126,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList @Subscribe public void onEvent(Message data) { if (data.what == Constant.EVENT_STAY_REFRESH) { + cbSelect.setChecked(false); Toast.makeText(getActivity(), (String) data.obj, Toast.LENGTH_SHORT).show(); dismissLoadingDialog(); refreshData(); @@ -215,8 +218,10 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList showLoadingDialog(); setLoadingDialogText("提交中..."); PoiSaveUtils.getInstance(getActivity()).uploadPoiEntityBatch(poiEntities); + } else { - Toast.makeText(getActivity(), "请选择要删除的条目数据", Toast.LENGTH_SHORT).show(); + + Toast.makeText(getActivity(), "请选择要提交的数据", Toast.LENGTH_SHORT).show(); } break; diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java index e3b6b1a..35edc0e 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -103,6 +103,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Timer; +import java.util.TimerTask; /** * 寻宝的Fragment @@ -175,7 +177,12 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen dismissLoadingDialog(); removableHashMap.clear(); initThread(); // 刷新筛选的本地数据 - initList(Constant.currentLocation); // 刷新筛选的网络数据 + if (Constant.currentLocation!=null){ + initList(Constant.currentLocation); // 刷新筛选的网络数据 + }else { + Toast.makeText(getActivity(), "未开启定位服务", Toast.LENGTH_SHORT).show(); + } + } @Override @@ -286,8 +293,23 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen treasureMap.getLayoutParams().width = widthHeight[0]; treasureMap.getLayoutParams().height = widthHeight[1]; - } + //消息通知: + + } + public class TimerTest { + class MyTimerTask extends TimerTask { + public void run() { + + System.out.println("我爱你中国"); + } + } + public void main(String[] args) { + Timer timer = new Timer(); + timer.schedule(new MyTimerTask(), 0, 5000); + + } + } /** * 得到电话区号,电话位数 */ diff --git a/app/src/main/res/layout/activity_photo_album.xml b/app/src/main/res/layout/activity_photo_album.xml new file mode 100644 index 0000000..d6a378f --- /dev/null +++ b/app/src/main/res/layout/activity_photo_album.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_picture.xml b/app/src/main/res/layout/activity_picture.xml index e8e9368..2f631a7 100644 --- a/app/src/main/res/layout/activity_picture.xml +++ b/app/src/main/res/layout/activity_picture.xml @@ -52,17 +52,17 @@ app:layout_constraintLeft_toLeftOf="@id/iv_zoom_add" app:layout_constraintTop_toBottomOf="@id/iv_zoom_add" /> - + + + + + + + + + + + + app:layout_constraintLeft_toLeftOf="@id/iv_zoom_del" + app:layout_constraintTop_toBottomOf="@id/iv_zoom_del" />