package com.james.motion.ui.activity;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.app.Dialog;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.PersistableBundle;
import android.os.SystemClock;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Chronometer;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.LocationSource.OnLocationChangedListener;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.MyLocationStyle;
import com.amap.api.maps.model.Polyline;
import com.amap.api.maps.model.PolylineOptions;
import com.blankj.utilcode.util.SPUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.james.motion.R;
import com.james.motion.commmon.bean.PathRecord;
import com.james.motion.commmon.bean.SportMotionRecord;
import com.james.motion.commmon.utils.CountTimerUtil;
import com.james.motion.commmon.utils.DateUtils;
import com.james.motion.commmon.utils.LogUtils;
import com.james.motion.commmon.utils.MySp;
import com.james.motion.commmon.utils.UIHelper;
import com.james.motion.db.DataManager;
import com.james.motion.db.RealmHelper;
import com.james.motion.sport_motion.MotionUtils;
import com.james.motion.sport_motion.PathSmoothTool;
import com.james.motion.ui.BaseActivity;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
/**
* 描述: 运动界面
* 作者: james
* 日期: 2019/2/27 14:58
* 类名: SportMapActivity
*/
public class SportMapActivity extends BaseActivity {
@BindView(R.id.sport_content)
RelativeLayout sportContent;
@BindView(R.id.mapView)
MapView mapView;
@BindView(R.id.rlMap)
RelativeLayout rlMap;
@BindView(R.id.tv_mode)
TextView tvMode;
@BindView(R.id.tv1)
TextView tv1;
@BindView(R.id.tv2)
TextView tv2;
@BindView(R.id.tv3)
TextView tv3;
@BindView(R.id.cm_passtime)
Chronometer cmPasstime;
@BindView(R.id.tvMileage)
TextView tvMileage;
@BindView(R.id.tvSpeed)
TextView tvSpeed;
@BindView(R.id.fl_count_timer)
FrameLayout flCountTimer;
@BindView(R.id.tv_number_anim)
TextView tvNumberAnim;
private Dialog tipDialog = null;
//运动计算相关
private DecimalFormat decimalFormat = new DecimalFormat("0.00");
// private boolean isBind = false;
// private LocationService mService = null;
// private ServiceConnection mConnection = new ServiceConnection() {
//
// @Override
// public void onServiceDisconnected(ComponentName name) {
// mService = null;
// }
//
// @Override
// public void onServiceConnected(ComponentName name, IBinder service) {
// // 获取服务上的IBinder对象,调用IBinder对象中定义的自定义方法,获取Service对象
// LocationService.LocalBinder binder = (LocationService.LocalBinder) service;
// mService = binder.getService();
// mService.setInterfaceLocationed(aMapLocation -> {
// Message msg = Message.obtain();
// msg.what = LOCATION;
// msg.obj = aMapLocation;
// mHandler.sendMessage(msg);
// });
// }
// };
//地图中定位的类
private OnLocationChangedListener mListener = null;
private AMapLocationClient mLocationClient;
private AMapLocationClientOption mLocationOption;
private final Long interval = 4000L;//定位时间间隔
private PolylineOptions polylineOptions;
private Polyline mOriginPolyline;
private PathRecord record;
private DataManager dataManager = null;
private PathSmoothTool mpathSmoothTool = null;
private List<LatLng> mSportLatLngs = new ArrayList<>(0);
private long seconds = 0;//秒数(时间)
private long mStartTime = 0;
private long mEndTime = 0;
private double distance;//路程
// private float calorie;//卡路里
// private float speed;//速度
private boolean ISSTARTUP = false;
private ValueAnimator apperaAnim1;
private ValueAnimator hiddenAnim1;
private ValueAnimator apperaAnim2;
private ValueAnimator hiddenAnim2;
private ValueAnimator apperaAnim3;
private ValueAnimator hiddenAnim3;
private AMap aMap;
private boolean mode = true;
private final int LOCATION = 0;
private Handler mHandler = new Handler(Looper.getMainLooper())
// {
// @Override
// public void handleMessage(Message msg) {
// switch (msg.what) {
// case LOCATION://用handler刷新数据
// updateLocation((AMapLocation) msg.obj);
// break;
// default:
// break;
// }
// }
// }
;
private class MyRunnable implements Runnable {
@Override
public void run() {
cmPasstime.setText(formatseconds());
mHandler.postDelayed(this, 1000);
}
}
private MyRunnable mRunnable = null;
@Override
public int getLayoutId() {
return R.layout.activity_sportmap;
}
@Override
public void initData(Bundle savedInstanceState) {
mapView.onCreate(savedInstanceState);// 此方法必须重写
record = new PathRecord();
dataManager = new DataManager(new RealmHelper());
//显示倒计时
CountTimerUtil.start(tvNumberAnim, new CountTimerUtil.AnimationState() {
@Override
public void start() {
}
@Override
public void repeat() {
}
@Override
public void end() {
flCountTimer.setVisibility(View.GONE);
hiddenAnim1.start();
// apperaAnim2.start_bg();
hiddenAnim3.start();
ISSTARTUP = true;
seconds = 0;
cmPasstime.setBase(SystemClock.elapsedRealtime());
mStartTime = System.currentTimeMillis();
if (record == null)
record = new PathRecord();
record.setStartTime(mStartTime);
if (mRunnable == null)
mRunnable = new MyRunnable();
mHandler.postDelayed(mRunnable, 0);
startUpLocation();
}
});
if (aMap == null) {
aMap = mapView.getMap();
setUpMap();
}
initPolyline();
setMode();
}
private void initPolyline() {
polylineOptions = new PolylineOptions();
polylineOptions.color(getResources().getColor(R.color.colorAccent));
polylineOptions.width(20f);
polylineOptions.useGradient(true);
mpathSmoothTool = new PathSmoothTool();
mpathSmoothTool.setIntensity(4);
}
private void startUpLocation() {
//绑定服务
// isBind = bindService(new Intent(this, LocationService.class), mConnection, Service.BIND_AUTO_CREATE);
//屏幕保持常亮
if (nul
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计-基于Android系统的跑步运动记录轨迹app的设计与实现源码
共174个文件
xml:58个
java:55个
png:42个
5星 · 超过95%的资源 12 下载量 126 浏览量
2023-02-09
19:32:03
上传
评论 4
收藏 25.48MB ZIP 举报
温馨提示
毕业设计-基于Android系统的跑步运动记录轨迹app的设计与实现源码下载 毕业设计-基于Android系统的跑步运动记录轨迹app的设计与实现源码下载 毕业设计-基于Android系统的跑步运动记录轨迹app的设计与实现源码下载
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计-基于Android系统的跑步运动记录轨迹app的设计与实现源码 (174个子文件)
Motion.apk 17.26MB
gradlew.bat 2KB
.DS_Store 6KB
.gitignore 216B
.gitignore 8B
config.gradle 4KB
build.gradle 4KB
build.gradle 694B
settings.gradle 16B
gradlew 5KB
gradle-wrapper.jar 53KB
SportMapActivity.java 32KB
SportRecordDetailsMapFragment.java 14KB
SportResultActivity.java 14KB
HomeActivity.java 13KB
CustomPopWindow.java 13KB
CountDownProgressView.java 12KB
PathSmoothTool.java 11KB
UIHelper.java 11KB
BaseActivity.java 9KB
MotionUtils.java 8KB
RealmHelper.java 7KB
CustomMonthView.java 7KB
CustomWeekView.java 7KB
DeviceHelper.java 7KB
LoginActivity.java 7KB
Utils.java 6KB
MyApplication.java 6KB
LocationService.java 6KB
RegistActivity.java 6KB
LogUtils.java 6KB
FastLoginFragment.java 6KB
Validator.java 6KB
PathRecord.java 5KB
SplashActivity.java 5KB
BaseFragment.java 5KB
SportRecordDetailsActivity.java 5KB
SportMotionRecord.java 4KB
APermission.java 4KB
PermissionUtil.java 4KB
PsdLoginFragment.java 4KB
CustomYearView.java 4KB
TraceRePlay.java 4KB
SportsActivity.java 4KB
CountTimerUtil.java 3KB
CustomProgressDialog.java 2KB
DataManager.java 2KB
Permissions.java 2KB
DBHelper.java 2KB
SportRecordDetailsFragment.java 2KB
CustomWeekBar.java 2KB
PermissionActivity.java 2KB
SportRecordDetailsSpeedFragment.java 1KB
SportCalendarAdapter.java 1KB
DateUtils.java 1KB
PermissionHelper.java 992B
UserAccount.java 936B
AMapScrollViewPager.java 862B
TabEntity.java 718B
RecordServiceImpl.java 679B
PermissionListener.java 384B
Htmls.java 330B
MySp.java 323B
RecordService.java 286B
Conn.java 278B
PermissionRetryCallBack.java 111B
首页.jpg 106KB
开始运动.jpg 82KB
splash.jpg 62KB
运动倒计时.jpg 58KB
说明.md 854B
运动-地图模式_暂停.png 2.11MB
运动-地图模式.png 1.82MB
运动-跑步模式.png 1.03MB
start.png 880KB
运动结果.png 824KB
sport_bg.png 474KB
login_bg.png 456KB
运动记录.png 452KB
splash_bg.png 372KB
star_bg.png 93KB
app_icon.png 14KB
sport_end.png 11KB
sport_start.png 10KB
big_star.png 10KB
map_mode.png 9KB
small_star.png 8KB
big_no_star.png 6KB
apk_dl.png 6KB
small_no_star.png 6KB
run_mode.png 5KB
ic_calendar.png 4KB
icon_wc.png 2KB
icon_qq.png 2KB
icon_tip.png 2KB
mylocation_point.png 2KB
icon_code.png 1KB
gps_point.png 1KB
icon_help.png 1KB
icon_user.png 1KB
共 174 条
- 1
- 2
like_mars
- 粉丝: 36
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页