提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
随着互联网的快速发展和智能手机的普及,人们的生活方式正在发生深刻的变化。其中,跑腿送货APP作为一种新型的服务模式,已经逐渐成为人们日常生活中不可或缺的一部分,对于忙碌的上班族或者学生,使用跑腿送货APP服务更是一种节省时间的最佳选择。随着用户需求的不断增长和技术的进一步创新,跑腿送货APP行业将会呈现出更多的发展机遇和挑战。
基于此背景,本文使用Android studio开发工具和Bomb云数据库,设计一种基于android的跑腿服务App。本APP主要包括用户页面和骑手页面,用户和骑手可以使用个人手机号进行账号注册及登录,其中用户使用客户端可以进行代取、代送、代买等操作,管理自己的常用地址信息和个人信息,还可以对骑手的服务进行评价反馈等;骑手使用骑手端APP,可以对客户订单进行查看和抢单操作,通过系统提供的联系信息与客户直接沟通,还能利用内置的导航功能进行路线规划和定位。通过该方法,给予用户便捷跑腿服务,合理分配人力资源、降低配送时间、节省人力成本,提高了配送效率。在本APP中可以进行帮取、帮送、帮买服务的下单,根据配送的距离和帮买的订单价格进行相关费用的支付,用户还可以使用地图导航看到物品实时物流情况。本文将围绕该课题进行研究讨论。
提示:以下是本篇文章正文内容,下面案例可供参考
一、产品总体框架
二、使用步骤
1.引入库
代码如下(示例):
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation files('libs/AMapTrack_1.4.1_AMapLocation_6.1.0_20220402.jar')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'io.github.bmob:android-sdk:3.8.21'
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.okhttp3:okhttp:4.8.1'
implementation 'com.squareup.okio:okio:2.2.2'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.49'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.scwang.smart:refresh-layout-kernel:2.0.3' //核心必须依赖
implementation 'com.scwang.smart:refresh-header-classics:2.0.3' //经典刷新头
implementation 'com.scwang.smart:refresh-footer-classics:2.0.3' //经典加载
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
implementation 'com.jakewharton:butterknife:10.0.0'
implementation 'com.lzy.net:okgo:3.0.4'
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
implementation 'io.github.lucksiege:pictureselector:v3.10.7'
// 图片压缩 (按需引入)
implementation 'io.github.lucksiege:compress:v3.10.7'
// 图片裁剪 (按需引入)
implementation 'io.github.lucksiege:ucrop:v3.10.7'
// 自定义相机 (按需引入)
implementation 'io.github.lucksiege:camerax:v3.10.7'
implementation 'com.guolindev.permissionx:permissionx:1.6.1'
implementation 'org.greenrobot:eventbus:3.0.0'
implementation 'com.github.xiaohaibin:XBanner:1.7.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
implementation 'com.contrarywind:Android-PickerView:3.2.7'
//七牛云图片存储
// 1 直接导入
implementation 'com.qiniu:qiniu-android-sdk:8.4.+'
// 2 如果要修改okhttp依赖的版本,可采用以下方式(强烈建议使用七牛库依赖的okhttp版本)
implementation ('com.qiniu:qiniu-android-sdk:8.4.+'){
exclude (group: 'com.squareup.okhttp3', module: 'okhttp')
}
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
implementation 'com.qiniu:happy-dns:0.2.13'
implementation 'com.yanzhenjie:permission:2.0.0-rc4'
implementation 'com.squareup.picasso:picasso:2.5.2'
//新版扫码
implementation 'com.github.ailiwean:NBZxing-Scale:0.0.6'
implementation 'com.github.ailiwean:NBZxing:0.2.3'
implementation 'com.zhihu.android:matisse:0.5.3-beta3'
//轮播图
implementation 'com.github.zhpanvip:bannerviewpager:3.5.5'
implementation 'com.github.hackware1993:MagicIndicator:1.5.0'
//视频播放
implementation 'cn.jzvd:jiaozivideoplayer:7.4.1'
implementation 'com.amap.api:search:latest.integration'
// implementation 'com.amap.api:navi-3dmap:latest.integration'
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
2.首页功能
进入到首页模块,首先根据用户的gps进行经纬度的定位,通过高德地图进行所在地区的显示,用户可以选择帮我送、帮我取、帮我买的服务订单的下单操作,选择完收件地址和取件地址之后进入到提交订单页面。
代码如下(示例):
```@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedListener;
if (mlocationClient == null) {
try {
mlocationClient = new AMapLocationClient(getActivity());
} catch (Exception e) {
e.printStackTrace();
}
mLocationOption = new AMapLocationClientOption();
//设置定位监听
mlocationClient.setLocationListener(this);
//设置为高精度定位模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置定位参数
mLocationOption.setOnceLocation(true);
mLocationOption.setInterval(Long.valueOf("10000"));
mlocationClient.setLocationOption(mLocationOption);
// 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
// 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
// 在定位结束后,在合适的生命周期调用onDestroy()方法
// 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
mlocationClient.startLocation();
}
}
3.下单功能
在下单功能中,用户选择完取件地址和收件地址后,需要选择取件时间、物品信息、备注信息、用户可以添加小费增加骑手抢单概率,根据用户选择取件地址和收件地址计算两点位置的距离,根据距离计算跑腿费用。
代码如下(示例):
LatLng latLng1 = new LatLng(Double.parseDouble(latQu), Double.parseDouble(lonQu));
LatLng latLng2 = new LatLng(Double.parseDouble(latSong), Double.parseDouble(lonSong));
LatLonPoint mStartPoint = new LatLonPoint(Double.parseDouble(latQu), Double.parseDouble(lonQu));
LatLonPoint mEndPoint = new LatLonPoint(Double.parseDouble(latSong), Double.parseDouble(lonSong));
setfromandtoMarker(aMap, mStartPoint, mEndPoint);
searchRouteResult(2, RouteSearch.DrivingDefault, mStartPoint, mEndPoint);
aMap.clear();// 清理地图上的所有覆盖物
float distance = AMapUtils.calculateLineDistance(latLng1, latLng2);
BigDecimal bigDecimal = new BigDecimal("0.01");
BigDecimal bigDecimal1 = new BigDecimal("" + distance);
BigDecimal multiply = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
if (!TextUtils.isEmpty(xiaofei)) {
BigDecimal bigDecimal2 = new BigDecimal(xiaofei);
BigDecimal add = multiply.add(bigDecimal2).setScale(2, BigDecimal.ROUND_HALF_UP);
tvPrice.setText("" + add);
} else {
tvPrice.setText("" + multiply);
}
总结
设计中采用了Android数据传输、Json字符串封装技术和线程并发执行。订单数据内容可以实时进行更新。实现了清除缓存与下拉更新的功能。对于感兴趣的商品用户可以进行收藏管理的功能。个人信息有修改时数据库的信息也会对应修改。总的来说,达到了预期的效果,相较于市场上的跑腿送货软件。实现了轻量级、快操作的客户端核心要求。