diff --git a/app/build.gradle b/app/build.gradle index a5bdf7a..70e0bcf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -139,5 +139,7 @@ dependencies { implementation 'cn.jzvd:jiaozivideoplayer:7.4.2' //图片压缩 https://github.com/Hu12037102/ImageCompress implementation 'com.github.Hu12037102:ImageCompress:2.3.0' + //webp 转换 + implementation 'com.wanghong.webpnative:webpnative:0.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/activity/GuidanceActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/GuidanceActivity.java index 09457f3..dafe2f4 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/GuidanceActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/GuidanceActivity.java @@ -1,6 +1,9 @@ package com.navinfo.outdoor.activity; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Handler; import android.os.Message; import android.util.Log; @@ -9,6 +12,8 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.Toast; import androidx.annotation.NonNull; + +import com.github.lazylibrary.util.FileUtils; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.api.Constant; @@ -18,6 +23,11 @@ import com.navinfo.outdoor.http.Callback; import com.navinfo.outdoor.http.HttpInterface; import com.navinfo.outdoor.http.OkGoBuilder; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + /** * 引导页 */ @@ -79,6 +89,9 @@ public class GuidanceActivity extends BaseActivity { return false; } }); + private File logFile; + private StringBuilder guidanceBuilder; + @Override protected int getLayout() { return R.layout.activity_guidance; @@ -88,6 +101,29 @@ public class GuidanceActivity extends BaseActivity { protected void initView() { super.initView(); frameLayout = findViewById(R.id.layout_frame); + + SharedPreferences sharedPreferences = this.getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + SharedPreferences.Editor sharedEdit = sharedPreferences.edit(); + @SuppressLint("SimpleDateFormat") + DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String newFormat = formatter.format(new Date(System.currentTimeMillis())); + String pictures_time = sharedPreferences.getString("pictures_time", null); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); + sharedEdit.apply(); + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } else { + if (pictures_time.equals(newFormat)) { + logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); + } else { + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } + } + guidanceBuilder = new StringBuilder(); + guidanceBuilder.append("GuidanceActivity-onCreate-initData ,"); + if (Constant.USHERED != null) { + guidanceBuilder.append("userId:").append(Constant.USHERED).append(","); + } } @Override @@ -109,16 +145,19 @@ public class GuidanceActivity extends BaseActivity { loginTaskItem.findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + v.setEnabled(false); + guidanceBuilder.append("点击了请查看APP使用说明 ,"); Message message = new Message(); message.what = 0x101; handler.sendMessageDelayed(message, 1000); - v.setEnabled(false); + } }); taskItem.findViewById(R.id.btn_next_step).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x102; handler.sendMessageDelayed(message, 500); @@ -128,6 +167,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x103; handler.sendMessageDelayed(message, 500); @@ -137,6 +177,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x104; handler.sendMessageDelayed(message, 500); @@ -146,6 +187,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x105; handler.sendMessageDelayed(message, 500); @@ -155,6 +197,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x106; handler.sendMessageDelayed(message, 500); @@ -164,6 +207,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x107; handler.sendMessageDelayed(message, 500); @@ -173,6 +217,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x108; handler.sendMessageDelayed(message, 500); @@ -182,6 +227,7 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x109; handler.sendMessageDelayed(message, 500); @@ -191,16 +237,17 @@ public class GuidanceActivity extends BaseActivity { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x110; handler.sendMessageDelayed(message, 500); - } }); dataItem.findViewById(R.id.btn_next_step).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setEnabled(false); + guidanceBuilder.append("点击了下一步 ,"); Message message = new Message(); message.what = 0x111; handler.sendMessageDelayed(message, 500); @@ -209,6 +256,8 @@ public class GuidanceActivity extends BaseActivity { withdrawItem.findViewById(R.id.btn_to_learn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + v.setEnabled(false); + guidanceBuilder.append("点击了学会了,"); Message message = new Message(); message.what = 0x112; handler.sendMessageDelayed(message, 500); @@ -231,13 +280,11 @@ public class GuidanceActivity extends BaseActivity { public void onSuccess(BaseBean response, int id) { dismissLoadingDialog(); if (response.getCode() == 200) { + startActivity(new Intent(GuidanceActivity.this, HomeActivity.class)); + GuidanceActivity.this.finish(); Toast.makeText(GuidanceActivity.this, "可以在发现版块的任务说明中,进行再次学习哦", Toast.LENGTH_LONG).show(); - Intent intent = new Intent(GuidanceActivity.this, HomeActivity.class); - startActivity(intent); - finish(); } } - @Override public void onError(Throwable e, int id) { dismissLoadingDialog(); @@ -247,9 +294,24 @@ public class GuidanceActivity extends BaseActivity { }); } + @Override + protected void onPause() { + super.onPause(); + guidanceBuilder.append("onPause,"); + } + + @Override + protected void onStop() { + super.onStop(); + guidanceBuilder.append("onStop,"); + } + @Override protected void onDestroy() { super.onDestroy(); frameLayout.removeAllViews(); + guidanceBuilder.append("onDestroy"); + guidanceBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), guidanceBuilder.toString(), true); } } 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 305379e..2ceb0bc 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/LoginActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/LoginActivity.java @@ -163,6 +163,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener 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/MainActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java index 54dbc4c..7eaca7b 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java @@ -1,5 +1,6 @@ package com.navinfo.outdoor.activity; +import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; @@ -31,10 +32,14 @@ import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseActivity; import com.kongzue.dialog.util.DialogSettings; import com.navinfo.outdoor.bean.ApkVersionBean; +import com.navinfo.outdoor.bean.LoginOauthTokenBean; +import com.navinfo.outdoor.bean.UserDetailBean; import com.navinfo.outdoor.http.Callback; import com.navinfo.outdoor.http.HttpInterface; import com.navinfo.outdoor.http.OkGoBuilder; import com.navinfo.outdoor.util.APKVersionCodeUtils; +import com.navinfo.outdoor.util.Base64; +import com.navinfo.outdoor.util.Md5Util; import java.io.File; @@ -77,7 +82,7 @@ public class MainActivity extends BaseActivity { }); private ProgressDialog pBar; private int progress; - private String user_id; + private SharedPreferences.Editor navInfoEditor; @Override @@ -122,7 +127,7 @@ public class MainActivity extends BaseActivity { @Override public void onGranted(List permissions, boolean all) { if (all) { - if (user_id!=null){ + if (Constant.USHERED!=null){ initCheckVersion(); }else { initTime(); @@ -232,16 +237,139 @@ public class MainActivity extends BaseActivity { } public void initTime() { + if (Constant.ACCESS_TOKEN==null){ + Intent intent = new Intent(MainActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + }else { + initGetUserInfo(); + } +/* new CountDownTimer(3000, 1000) { @Override public void onTick(long l) {} @Override public void onFinish() { - Intent intent = new Intent(MainActivity.this, LoginActivity.class); - startActivity(intent); - finish(); + } }.start(); +*/ + } + private void initGetUserInfo() { + OkGoBuilder.getInstance().Builder(this) + .url(HttpInterface.USER_DETAIL_BY_USER_ID) + .token(Constant.ACCESS_TOKEN) + .params(new HttpParams()) + .cls(UserDetailBean.class) + .getRequest(new Callback() { + @Override + public void onSuccess(UserDetailBean response, int id) { + dismissLoadingDialog(); + if (response.getCode() == 200) { + UserDetailBean.BodyBean body = response.getBody(); + if (body != null) { + navInfoEditor.putString("username", body.getUsername()); + Constant.USER_NAME = body.getUsername(); + navInfoEditor.putString("mobile", body.getMobile()); + Constant.MOBILE = body.getMobile(); + navInfoEditor.putInt("sex", body.getSex());//0:女 1:男 + Constant.SEX = body.getSex(); + navInfoEditor.putString("qq", body.getQq()); + Constant.QQ = body.getQq(); + navInfoEditor.putString("wechat", body.getWechat()); + Constant.WCHAR = body.getWechat(); + navInfoEditor.putInt("level", body.getLevel()); + Constant.LEVEL = body.getLevel(); + UserDetailBean.BodyBean.UserBankcardBean userBankcard = body.getUserBankcard(); + if (userBankcard != null) {//存储银行卡信息 + navInfoEditor.putString("bankAccount", userBankcard.getBankAccount());//银行卡编号 + Constant.BACKGROUND = userBankcard.getBankAccount(); + navInfoEditor.putString("idNumber", userBankcard.getIdNumber());//银行卡账号 + Constant.ID_NUMBER = userBankcard.getIdNumber(); + navInfoEditor.putString("bankName", userBankcard.getBankName());//銀行姓名 + Constant.BACKGROUND_NAME = userBankcard.getBankName(); + } + UserDetailBean.BodyBean.UserAuthBean userAuth = body.getUserAuth(); + if (userAuth != null) {//存储身份证信息 + navInfoEditor.putString("name", userAuth.getName());//身份证姓名 + Constant.NAME = userAuth.getName(); + navInfoEditor.putString("idnum", userAuth.getIdnum());//身份证号码 + Constant.ID_NUM = userAuth.getIdnum(); + navInfoEditor.putInt("auditstatus", userAuth.getAuditstatus());//审核状态 + Constant.AUDIOTAPES = userAuth.getAuditstatus(); + navInfoEditor.putString("auditmsg", userAuth.getAuditmsg());//审核信息 + Constant.AUDITING = userAuth.getAuditmsg(); + } + navInfoEditor.commit(); + int needGuide = body.getNeedGuide();//0不需要 1需要 + if (needGuide == 1) { + Intent intent = new Intent(MainActivity.this, GuidanceActivity.class); + startActivity(intent); + } else { + Intent intent = new Intent(MainActivity.this, HomeActivity.class); + startActivity(intent); + finish(); + } + } + } else { + initLogIn(); + } + } + @Override + public void onError(Throwable e, int id) { + dismissLoadingDialog(); + Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } + private void initLogIn() { + try { + HttpParams httpParams = new HttpParams(); + long time = System.currentTimeMillis(); + httpParams.put("grant_type", "refresh_token"); + httpParams.put("datetime", time); + httpParams.put("refresh_token", Constant.REFRESH_TOKEN); + showLoadingDialog(); + OkGoBuilder.getInstance() + .Builder(this) + .url(HttpInterface.USER_LOGIN_OAUTH_TOKEN) + .cls(LoginOauthTokenBean.class) + .params(httpParams) + .postRequest(new Callback() { + @Override + public void onSuccess(LoginOauthTokenBean response, int id) { + dismissLoadingDialog(); + if (response.getCode() == 200) { + LoginOauthTokenBean.BodyBean body = response.getBody(); + if (body.getUserId() != null && !body.getUserId().equals("")) { + Constant.initRootFolder(body.getUserId()); + HttpInterface.initHttpInter(body.getUserId()); + } + navInfoEditor.putString("access_token", body.getAccess_token()); + navInfoEditor.putString("refresh_token", body.getRefresh_token()); + navInfoEditor.putString("user_id", body.getUserId()); + navInfoEditor.commit(); + Constant.ACCESS_TOKEN = body.getAccess_token(); + Constant.REFRESH_TOKEN = body.getRefresh_token(); + Constant.USHERED = body.getUserId(); + initGetUserInfo();//获取用户信息 + } else { + Intent intent = new Intent( MainActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + } + + } + + @Override + public void onError(Throwable e, int id) { + dismissLoadingDialog(); + Toast.makeText(MainActivity.this, e.getMessage() + "", Toast.LENGTH_SHORT).show(); + } + }); + } catch (Exception e) { + e.printStackTrace(); + } } /** @@ -292,7 +420,6 @@ public class MainActivity extends BaseActivity { } if (fileOutputStream != null) { fileOutputStream.flush(); - fileOutputStream.close(); } handler.sendEmptyMessage(0);//apk下载完成,使用Handler()通知安装apk } @@ -304,13 +431,20 @@ public class MainActivity extends BaseActivity { }.start(); } + @SuppressLint("CommitPrefEdits") @Override protected void initView() { super.initView(); SharedPreferences navInfo = getSharedPreferences(Constant.SHARED_PREFERENCES, Context.MODE_PRIVATE); - user_id = navInfo.getString("user_id", null); - Constant.ACCESS_TOKEN= navInfo.getString("access_token", null);; - HttpInterface.initAppPath(user_id); + navInfoEditor = navInfo.edit(); + Constant.USHERED = navInfo.getString("user_id", null); + Constant.REFRESH_TOKEN = navInfo.getString("refresh_token", null); + Constant.ACCESS_TOKEN= navInfo.getString("access_token", null); + if (Constant.USHERED!=null){ + HttpInterface.initAppPath(Constant.USHERED); + Constant.initRootFolder(Constant.USHERED); + HttpInterface.initHttpInter(Constant.USHERED); + } initPermission(); } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java index 8fc381c..e8d59eb 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java @@ -60,6 +60,7 @@ import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle; import com.tencent.tencentmap.mapsdk.maps.model.Polyline; import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions; import com.vividsolutions.jts.geom.Geometry; +import com.wanghong.webpnative.WebPNative; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -159,19 +160,48 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList } } File file = new File(photo_path); - /* File destFolder = new File(file.getParentFile().getAbsolutePath()+"aaa"); + /*File destFolder = new File(file.getParentFile().getAbsolutePath()+"aaa"); if (!destFolder.exists()) { destFolder.mkdirs(); }*/ result.toFile(file, new FileCallback() { @Override public void onFileReady(@Nullable File file) { - assert file != null && file.exists(); - Intent intent = new Intent(); - intent.putExtra("file", file.getPath()); - setResult(0x104, intent); - SystemTTS.getInstance(PhotographActivity.this).stopSpeak(); - PhotographActivity.this.finish(); + if (file.exists()) { + WebPNative webPNative = new WebPNative(); + new Thread(new Runnable() { + @Override + public void run() { + try { + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); + webPNative.encodeRGBA(bitmap, file.getPath(), 90); + runOnUiThread(new Runnable() { + @Override + public void run() { + Intent intent = new Intent(); + intent.putExtra("file", file.getAbsolutePath()); + setResult(0x104, intent); + SystemTTS.getInstance(PhotographActivity.this).stopSpeak(); + PhotographActivity.this.finish(); + } + }); + /* long start = System.currentTimeMillis(); + long useTime = System.currentTimeMillis() - start; + Log.e("WebpUtil:", String.valueOf(useTime)); + File file = new File(output.substring(0, output.length() - 5) + ".webp"); + new File(output).renameTo(file);*/ + if (!bitmap.isRecycled()) { + bitmap.recycle(); + } + } catch (Exception e) { + Log.d("output:", e.toString()); + Toast.makeText(PhotographActivity.this, "文件转换失败", Toast.LENGTH_SHORT).show(); + } + } + }).start(); + } else { + Toast.makeText(PhotographActivity.this, "源文件不存在", Toast.LENGTH_SHORT).show(); + } /* CompressImageTask.get().compressImage(ImageConfig.getDefaultConfig(file.getAbsolutePath(), file.getAbsolutePath()), new AsyncImageTask.OnImageResult(){ @Override public void startCompress() { 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 e565e4f..8ab849c 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java @@ -1,9 +1,7 @@ -package com.navinfo.outdoor.activity; + package com.navinfo.outdoor.activity; import androidx.annotation.NonNull; - import androidx.annotation.Nullable; - import android.annotation.SuppressLint; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -17,7 +15,6 @@ import android.os.Message; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; - import android.view.ViewGroup; import android.widget.Button; import android.widget.CheckBox; @@ -26,12 +23,10 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; - import com.github.lazylibrary.util.FileUtils; import com.navinfo.outdoor.R; import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseActivity; - import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.AWMp4ParserHelper; import com.navinfo.outdoor.util.Geohash; @@ -40,14 +35,12 @@ import com.navinfo.outdoor.util.MyTecentLocationSource; import com.otaliastudios.cameraview.CameraException; import com.otaliastudios.cameraview.CameraListener; import com.otaliastudios.cameraview.CameraLogger; - import com.otaliastudios.cameraview.CameraOptions; import com.otaliastudios.cameraview.CameraView; import com.otaliastudios.cameraview.FileCallback; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.controls.Mode; - import com.otaliastudios.cameraview.size.Size; import com.tencent.map.geolocation.TencentLocation; import com.tencent.tencentmap.mapsdk.maps.CameraUpdate; @@ -66,13 +59,10 @@ import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle; import com.tencent.tencentmap.mapsdk.maps.model.Polyline; import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions; import com.vividsolutions.jts.geom.Geometry; - - import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.jetbrains.annotations.NotNull; - import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; @@ -87,11 +77,9 @@ import java.util.List; import java.util.Objects; import java.util.Timer; import java.util.TimerTask; - import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE; import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER; - public class PictureActivity extends BaseActivity implements View.OnClickListener { private static final CameraLogger LOG = CameraLogger.create("Picture"); private CameraView camera; @@ -102,7 +90,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene private CheckBox captureVideo; // 拍摄视频 private Button btnVideo; private String finalVideoPath; // 摄像后最终保存的文件名 - // private File tmpFile; // 合并文件的临时文件路径 + //private File tmpFile; // 合并文件的临时文件路径 private Timer timer; private CsvTimerTask timerTask; // 执行定时写入csv文件的task private DateFormat formatter; @@ -137,7 +125,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene @Override protected int getLayout() { EventBus.getDefault().register(this); -// tmpFile = new File(Constant.PICTURE_FOLDER, "temp.mp4"); +// tmpFile = new File(Constant.PICTURE_FOLDER, "temp.mp4"); formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); return R.layout.activity_picture; } @@ -151,9 +139,9 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene oration = getIntent().getIntExtra(Constant.INTENT_VIDEO_OBLATION, -1); } videoChronometer = findViewById(R.id.video_chronometer); -// if (finalVideoPath == null) { -// finalVideoPath = Constant.PICTURE_FOLDER+"/final.mp4"; -// } +// if (finalVideoPath == null) { +// finalVideoPath = Constant.PICTURE_FOLDER+"/final.mp4"; +// } this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); ivZoomAdd = findViewById(R.id.iv_zoom_add); ivZoomAdd.setOnClickListener(this); @@ -163,7 +151,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene cbMapType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); + setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); } });*/ ivLocation = findViewById(R.id.iv_location); @@ -192,7 +180,6 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene return; } } - captureVideo.setText("暂停采集"); // stopVideo.setEnabled(false);// 开始采集视频后,禁用停止采集的按钮,必须暂停采集后才可点击停止采集 startTakenVideo(); // 开始采集视频 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 78d481d..bdb2ca5 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -65,6 +65,7 @@ import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle; import com.tencent.tencentmap.mapsdk.maps.model.Polyline; import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions; import com.vividsolutions.jts.geom.Geometry; +import com.wanghong.webpnative.WebPNative; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -265,17 +266,46 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen result.toFile(file, new FileCallback() { @Override public void onFileReady(@Nullable File file) { - assert file != null; if (file.exists()) { - initMarker(); - videoIndex = Integer.parseInt(file.getName().replace(".jpg", "")); - finalVideoPath = Objects.requireNonNull(file.getParentFile()).getAbsolutePath() + "/" + (videoIndex + 1) + ".jpg"; - Toast.makeText(PicturesActivity.this, "保存成功:" + (videoIndex + 1), Toast.LENGTH_SHORT).show(); - } - if (poi_video_type == 2) { - Message message = new Message(); - message.what = 0x103; - handler.sendMessage(message); + WebPNative webPNative = new WebPNative(); + new Thread(new Runnable() { + @Override + public void run() { + try { + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); + webPNative.encodeRGBA(bitmap, file.getPath(), 90); + runOnUiThread(new Runnable() { + @Override + public void run() { + if (file.exists()) { + initMarker(); + videoIndex = Integer.parseInt(file.getName().replace(".webp", "")); + finalVideoPath = Objects.requireNonNull(file.getParentFile()).getAbsolutePath() + "/" + (videoIndex + 1) + ".webp"; + Toast.makeText(PicturesActivity.this, "保存成功:" + (videoIndex + 1), Toast.LENGTH_SHORT).show(); + } + if (poi_video_type == 2) { + Message message = new Message(); + message.what = 0x103; + handler.sendMessage(message); + } + } + }); + /* long start = System.currentTimeMillis(); + long useTime = System.currentTimeMillis() - start; + Log.e("WebpUtil:", String.valueOf(useTime)); + File file = new File(output.substring(0, output.length() - 5) + ".webp"); + new File(output).renameTo(file);*/ + if (!bitmap.isRecycled()) { + bitmap.recycle(); + } + } catch (Exception e) { + Log.d("output:", e.toString()); + Toast.makeText(PicturesActivity.this, "文件转换失败", Toast.LENGTH_SHORT).show(); + } + } + }).start(); + } else { + Toast.makeText(PicturesActivity.this, "源文件不存在", Toast.LENGTH_SHORT).show(); } } }); @@ -308,10 +338,8 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen bitmapLine = BitmapDescriptorFactory.fromResource(R.drawable.road_arrows); } List latLineString = GeometryTools.getLatLags(geo); - // 构造 PolylineOnions - PolylineOptions polylineOptions - = new PolylineOptions().addAll(latLineString) + PolylineOptions polylineOptions = new PolylineOptions().addAll(latLineString) // 折线设置圆形线头 .lineCap(true) // 折线的颜色为绿色 @@ -366,7 +394,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } picturesBuilder.append("onClick 点击了结束采集 ,"); Intent intent = new Intent(); - finalVideoPath = Objects.requireNonNull(paperFile.getParentFile()).getAbsolutePath() + "/" + videoIndex + ".jpg"; + finalVideoPath = Objects.requireNonNull(paperFile.getParentFile()).getAbsolutePath() + "/" + videoIndex + ".webp"; intent.putExtra(Constant.INTENT_PICTURES_PATH, finalVideoPath); intent.putExtra("type", poi_video_type); setResult(0x111, intent); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java index bc0f725..006acae 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/TestActivity.java @@ -199,9 +199,9 @@ public class TestActivity extends BaseActivity { latLng = new LatLng(); latLng.setLatitude(y); latLng.setLongitude(x); - /* if (latPolygon != null && latPolygon.size() > 0) { + /* if (latPolygon != null && latPolygon.size() > 0) { latLng = latPolygon.get(0); - }*/ + }*/ break; } switch (list.get(i).getType()) { @@ -284,7 +284,6 @@ public class TestActivity extends BaseActivity { planarMarker.setClickable(true); onMarker(geo, planarMarker); break; - } } } @@ -343,7 +342,6 @@ public class TestActivity extends BaseActivity { setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); // initCluster(); initNewMarker(); - } private void initNewMarker() { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/UserActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/UserActivity.java index 1102926..84074a8 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/UserActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/UserActivity.java @@ -18,6 +18,7 @@ import android.widget.Toast; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.listener.OnOptionsSelectListener; import com.bigkoo.pickerview.view.OptionsPickerView; +import com.github.lazylibrary.util.FileUtils; import com.google.gson.Gson; import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; import com.kongzue.dialog.util.BaseDialog; @@ -321,7 +322,8 @@ public class UserActivity extends BaseActivity implements View.OnClickListener { pvOptions.show(); } - private void initJsonData() {//解析数据 (省市区三级联动) + private void initJsonData() { + //解析数据 (省市区三级联动) /* 注意:assets 目录下的Json文件仅供参考,实际使用可自行替换文件 * 关键逻辑在于循环体 */ @@ -342,8 +344,7 @@ public class UserActivity extends BaseActivity implements View.OnClickListener { ArrayList AreaList = new ArrayList<>();//该城市的所有地区列表 ArrayList City_AreaList = new ArrayList<>();//该城市的所有地区列表 //如果无地区数据,建议添加空字符串,防止数据为null 导致三个选项长度不匹配造成崩溃 - if (jsonBean.get(i).getCitys().get(c).getCounties() == null - || jsonBean.get(i).getCitys().get(c).getCounties().size() == 0) { + if (jsonBean.get(i).getCitys().get(c).getCounties() == null || jsonBean.get(i).getCitys().get(c).getCounties().size() == 0) { AreaList.add(new CityBean("", "")); City_AreaList.add(""); } else { @@ -355,17 +356,16 @@ public class UserActivity extends BaseActivity implements View.OnClickListener { Province_AreaList.add(City_AreaList);//添加该省所有地区数据 city_AreaList.add(AreaList);//添加该省所有地区数据的bean } - /*添加城市数据 - */ + /*添加城市数据*/ options2Items.add(CityList); - /* 添加地区数据 - */ + /*添加地区数据*/ options3Items.add(Province_AreaList); cityItems.add(city_AreaList); } } - public ArrayList parseData(String result) {//GOON 解析 + public ArrayList parseData(String result) { + //GOON 解析 ArrayList detail = new ArrayList<>(); try { JSONArray data = new JSONArray(result); @@ -395,6 +395,8 @@ public class UserActivity extends BaseActivity implements View.OnClickListener { @Override protected void onDestroy() { super.onDestroy(); - userBuilder.append("onDestroy ,"); + userBuilder.append("onDestroy "); + userBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), userBuilder.toString(), true); } } diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java index bf8decb..05b6db3 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/PhotoAdapter.java @@ -93,8 +93,6 @@ public class PhotoAdapter extends RecyclerView.Adapter } } }); - - } @Override 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 79ec4a6..cd64c43 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -17,11 +17,9 @@ import java.io.File; * 常量 */ public class Constant { - /*当前网络不可用 - */ + /*当前网络不可用*/ public static final CharSequence NETWORK_UNAVAILABLE = "当前网络不可用,请检查网络设置"; - /*位置权限 - */ + /*位置权限*/ public static final String SET_LOCATION_PERMISSION = "请在“设置”中给予“TengXunMap”位置权限,否则当前功能将不可使用"; public static final String SET_LOCATION = "请在“设置”中给予权限否则当前功能将不可使用"; public static final String GET_ERR_MESSAGE1 = "设备缺少使用腾讯定位服务需要的基本条件"; @@ -29,7 +27,7 @@ public class Constant { 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; - // 保存图片的目录 + //保存图片的目录 public static String PICTURE_FOLDER; public static String VIDEOS_; public static String POI_DAO; @@ -65,11 +63,11 @@ public class Constant { //筛选 public static final int FILTER_CODE = 0x200; /* - * 存储用户信息 - * access_token 后续需求需要用到的key 过期时间8小时 - * refresh_token 刷新token用 过期时间1个月 - * userId 用户id - * username 用户编号 + 存储用户信息 + access_token 后续需求需要用到的key 过期时间8小时 + refresh_token 刷新token用 过期时间1个月 + userId 用户id + username 用户编号 */ public static String ACCESS_TOKEN = null; public static String REFRESH_TOKEN = null; @@ -141,12 +139,11 @@ public class Constant { public static int TASK_TYPE = -1; // 任务类型 public static int TASK_STARTUP = -1; // 任务状态 public static String CODE = ""; //区号 - /** - * 用户当前位置 - */ + /*用户当前位置*/ public static TencentLocation currentLocation; public static LatLng markerLacing; - //marker 图标 + //marker + public static final BitmapDescriptor MARKER_POI_SHOW = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_show); public static final BitmapDescriptor MARKER_CHARGE_SHOW = BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_show); public static final BitmapDescriptor MARKER_CHARGE_PILE_SHOW=BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_pile_show); @@ -154,15 +151,13 @@ public class Constant { public static final BitmapDescriptor MARKER_ROOD_SHOW = BitmapDescriptorFactory.fromResource(R.drawable.marker_road_show); public static final BitmapDescriptor MARKER_OTHER_SHOW= BitmapDescriptorFactory.fromResource(R.drawable.marker_other_show); public static final BitmapDescriptor MARKER_FACET_SHOW= BitmapDescriptorFactory.fromResource(R.drawable.marker_facet_show); - public static final BitmapDescriptor MARKER_POI = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi); - public static final BitmapDescriptor MARKER_CHARGE = BitmapDescriptorFactory.fromResource(R.drawable.marker_charge); + public static final BitmapDescriptor MARKER_CHARGE_PILE=BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_pile); public static final BitmapDescriptor MARKER_POI_VIDEO = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_video); public static final BitmapDescriptor MARKER_ROOD = BitmapDescriptorFactory.fromResource(R.drawable.marker_road); public static final BitmapDescriptor MARKER_OTHER= BitmapDescriptorFactory.fromResource(R.drawable.marker_other); public static final BitmapDescriptor MARKER_FACET= BitmapDescriptorFactory.fromResource(R.drawable.marker_facet); - public static final BitmapDescriptor GRAY_POI = BitmapDescriptorFactory.fromResource(R.drawable.graypoi); public static final BitmapDescriptor GRAY_CHARGE = BitmapDescriptorFactory.fromResource(R.drawable.graycharge); public static final BitmapDescriptor GRAY_CHARGE_PILE=BitmapDescriptorFactory.fromResource(R.drawable.graychargepile); @@ -170,9 +165,7 @@ public class Constant { public static final BitmapDescriptor GRAY_ROOD = BitmapDescriptorFactory.fromResource(R.drawable.grayroad); public static final BitmapDescriptor GRAY_OTHER= BitmapDescriptorFactory.fromResource(R.drawable.grayother); public static final BitmapDescriptor GRAY_FACET= BitmapDescriptorFactory.fromResource(R.drawable.grayfacet); - public static final BitmapDescriptor ICON_OPERATION=BitmapDescriptorFactory.fromResource(R.mipmap.icon_operation); - public static JobSearchBean jobSearchBean;//数 public static MapView treasureMap; public static final String INTENT_VIDEO_PATH = "INTENT_VIDEO_PATH"; // 拍照界面指定的视频文件保存位置 @@ -183,7 +176,7 @@ public class Constant { public static SlidingUpPanelLayout SLIDING_LAYOUT = null;//設置 public static boolean IS_FILTER_LIST_ITEM = true;//poi页面的查重 public static TencentMap.OnMarkerClickListener markerClickListener = null; - public static final String NAVIN_FO = "10.18";//版本日期 + public static final String NAVIN_FO = "10.22";//版本日期 /* *联系我们的QQ群名称和QQ群号 */ diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/CapacityEvaluationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/CapacityEvaluationFragment.java index 0949a91..5f32839 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/CapacityEvaluationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/CapacityEvaluationFragment.java @@ -1,6 +1,9 @@ package com.navinfo.outdoor.fragment; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -10,6 +13,7 @@ import android.widget.Toast; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import com.github.lazylibrary.util.FileUtils; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.FragmentManagement; @@ -28,7 +32,11 @@ import com.umeng.umcrash.UMCrash; import org.json.JSONObject; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -40,6 +48,8 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC private CapacityEvaluationAdapter capacityEvaluationAdapter; private int capacityPage = 1; private List capacityList ; + private File logFile; + private StringBuilder capacityEvaluationBuilder; public static CapacityEvaluationFragment newInstance(Bundle bundle) { CapacityEvaluationFragment fragment = new CapacityEvaluationFragment(); @@ -81,6 +91,7 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC capacityEvaluationAdapter.setOnCapacityClick(new CapacityEvaluationAdapter.OnCapacityClick() { @Override public void onClick(int id) { + capacityEvaluationBuilder.append("点击了item ,"); Intent capacityEvaWeb = new Intent(getActivity(), FragmentManagement.class); capacityEvaWeb.putExtra("tag", 14); capacityEvaWeb.putExtra("id",id+""); @@ -94,6 +105,29 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC super.initData(); capacityList=new ArrayList<>(); initNewWork(true); + SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + SharedPreferences.Editor sharedEdit = sharedPreferences.edit(); + @SuppressLint("SimpleDateFormat") + DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String newFormat = formatter.format(new Date(System.currentTimeMillis())); + String pictures_time = sharedPreferences.getString("pictures_time", null); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); + sharedEdit.apply(); + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } else { + if (pictures_time.equals(newFormat)) { + logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); + } else { + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } + } + capacityEvaluationBuilder = new StringBuilder(); + capacityEvaluationBuilder.append("CapacityEvaluationFragment-onCreate-initData ,"); + if (Constant.USHERED != null) { + capacityEvaluationBuilder.append("userId:").append(Constant.USHERED).append(","); + } + } private void initNewWork(boolean aNet) { @@ -125,10 +159,8 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC dismissLoadingDialog(); Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); Log.d("TAG", "onError: " + e.getMessage()); - /** - * 友盟+ - * 返回自定义报错信息 - */ + /* 友盟+ + * 返回自定义报错信息*/ UMCrash.generateCustomLog("网络请求报错-位置:CapacityEvaluationFragment" + e.getMessage(), "UmengException"); } }); @@ -166,6 +198,27 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC public void onClick(View v) { if (v.getId() == R.id.iv_evaluation_task_finish) { Objects.requireNonNull(getActivity()).finish(); + capacityEvaluationBuilder.append("点击了返回的按钮 ,"); } } + + @Override + public void onPause() { + super.onPause(); + capacityEvaluationBuilder.append("onPause ,"); + } + + @Override + public void onStop() { + super.onStop(); + capacityEvaluationBuilder.append("onStop ,"); + } + + @Override + public void onDestroy() { + super.onDestroy(); + capacityEvaluationBuilder.append("onDestroy "); + capacityEvaluationBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), capacityEvaluationBuilder.toString(), true); + } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/CapacityMeasurementFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/CapacityMeasurementFragment.java index e2d1d6d..e1519c8 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/CapacityMeasurementFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/CapacityMeasurementFragment.java @@ -1,5 +1,8 @@ package com.navinfo.outdoor.fragment; +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -11,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.github.lazylibrary.util.FileUtils; import com.google.gson.Gson; import com.kongzue.dialog.util.DialogSettings; import com.lzy.okgo.OkGo; @@ -34,7 +38,11 @@ import com.kongzue.dialog.v3.MessageDialog; import org.json.JSONException; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -51,7 +59,8 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On private ArrayList examBeans; private String examId; private Gson gson; - private Button btn; + private File logFile; + private StringBuilder capacityMeasureBuilder; public static CapacityMeasurementFragment newInstance(Bundle bundle) { @@ -74,7 +83,7 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On capacityMeasurementRel.setLayoutManager(new LinearLayoutManager(getActivity())); capacityMeasureAdapter = new CapacityMeasureAdapter(getActivity()); capacityMeasurementRel.setAdapter(capacityMeasureAdapter); - btn = findViewById(R.id.btn); + Button btn = findViewById(R.id.btn); btn.setOnClickListener(this); gson = new Gson(); } @@ -85,6 +94,29 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On baleen = new ArrayList<>(); examBeans = new ArrayList<>(); initNetWorks(); + SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + SharedPreferences.Editor sharedEdit = sharedPreferences.edit(); + @SuppressLint("SimpleDateFormat") + DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String newFormat = formatter.format(new Date(System.currentTimeMillis())); + String pictures_time = sharedPreferences.getString("pictures_time", null); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); + sharedEdit.apply(); + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } else { + if (pictures_time.equals(newFormat)) { + logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); + } else { + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } + } + capacityMeasureBuilder = new StringBuilder(); + capacityMeasureBuilder.append("CapacityMeasurementFragment-onCreate-initData ,"); + if (Constant.USHERED != null) { + capacityMeasureBuilder.append("userId:").append(Constant.USHERED).append(","); + } + } private void initNetWorks() { @@ -137,9 +169,11 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On public void onClick(View v) { switch (v.getId()) { case R.id.iv_measurement_finish: + capacityMeasureBuilder.append("点击了返回的按钮 ,"); Objects.requireNonNull(getActivity()).finish(); break; case R.id.btn: + capacityMeasureBuilder.append("点击了提交的的按钮 ,"); if (baleen.size() != 0) { Map checkedMap = capacityMeasureAdapter.getCheckedMap(); for (int i = 0; i < baleen.size(); i++) { @@ -217,4 +251,24 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On } }); } + + @Override + public void onPause() { + super.onPause(); + capacityMeasureBuilder.append("onPause ,"); + } + + @Override + public void onStop() { + super.onStop(); + capacityMeasureBuilder.append("onStop ,"); + } + + @Override + public void onDestroy() { + super.onDestroy(); + capacityMeasureBuilder.append("onDestroy"); + capacityMeasureBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), capacityMeasureBuilder.toString(), true); + } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java index 919120d..869ce33 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java @@ -209,7 +209,9 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC markerPile.setIcon(pileDescriptor); checkBoxLife.setText("编辑"); checkBoxLife.setTextColor(Color.BLACK); - latLng = tencentMap.getProjection().fromScreenLocation(screenPilePositions); + if (screenPilePositions.x!=0||screenPilePositions.y!=0){ + latLng = tencentMap.getProjection().fromScreenLocation(screenPilePositions); + } markerPile.setPosition(latLng); markerPile.setFixingPointEnable(false); checkBoxLife.setChecked(false); 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 6f8830d..13f92bb 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java @@ -302,7 +302,9 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. markerStation.setIcon(stationDescriptor); checkBoxLife.setText("编辑"); checkBoxLife.setTextColor(Color.BLACK); - latLng = tencentMap.getProjection().fromScreenLocation(screenStationPositions); + if (screenStationPositions.x!=0||screenStationPositions.y!=0){ + latLng = tencentMap.getProjection().fromScreenLocation(screenStationPositions); + } markerStation.setPosition(latLng); markerStation.setFixingPointEnable(false); checkBoxLife.setChecked(false); @@ -1116,7 +1118,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. } } } - Objects.requireNonNull(getActivity()).runOnUiThread(new Runnable() { + getActivity().runOnUiThread(new Runnable() { @Override public void run() { HttpParams httpParams = new HttpParams(); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/EventPrefectureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/EventPrefectureFragment.java index fb2f1c0..7c72d2a 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/EventPrefectureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/EventPrefectureFragment.java @@ -1,6 +1,9 @@ package com.navinfo.outdoor.fragment; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -10,6 +13,7 @@ import android.widget.Toast; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import com.github.lazylibrary.util.FileUtils; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.WebActivity; @@ -27,7 +31,11 @@ import com.jcodecraeer.xrecyclerview.XRecyclerView; import org.json.JSONObject; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Objects; @@ -41,6 +49,8 @@ public class EventPrefectureFragment extends BaseFragment implements View.OnClic private List taskExplainBean; private EventPrefectureAdapter eventPrefectureAdapter; private int eventPage = 1; + private File logFile; + private StringBuilder eventPrefectureBuilder; public static EventPrefectureFragment newInstance(Bundle bundle) { EventPrefectureFragment fragment = new EventPrefectureFragment(); @@ -58,6 +68,28 @@ public class EventPrefectureFragment extends BaseFragment implements View.OnClic super.initData(); taskExplainBean = new ArrayList<>(); initNetwork(true); + SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + SharedPreferences.Editor sharedEdit = sharedPreferences.edit(); + @SuppressLint("SimpleDateFormat") + DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String newFormat = formatter.format(new Date(System.currentTimeMillis())); + String pictures_time = sharedPreferences.getString("pictures_time", null); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); + sharedEdit.apply(); + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } else { + if (pictures_time.equals(newFormat)) { + logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); + } else { + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } + } + eventPrefectureBuilder = new StringBuilder(); + eventPrefectureBuilder.append("EventPrefectureFragment-onCreate-initData ,"); + if (Constant.USHERED != null) { + eventPrefectureBuilder.append("userId:").append(Constant.USHERED).append(","); + } } private void initNetwork(boolean aNet) { @@ -133,10 +165,11 @@ public class EventPrefectureFragment extends BaseFragment implements View.OnClic eventRecycler.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader); eventRecycler.setLoadingMoreProgressStyle(ProgressStyle.BallRotate); //取消上拉加载,刷新功能。 -// eventRecycler.setPullRefreshEnabled(false); -// eventRecycler.setLoadingMoreEnabled(false); +// eventRecycler.setPullRefreshEnabled(false); +// eventRecycler.setLoadingMoreEnabled(false); eventPrefectureAdapter = new EventPrefectureAdapter(taskExplainBean,getActivity()); eventRecycler.setAdapter(eventPrefectureAdapter); + eventRecycler.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { @@ -149,9 +182,11 @@ public class EventPrefectureFragment extends BaseFragment implements View.OnClic initNetwork(false); } }); + eventPrefectureAdapter.setClickItem(new EventPrefectureAdapter.clickItem() { @Override public void item(int aInt) { + eventPrefectureBuilder.append("点击了item ,"); HashMap paramMap = new HashMap<>(); paramMap.put("id",aInt+""); intint2WebActivity(HttpInterface.MSG_CONTENT, paramMap); @@ -163,6 +198,27 @@ public class EventPrefectureFragment extends BaseFragment implements View.OnClic public void onClick(View v) { if (v.getId() == R.id.iv_event_task) { Objects.requireNonNull(getActivity()).finish(); + eventPrefectureBuilder.append("点击了返回的按钮 ,"); } } + + @Override + public void onPause() { + super.onPause(); + eventPrefectureBuilder.append("onPause ,"); + } + + @Override + public void onStop() { + super.onStop(); + eventPrefectureBuilder.append("onStop ,"); + } + + @Override + public void onDestroy() { + super.onDestroy(); + eventPrefectureBuilder.append("onDestroy ,"); + eventPrefectureBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), eventPrefectureBuilder.toString(), true); + } } 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 1e752ac..d03a93c 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -193,7 +193,6 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe /** * 保存小数点后两位 * @param value - * @return */ public static String format2(double value) { DecimalFormat df = new DecimalFormat("0.00"); @@ -282,9 +281,8 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe LatLng endLatLng = new LatLng(Double.parseDouble(poiEntity.getY()), Double.parseDouble(poiEntity.getX())); double geometry = GeometryTools.distanceToDouble(startLatLng, endLatLng); if (geometry > 5000) { - initGather(); Toast.makeText(getActivity(), "作业不在领取范围内,无法领取", Toast.LENGTH_SHORT).show(); - // return; + return; }else { if (geometry>50){ // Voice.sprat("注意在附近50米范围内进行采集",0); @@ -572,10 +570,9 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe Log.d("TAG", "onError: " + e.getMessage()); } }); - } - /** + /* * @param url * 所以类型的结束领取 */ @@ -629,7 +626,6 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe public void onError(Throwable e, int id) { dismissLoadingDialog(); Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); - Log.d("TAG", "onError: " + e.getMessage()); } }); } @@ -849,8 +845,6 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe }); } - - private void senMessageMarker(int type, String y, String x) { Message markerMsg = Message.obtain(); markerMsg.what = Constant.EVENT_WHAT_CURRENT_MARKER; @@ -861,7 +855,8 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe } /** - * @param url 不同任务类型对应的url + * @param url + * 不同任务类型对应的url */ private void taskByNet(String url, int taskId, boolean isSaver, int statusId) { showLoadingDialog(); @@ -958,7 +953,6 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe } else { Toast.makeText(getActivity(), "" + response.getMessage(), Toast.LENGTH_SHORT).show(); } - } @Override @@ -993,4 +987,5 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe gatherGetBuilder.append("\r\n"); FileUtils.writeFile(logFile.getAbsolutePath(), gatherGetBuilder.toString(), true); } + } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java index b963bbd..36f0b0f 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/HasSubmitFragment.java @@ -109,7 +109,7 @@ public class HasSubmitFragment extends BaseFragment implements View.OnClickListe HttpParams httpParams = new HttpParams(); httpParams.put("type", "5"); httpParams.put("pageSize", "10"); - httpParams.put("pageNum", hasPage); + httpParams.put("pageNum", hasPage+""); OkGoBuilder.getInstance() .Builder(getActivity()) .url(HttpInterface.GET_COMMIT_LIST) @@ -147,7 +147,7 @@ public class HasSubmitFragment extends BaseFragment implements View.OnClickListe HttpParams httpParams = new HttpParams(); httpParams.put("type", "2"); httpParams.put("pageSize", "10"); - httpParams.put("pageNum", hasPage); + httpParams.put("pageNum", hasPage+""); OkGoBuilder.getInstance() .Builder(getActivity()) .url(HttpInterface.GET_COMMIT_LIST) @@ -185,7 +185,7 @@ public class HasSubmitFragment extends BaseFragment implements View.OnClickListe HttpParams httpParams = new HttpParams(); httpParams.put("type", "4"); httpParams.put("pageSize", "10"); - httpParams.put("pageNum", hasPage); + httpParams.put("pageNum", hasPage+""); OkGoBuilder.getInstance() .Builder(getActivity()) .url(HttpInterface.GET_COMMIT_LIST) @@ -223,7 +223,7 @@ public class HasSubmitFragment extends BaseFragment implements View.OnClickListe HttpParams httpParams = new HttpParams(); httpParams.put("type", "3"); httpParams.put("pageSize", "10"); - httpParams.put("pageNum", hasPage); + httpParams.put("pageNum", hasPage+""); OkGoBuilder.getInstance() .Builder(getActivity()) .url(HttpInterface.GET_COMMIT_LIST) @@ -261,7 +261,7 @@ public class HasSubmitFragment extends BaseFragment implements View.OnClickListe HttpParams httpParams = new HttpParams(); httpParams.put("type", "1"); httpParams.put("pageSize", "10"); - httpParams.put("pageNum", hasPage); + httpParams.put("pageNum", hasPage+""); OkGoBuilder.getInstance() .Builder(getActivity()) .url(HttpInterface.GET_COMMIT_LIST) 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 cb1588f..26b02e8 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java @@ -85,8 +85,6 @@ import java.util.Objects; * 寻宝-上报-其他的fragment */ public class OtherFragment extends BaseDrawerFragment implements View.OnClickListener { - - private Spinner spinnerOther; String[] others = new String[]{"门牌", "公交", "情报"};// //门牌:7 公交:8 情报:9 现在其他任务类型里就这三种 String[] spinner = new String[]{"存在", "不存在", "无法验证"}; @@ -648,7 +646,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis initOtherSharePre(); } - /** + /* * 防止当页面崩溃后出现数据丢失 */ public void initOtherSharePre() { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java index 41b61c0..c1765b4 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PhotoFragment.java @@ -32,8 +32,6 @@ import java.util.Objects; * 图片-fragment */ public class PhotoFragment extends BaseFragment implements View.OnClickListener { - - private ArrayList fileBeans; private ArrayList deleteFiles; private PhotoAdapter photoAdapter; @@ -94,7 +92,7 @@ public class PhotoFragment extends BaseFragment implements View.OnClickListener if (fileListByUUID.size()>=2){ File parentFile = fileListByUUID.get(0).getParentFile(); for (int i = 0; i < fileListByUUID.size()-1; i++) { - File file = new File(parentFile+"/" + i + ".jpg"); + File file = new File(parentFile+"/" + i + ".webp"); fileBeans.add(new FileBean(file, false)); } } 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 aca0bf4..51c9bd7 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -194,7 +194,6 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe checkBoxLife.setTextColor(Color.WHITE); checkBoxLife.setChecked(true); } - @Override public void onCancel() { BitmapDescriptor poiDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_show); @@ -1105,6 +1104,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } else { Toast.makeText(getActivity(), "" + response.getMessage(), Toast.LENGTH_SHORT).show(); } + } @Override @@ -1112,7 +1112,9 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe dismissLoadingDialog(); Log.d("TAG", "onError: " + e.getMessage()); } + }); + } @Override 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 62ac081..b8ba353 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java @@ -92,7 +92,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick private File logFile; private StringBuilder poiVideoBuilder; - public static PoiVideoFragment newInstance(Bundle bundle) { PoiVideoFragment fragment = new PoiVideoFragment(); fragment.setArguments(bundle); @@ -270,7 +269,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick boolean isImageLoad = false; List fileListByUUID = AWMp4ParserHelper.getInstance().getFileListByUUID(showPoiEntity.getId()); for (int i = 0; i < fileListByUUID.size(); i++) { - if (fileListByUUID.get(i).getPath().contains(".jpg") && !fileListByUUID.get(i).getPath().contains("paper.txt")) { + if (fileListByUUID.get(i).getPath().contains(".webp") && !fileListByUUID.get(i).getPath().contains("paper.txt")) { if (fileListByUUID.get(i).exists() && !isImageLoad) { // 使用glide加载视频的第一帧 Glide.with(Objects.requireNonNull(getActivity())).load(fileListByUUID.get(i)).into(ivPoiVideoPicture); @@ -316,7 +315,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick boolean isImageLoad = false; for (int i = 0; i < fileListByUUID.size(); i++) { File videoFile = fileListByUUID.get(i); - if (videoFile.getPath().contains(".jpg") && !videoFile.getPath().contains("paper.txt")) { + if (videoFile.getPath().contains(".webp") && !videoFile.getPath().contains("paper.txt")) { if (videoFile.exists() && !isImageLoad) { // 使用glide加载视频的第一帧 AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivPoiVideoPicture, 500); @@ -350,7 +349,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick case R.id.tv_short://手动拍摄 poiVideoBuilder.append("点击了手动拍摄的按钮 ,"); Intent intents = new Intent(getContext(), PicturesActivity.class); - File filePath = AWMp4ParserHelper.getInstance().obtainJPGFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); + File filePath = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); intents.putExtra(Constant.INTENT_JPG_PATH, filePath.getAbsolutePath()); intents.putExtra("poiEntity", showPoiEntity); intents.putExtra(Constant.INTENT_VIDEO_OBLATION, 0); @@ -360,7 +359,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick case R.id.tv_combo://自动连拍: poiVideoBuilder.append("点击了自动连拍的按钮 ,"); Intent intent = new Intent(getContext(), PicturesActivity.class); - File fileJpgPath = AWMp4ParserHelper.getInstance().obtainJPGFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); + File fileJpgPath = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); intent.putExtra(Constant.INTENT_JPG_PATH, fileJpgPath.getAbsolutePath()); intent.putExtra("poiEntity", showPoiEntity); intent.putExtra(Constant.INTENT_VIDEO_OBLATION, 0); @@ -541,8 +540,8 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick } else if (requestCode == 0x102 && resultCode == 0x111) { tvCombo.setEnabled(false); } - if (data != null && data.hasExtra(Constant.INTENT_VIDEO_PATH)) { - String videoPath = data.getStringExtra(Constant.INTENT_VIDEO_PATH); + if (data != null && data.hasExtra(Constant.INTENT_PICTURES_PATH)) { + String videoPath = data.getStringExtra(Constant.INTENT_PICTURES_PATH); assert videoPath != null; File videoFile = new File(videoPath); if (videoFile.exists()) { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RegisterFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RegisterFragment.java index 32859dd..3d56fb9 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RegisterFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RegisterFragment.java @@ -294,13 +294,14 @@ public class RegisterFragment extends BaseFragment implements View.OnClickListen @Override public void onPause() { super.onPause(); - registerBuilder.append("onPause,"); + + registerBuilder.append("onPause ,"); } @Override public void onStop() { super.onStop(); - registerBuilder.append("onStop,"); + registerBuilder.append("onStop ,"); } @Override 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 c8779ac..2303d3e 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java @@ -108,7 +108,6 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList if (!EventBus.getDefault().isRegistered(this)) {//加上判断 EventBus.getDefault().register(this); } - } @Override @@ -267,7 +266,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList boolean isImageLoad = false; List fileListByUUID = AWMp4ParserHelper.getInstance().getFileListByUUID(showPoiEntity.getId()); for (int i = 0; i < fileListByUUID.size(); i++) { - if (fileListByUUID.get(i).getPath().contains(".jpg") && !fileListByUUID.get(i).getPath().contains("paper.txt")) { + if (fileListByUUID.get(i).getPath().contains(".webp") && !fileListByUUID.get(i).getPath().contains("paper.txt")) { if (fileListByUUID.get(i).exists() && !isImageLoad) { // 使用glide加载视频的第一帧 Glide.with(Objects.requireNonNull(getActivity())).load(fileListByUUID.get(i)).into(ivRoadPicture); @@ -328,7 +327,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList boolean isImageLoad = false; for (int i = 0; i < fileListByUUID.size(); i++) { File videoFile = fileListByUUID.get(i); - if (videoFile.getPath().contains(".jpg") && !videoFile.getPath().contains("paper.txt")) { + if (videoFile.getPath().contains(".webp") && !videoFile.getPath().contains("paper.txt")) { if (videoFile.exists() && !isImageLoad) { // 使用glide加载视频的第一帧 AWMp4ParserHelper.getInstance().loadFirstWithGlide(getActivity(), Uri.fromFile(videoFile).toString(), ivRoadPicture, 500); @@ -362,7 +361,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList case R.id.tv_pictures: roadBuilder.append("点击了自动拍照的按钮 ,"); Intent intent = new Intent(getContext(), PicturesActivity.class); - File finalFile = AWMp4ParserHelper.getInstance().obtainJPGFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); + File finalFile = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); intent.putExtra(Constant.INTENT_JPG_PATH, finalFile.getAbsolutePath()); intent.putExtra(Constant.INTENT_VIDEO_OBLATION, 0); intent.putExtra(Constant.INTENT_POI_VIDEO_TYPE, 3); @@ -543,9 +542,9 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0x101) { if (resultCode == 0x111) { - if (data != null && data.hasExtra(Constant.INTENT_VIDEO_PATH)) { + if (data != null && data.hasExtra(Constant.INTENT_PICTURES_PATH)) { // 扫描照片目录中当前视频的所有视频文件 - String videoPath = data.getStringExtra(Constant.INTENT_VIDEO_PATH); + String videoPath = data.getStringExtra(Constant.INTENT_PICTURES_PATH); assert videoPath != null; File videoFile = new File(videoPath); if (videoFile.exists()) { @@ -762,13 +761,11 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList @Override protected ChargingPileEntity initChargingPileEntityByUI(ChargingPileEntity entity) { - return null; } @Override protected PoiCheckResult checkChargingPileEntity(ChargingPileEntity entity) { - return null; } } \ No newline at end of file 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 85463f4..7acab0a 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java @@ -130,6 +130,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList }); if (Constant.currentLocation!=null){ if (Constant.USHERED!=null){ + cbSelect.setChecked(false); refreshData(); } } @@ -168,6 +169,7 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList cbSelect.setChecked(false); if (Constant.currentLocation!=null){ if (Constant.USHERED!=null){ + cbSelect.setChecked(false); refreshData(); } @@ -354,7 +356,6 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList } public void refreshData() { - cbSelect.setChecked(false); if (roadEntities == null) { roadEntities = new ArrayList<>(); } else { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TaskExplainFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TaskExplainFragment.java index 0966616..1f3f494 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TaskExplainFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TaskExplainFragment.java @@ -1,6 +1,9 @@ package com.navinfo.outdoor.fragment; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -10,6 +13,7 @@ import android.widget.Toast; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import com.github.lazylibrary.util.FileUtils; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.FragmentManagement; @@ -27,7 +31,11 @@ import com.jcodecraeer.xrecyclerview.XRecyclerView; import org.json.JSONObject; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -40,6 +48,8 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis private TaskExplainAdapter taskExplainAdapter; private int taskPage = 1; private List explainList; + private File logFile; + private StringBuilder taskExplainBuilder; public static TaskExplainFragment newInstance(Bundle bundle) { @@ -88,12 +98,11 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis taskExplainAdapter.setOnItemClick(new TaskExplainAdapter.OnItemClick() { @Override public void onClick(int pos) { - + taskExplainBuilder.append("点击了item ,"); Intent itemIntent = new Intent(getActivity(), FragmentManagement.class); itemIntent.putExtra("tag", 10); itemIntent.putExtra("id",pos+""); startActivity(itemIntent); - } }); } @@ -103,6 +112,28 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis super.initData(); explainList = new ArrayList<>(); initNetWork(true); + SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + SharedPreferences.Editor sharedEdit = sharedPreferences.edit(); + @SuppressLint("SimpleDateFormat") + DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String newFormat = formatter.format(new Date(System.currentTimeMillis())); + String pictures_time = sharedPreferences.getString("pictures_time", null); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); + sharedEdit.apply(); + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } else { + if (pictures_time.equals(newFormat)) { + logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); + } else { + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } + } + taskExplainBuilder = new StringBuilder(); + taskExplainBuilder.append("TaskExplainFragment-onCreate-initData ,"); + if (Constant.USHERED != null) { + taskExplainBuilder.append("userId:").append(Constant.USHERED).append(","); + } } private void initNetWork(boolean aNet) { @@ -171,6 +202,27 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis public void onClick(View v) { if (v.getId() == R.id.iv_find_task_explain) { Objects.requireNonNull(getActivity()).finish(); + taskExplainBuilder.append("点击了返回的按钮 ,"); } } + + @Override + public void onPause() { + super.onPause(); + taskExplainBuilder.append("onPause ,"); + } + + @Override + public void onStop() { + super.onStop(); + taskExplainBuilder.append("onStop ,"); + } + + @Override + public void onDestroy() { + super.onDestroy(); + taskExplainBuilder.append("onDestroy "); + taskExplainBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), taskExplainBuilder.toString(), true); + } } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TaskPrefectureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TaskPrefectureFragment.java index c45c494..177e838 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TaskPrefectureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TaskPrefectureFragment.java @@ -1,6 +1,9 @@ package com.navinfo.outdoor.fragment; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -10,6 +13,7 @@ import android.widget.Toast; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import com.github.lazylibrary.util.FileUtils; import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.WebActivity; @@ -27,7 +31,11 @@ import com.jcodecraeer.xrecyclerview.XRecyclerView; import org.json.JSONObject; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Objects; @@ -41,6 +49,8 @@ public class TaskPrefectureFragment extends BaseFragment implements View.OnClick private List dataBeanList; private TaskPrefectureAdapter taskPrefectureAdapter; private int taskPage = 1; + private File logFile; + private StringBuilder taskPrefectureBuilder; public static TaskPrefectureFragment newInstance(Bundle bundle) { @@ -79,6 +89,7 @@ public class TaskPrefectureFragment extends BaseFragment implements View.OnClick taskPrefectureAdapter.setClickItem(new TaskPrefectureAdapter.clickItem() { @Override public void item(int id) { + taskPrefectureBuilder.append("点击了item ,"); HashMap paramMap = new HashMap<>(); paramMap.put("id",id+""); intint2WebActivity(HttpInterface.MSG_CONTENT, paramMap); @@ -91,6 +102,28 @@ public class TaskPrefectureFragment extends BaseFragment implements View.OnClick super.initData(); dataBeanList = new ArrayList<>(); initNetwork(true); + SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + SharedPreferences.Editor sharedEdit = sharedPreferences.edit(); + @SuppressLint("SimpleDateFormat") + DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String newFormat = formatter.format(new Date(System.currentTimeMillis())); + String pictures_time = sharedPreferences.getString("pictures_time", null); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); + sharedEdit.apply(); + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } else { + if (pictures_time.equals(newFormat)) { + logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); + } else { + logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); + } + } + taskPrefectureBuilder = new StringBuilder(); + taskPrefectureBuilder.append("TaskPrefectureFragment-onCreate-initData ,"); + if (Constant.USHERED != null) { + taskPrefectureBuilder.append("userId:").append(Constant.USHERED).append(","); + } } private void initNetwork(boolean aNet) { @@ -193,6 +226,27 @@ public class TaskPrefectureFragment extends BaseFragment implements View.OnClick public void onClick(View v) { if (v.getId() == R.id.iv_find_task) { Objects.requireNonNull(getActivity()).finish(); + taskPrefectureBuilder.append("点击了返回的按钮 ,"); } } + + @Override + public void onPause() { + super.onPause(); + taskPrefectureBuilder.append("onPause ,"); + } + + @Override + public void onStop() { + super.onStop(); + taskPrefectureBuilder.append("onStop ,"); + } + + @Override + public void onDestroy() { + super.onDestroy(); + taskPrefectureBuilder.append("onDestroy"); + taskPrefectureBuilder.append("\r\n"); + FileUtils.writeFile(logFile.getAbsolutePath(), taskPrefectureBuilder.toString(), true); + } } diff --git a/app/src/main/java/com/navinfo/outdoor/util/AWMp4ParserHelper.java b/app/src/main/java/com/navinfo/outdoor/util/AWMp4ParserHelper.java index d3d3630..61f8275 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/AWMp4ParserHelper.java +++ b/app/src/main/java/com/navinfo/outdoor/util/AWMp4ParserHelper.java @@ -259,7 +259,7 @@ public class AWMp4ParserHelper { /** * 根据文件夹路径生成最新的视频文件路径 * */ - public File obtainJPGFilePath(String folderPath) { + public File obtainWebpFilePath(String folderPath) { if (folderPath == null) { return null; } @@ -270,26 +270,26 @@ public class AWMp4ParserHelper { File[] fileList = folderFile.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { - if (pathname.getName().endsWith(".jpg")){ + if (pathname.getName().endsWith(".webp")){ return true; } return false; } }); if (fileList == null || fileList.length==0) { - return new File(folderPath+"/0.jpg"); + return new File(folderPath+"/0.webp"); } int maxIndex = 0; for (int i = 0; i < fileList.length; i++) { File file = fileList[i]; if (file!=null) { - int index = Integer.parseInt(file.getName().replace(".jpg", "")); + int index = Integer.parseInt(file.getName().replace(".webp", "")); if (index>=maxIndex) { maxIndex = index; } } } - return new File(folderPath+"/"+(maxIndex+1)+".jpg"); + return new File(folderPath+"/"+(maxIndex+1)+".webp"); } /** diff --git a/app/src/main/java/com/navinfo/outdoor/util/PhotoUtils.java b/app/src/main/java/com/navinfo/outdoor/util/PhotoUtils.java index 0d98563..2538ca9 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/PhotoUtils.java +++ b/app/src/main/java/com/navinfo/outdoor/util/PhotoUtils.java @@ -33,7 +33,7 @@ public class PhotoUtils { lat= initEncode(latLng); } long time = System.currentTimeMillis(); - return new File(Constant.PICTURE_FOLDER, d + time + "_p" + lat + "_a" + 0 + ".jpg"); + return new File(Constant.PICTURE_FOLDER, d + time + "_p" + lat + "_a" + 0 + ".webp"); } diff --git a/app/src/main/java/com/navinfo/outdoor/util/UploadUtils.java b/app/src/main/java/com/navinfo/outdoor/util/UploadUtils.java index 46f73aa..431dd86 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/UploadUtils.java +++ b/app/src/main/java/com/navinfo/outdoor/util/UploadUtils.java @@ -51,8 +51,7 @@ public class UploadUtils { new Thread(new Runnable() { @Override public void run() { - PoiEntity poiDaoPoiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); - poiDao.deletePoiEntity(poiDaoPoiEntity); + poiDao.deletePoiEntity(showPoiEntity); if (showPoiEntity.getId()!=null){ List fileListByUUID = AWMp4ParserHelper.getInstance().getFileListByUUID(showPoiEntity.getId()); for (int i = 0; i < fileListByUUID.size(); i++) { @@ -113,8 +112,7 @@ public class UploadUtils { new Thread(new Runnable() { @Override public void run() { - PoiEntity poiDaoPoiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); - poiDao.deletePoiEntity(poiDaoPoiEntity); + poiDao.deletePoiEntity(showPoiEntity); for (int i = 0; i < poiPicList.size(); i++) { poiPicList.get(i).delete(); } @@ -169,8 +167,7 @@ public class UploadUtils { new Thread(new Runnable() { @Override public void run() { - PoiEntity poiDaoPoiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); - poiDao.deletePoiEntity(poiDaoPoiEntity); + poiDao.deletePoiEntity(showPoiEntity); if (showPoiEntity.getId() != null) { List fileListByUUID = AWMp4ParserHelper.getInstance().getFileListByUUID(showPoiEntity.getId()); for (int i = 0; i < fileListByUUID.size(); i++) { @@ -231,8 +228,7 @@ public class UploadUtils { new Thread(new Runnable() { @Override public void run() { - PoiEntity poiDaoPoiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); - poiDao.deletePoiEntity(poiDaoPoiEntity); + poiDao.deletePoiEntity(showPoiEntity); for (int i = 0; i < otherUploadList.size(); i++) { otherUploadList.get(i).delete(); } @@ -288,8 +284,7 @@ public class UploadUtils { new Thread(new Runnable() { @Override public void run() { - PoiEntity poiDaoPoiEntity = poiDao.getPoiEntity(showPoiEntity.getId()); - poiDao.deletePoiEntity(poiDaoPoiEntity); + poiDao.deletePoiEntity(showPoiEntity); for (int i = 0; i < chargingStationList.size(); i++) { chargingStationList.get(i).delete(); } diff --git a/app/src/main/java/com/navinfo/outdoor/util/WebpUtil.java b/app/src/main/java/com/navinfo/outdoor/util/WebpUtil.java new file mode 100644 index 0000000..e1631b3 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/util/WebpUtil.java @@ -0,0 +1,47 @@ +package com.navinfo.outdoor.util; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.util.Log; +import android.widget.Toast; + +import com.wanghong.webpnative.WebPNative; + +import java.io.File; + +import static com.lzy.okgo.utils.HttpUtils.runOnUiThread; + +public class WebpUtil { + + public static void performEncodeImage(Context context, File imgFile, float quFloat) { + if (imgFile.exists()) { + WebPNative webPNative = new WebPNative(); + new Thread(new Runnable() { + @Override + public void run() { + try { + Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); + String[] split = imgFile.getName().split(".jpg"); + String output = imgFile.getParent() + File.separator + split[0] + ".webp"; + webPNative.encodeRGBA(bitmap, output, quFloat); + imgFile.delete(); + /*long start = System.currentTimeMillis(); + long useTime = System.currentTimeMillis() - start; + Log.e("WebpUtil:", String.valueOf(useTime)); + File file = new File(output.substring(0, output.length() - 5) + ".webp"); + new File(output).renameTo(file);*/ + if (!bitmap.isRecycled()) { + bitmap.recycle(); + } + } catch (Exception e) { + Log.d("output:", e.toString()); + Toast.makeText(context, "文件转换失败", Toast.LENGTH_SHORT).show(); + } + } + }).start(); + } else { + Toast.makeText(context, "源文件不存在", Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/res/layout/charging_pile_fragment.xml b/app/src/main/res/layout/charging_pile_fragment.xml index 5b4781a..7435c5f 100644 --- a/app/src/main/res/layout/charging_pile_fragment.xml +++ b/app/src/main/res/layout/charging_pile_fragment.xml @@ -1,10 +1,10 @@ - + + + + android:layout_height="match_parent"> + + + android:layout_height="match_parent"> + + app:layout_constraintTop_toTopOf="parent" /> + @@ -128,10 +132,11 @@ android:layout_toRightOf="@id/check_pot_life" android:background="@drawable/selector_change_bg" android:button="@null" - android:visibility="gone" android:gravity="center" android:text="保存" - android:textSize="8sp" /> + android:textSize="8sp" + android:visibility="gone" /> + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/linear_pot"> + + android:layout_alignParentLeft="true" + android:layout_centerVertical="true" + android:layout_marginLeft="18dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:text="名称*" + android:textColor="#333" /> + android:text="充电桩" + android:textColor="#333" + android:textSize="15sp" /> + + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/text"> + + android:orientation="horizontal"> + + android:textColor="@color/test_color_selector" /> + + android:textColor="@color/test_color_selector" /> + + android:orientation="horizontal"> + + android:textColor="@color/test_color_selector" /> + + android:textColor="@color/test_color_selector" /> + + android:orientation="horizontal"> + + android:textColor="@color/test_color_selector" /> + + true - true + false