app/build.gradle
@@ -180,7 +180,8 @@ } dependencies { implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs') implementation 'androidx.activity:activity-ktx:1.8.0' implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') implementation "com.facebook.soloader:soloader:0.12.1" implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0" implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.34' app/src/main/AndroidManifest.xml
@@ -52,9 +52,7 @@ android:name="android.hardware.telephony" android:required="false" /> <!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- <uses-permission android:name="android.permission.READ_CONTACTS" /> --> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <!-- 诱导悬浮窗 --> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <!-- 诱导悬浮窗 --> <uses-permission android:name="android.permission.MANAGE_OVERLAY_PERMISSION" /> <application @@ -69,6 +67,12 @@ android:usesCleartextTraffic="true" tools:replace="android:allowBackup"> <activity android:name=".ui.main.ShowPictureActivity" android:exported="false" /> <activity android:name=".ui.main.MediaOperationActivity" android:exported="false" /> <activity android:name=".base.gaode.NaviGoogleActivity" android:exported="false" /> <activity @@ -77,8 +81,6 @@ <activity android:name=".ui.main.ChangPhoneActivity" android:exported="false" /> <activity android:name=".ui.pub.StartActivity" android:exported="true"> @@ -88,18 +90,19 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ui.GetImgActivity" android:theme="@style/AppThemegetphoto" android:exported="false"> <!--<intent-filter> android:exported="false" android:theme="@style/AppThemegetphoto"> <!-- <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>--> </intent-filter> --> </activity> <activity android:name=".ui.pub.BecomeDriverActivity" android:exported="false" /> app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java
@@ -357,6 +357,11 @@ } } //设置全屏模式 public void setFullScreenMode(boolean isFull) { rl_header.setVisibility(isFull ? GONE : VISIBLE); rl_title.setVisibility(isFull ? GONE : VISIBLE); } private void init() { title_layout = (LinearLayout) findViewById(R.id.title_layout); app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
@@ -105,7 +105,7 @@ } } } else { showToast("请在应用权限页面开启相机权限") showToast(getString(R.string.请在应用权限页面开启相机权限)) } } app/src/main/java/com/driver/igotrip/bean/OrderBean.java
@@ -200,6 +200,8 @@ public String audioUrl; // 接单时间 yyyy-MM-dd HH:mm:ss public String userPhone; // 包裹下单人的电话 public int isFrozen; // 2已冻结 public String platformServerMoney; // 平台服务费 public String driverServerMoney; // 实际收入 public String getSnatchOrderTime() { return snatchOrderTime; app/src/main/java/com/driver/igotrip/bean/OrderListBean.java
@@ -49,8 +49,10 @@ private String name; private double redMoney; private String startAddress; //1=待接单,2=待出发,3=待到达预约地点,4=待取货,5=送货中,6=已送达,7=待支付,8=需补差价,9=已取货,10=已取消,11=改派中,12=已支付差价 private int state; private String time; //1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车 private int type; private String remark; private String peopleNumber; app/src/main/java/com/driver/igotrip/netUtls/Api.java
@@ -7,13 +7,13 @@ */ public class Api { // public static final String BASE_URL = "https://igo.i-go.group/driver-server/"; public static final String BASE_URL = "https://gopost.ci/driver-server/"; // public static final String BASE_URL = "http://221.182.45.100:5000/driver-server/"; public static final String SOCKET_SERVER = "34.155.170.245"; // public static final String SOCKET_SERVER = "221.182.45.100"; public static final int SOCKET_PORT = 8888; public static final boolean isTest = false; public static final String BASE_URL_TEST = "http://192.168.110.111:5000/driver-server/"; public static final String SOCKET_SERVER_TEST = "192.168.110.111"; public static final int SOCKET_PORT_TEST = 9991; public static final String BASE_URL = isTest ? BASE_URL_TEST : "https://gopost.ci/driver-server/"; public static final String SOCKET_SERVER = isTest ? SOCKET_SERVER_TEST : "34.155.170.245"; public static final int SOCKET_PORT = isTest ? SOCKET_PORT_TEST : 8888; public static final int SUCCESS = 200; // http://182.160.16.251:81/share/share/shareIndex.html?type=2&uid=2&language=1 public static final String strShare = "https://igo.i-go.group/share/share/shareIndex%d.html?language=%d_2_%s" ; app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt
New file @@ -0,0 +1,35 @@ package com.driver.igotrip.ui.adapter import android.view.View import android.widget.ImageView import androidx.core.view.isVisible import com.driver.igotrip.R import com.driver.igotrip.base.BaseRvAdapter import com.driver.igotrip.base.BaseViewHolder import com.driver.igotrip.utils.glide.GlideUtil //多媒体操作适配器 class MediaOperationAdapter : BaseRvAdapter<String>() { private var onItemDeleteClickListener: ((position: Int, item: String) -> Unit)? = null override fun getLayoutResId(viewType: Int) = R.layout.item_media_operation override fun onBindItem(holder: BaseViewHolder, view: View, item: String) { view.findViewById<ImageView>(R.id.iv_picture)?.also { if (item.isNullOrEmpty()) { it.setImageResource(R.mipmap.icon_camera_box) } else { GlideUtil.load(it, item, 0, 0, 4) } } view.findViewById<ImageView>(R.id.iv_delete)?.also { it.isVisible = !item.isNullOrEmpty() it.setOnClickListener { onItemDeleteClickListener?.invoke(holder.bindingAdapterPosition, item) } } } fun setOnItemDeleteClickListener(onItemDeleteClickListener: ((position: Int, item: String) -> Unit)?) { this.onItemDeleteClickListener = onItemDeleteClickListener } } app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt
New file @@ -0,0 +1,34 @@ package com.driver.igotrip.ui.adapter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView import com.driver.igotrip.R import com.driver.igotrip.utils.glide.GlideUtil //显示图片适配器 class ShowPictureAdapter : RecyclerView.Adapter<ShowPictureAdapter.ShowPictureViewHolder>() { private val list = mutableListOf<String>() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShowPictureViewHolder { val inflate = LayoutInflater.from(parent.context).inflate(R.layout.item_show_picture, parent, false) return ShowPictureViewHolder(inflate) } override fun onBindViewHolder(holder: ShowPictureViewHolder, position: Int) { GlideUtil.load(holder.ivPicture, list[position], 0, 0, 0) } override fun getItemCount() = list.size fun setData(list: List<String>) { this.list.clear() this.list.addAll(list) notifyItemRangeInserted(0, list.size) } class ShowPictureViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val ivPicture: ImageView? = itemView.findViewById<ImageView>(R.id.iv_picture) } } app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt
New file @@ -0,0 +1,234 @@ package com.driver.igotrip.ui.main import android.Manifest import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.view.View import android.widget.TextView import androidx.activity.ComponentActivity import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.driver.igotrip.R import com.driver.igotrip.base.MyBaseActivity import com.driver.igotrip.bean.StringBean import com.driver.igotrip.netUtls.Api import com.driver.igotrip.netUtls.BaseBean import com.driver.igotrip.netUtls.HttpManager import com.driver.igotrip.netUtls.MyObserver import com.driver.igotrip.ui.DialogUtil import com.driver.igotrip.ui.GetImgActivity import com.driver.igotrip.ui.adapter.MediaOperationAdapter import com.tbruyelle.rxpermissions2.RxPermissions import io.reactivex.disposables.Disposable import org.jetbrains.anko.find import org.jetbrains.anko.toast import java.io.File //多媒体操作页 class MediaOperationActivity : MyBaseActivity() { //多媒体资源 private val mediaMap = mutableMapOf<String, String>() private val title by lazy { intent.getStringExtra("title") } private val operationLabel by lazy { intent.getStringExtra("operationLabel") } private val max by lazy { intent.getIntExtra("max", 0) } private val min by lazy { intent.getIntExtra("min", 0) } private val pictures = mutableListOf<String>("") private val adapter by lazy { MediaOperationAdapter() } private val rvList by lazy { findViewById<RecyclerView>(R.id.rv_list) } private val tvOperation by lazy { findViewById<TextView>(R.id.tv_operation) } companion object { //获取跳转此页面intent fun getIntent( context: Context, title: String, operationLabel: String, max: Int, min: Int ): Intent { return Intent(context, MediaOperationActivity::class.java).apply { putExtra("title", title) putExtra("operationLabel", operationLabel) putExtra("max", max) putExtra("min", min) } } } override fun setContentView() { setContentView(R.layout.activity_media_operation) } override fun initView() { setTitleText("请上传图片") tv_title.text = title rvList.adapter = adapter rvList.layoutManager = GridLayoutManager(this, 4) adapter.data = pictures tvOperation.text = operationLabel } override fun setOnclick() { adapter.setOnItemClickListener { _, position -> if (pictures[position].isEmpty()) { mediaOperation("请选择") } else { val arrayList = ArrayList<String>() arrayList.addAll(pictures) startActivity(ShowPictureActivity.getIntent(this, "", arrayList, position)) } } adapter.setOnItemDeleteClickListener { position, item -> removeMedia(position) } tvOperation.setOnClickListener { val data = pictures.toMutableList().apply { removeIf { it.isEmpty() } } if (data.size < min) { toast(getString(R.string.请上传图片)) return@setOnClickListener } setResult(RESULT_OK, Intent().apply { putStringArrayListExtra("result", ArrayList<String>().apply { addAll(data) }) }) finish() } } //多媒体的操作 @SuppressLint("CheckResult") private fun mediaOperation(title: String) { val rxPermissions = RxPermissions(this) rxPermissions.request(Manifest.permission.CAMERA) .subscribe { aBoolean -> if (aBoolean) { val phoneDialog = DialogUtil.getDialog(mContext, R.layout.dialog_phone) val view = DialogUtil.getView(phoneDialog) if (!title.isEmpty()) { view.find<TextView>(R.id.btn_title).text = title } else { view.find<TextView>(R.id.btn_title).text = getString(R.string.选择照片) } view.find<View>(R.id.button_cancel).setOnClickListener { phoneDialog.dismiss() } view.find<View>(R.id.btn_album).setOnClickListener { openAlbum() phoneDialog.dismiss() } view.find<View>(R.id.btn_phone).setOnClickListener { openCarmra() phoneDialog.dismiss() } } else { showToast(getString(R.string.请在应用权限页面开启相机权限)) } } } //打开相册 fun openAlbum() { startActivityForResult(Intent(this, GetImgActivity::class.java).apply { putExtra("type", false) }, 321) } //拍照 private fun openCarmra() { startActivityForResult(Intent(this, GetImgActivity::class.java).apply { putExtra("type", true) }, 123) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == ComponentActivity.RESULT_OK) { if (requestCode == 123) { data?.let { it -> it.getStringExtra("img")?.also { operationMedia(it) } } } else { data?.let { it -> it.getStringExtra("img")?.also { operationMedia(it) } } } } } //操作多媒体 private fun operationMedia(filePath: String) { val url = mediaMap[filePath] if (url.isNullOrEmpty()) { saveMedia(filePath) { mediaMap[filePath] = it addMedia(it) } return } addMedia(url) } //添加多媒体 private fun addMedia(url: String) { pictures.removeIf { it.isEmpty() } pictures.add(url) if (pictures.size < max) { pictures.add(0, "") } adapter.data = pictures } //移除多媒体 private fun removeMedia(position: Int) { pictures.removeAt(position) pictures.removeIf { it.isEmpty() } if (pictures.size < max) { pictures.add(0, "") } adapter.data = pictures } /*** * 保存多媒体,上传oss */ private fun saveMedia(filePath: String, block: (url: String) -> Unit) { HttpManager.getInstance() .post<BaseBean<String>>( Api.upImage, File(filePath), object : MyObserver(this@MediaOperationActivity) { override fun onSubscribe(d: Disposable) { super.onSubscribe(d) println("上传开始:" + filePath) showDialog() } override fun success(responseString: String?) { dismissDialog() val fromJson = gson.fromJson(responseString, StringBean::class.java) val url = fromJson.data if (!url.isNullOrEmpty()) { println("上传成功:" + url) block.invoke(url) } else { println("上传失败:" + url) } } override fun onError(e: Throwable) { super.onError(e) dismissDialog() println("上传失败:" + e.message) } }) } } app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt
@@ -58,6 +58,12 @@ private val tv_end_address by lazy { find<TextView>(R.id.tv_end_address) } private val tv_red_money by lazy { find<TextView>(R.id.tv_red_money) } private val remark by lazy { find<TextView>(R.id.remark) } private val ll_order_money by lazy { find<LinearLayout>(R.id.ll_order_money) } private val tv_order_money by lazy { find<TextView>(R.id.tv_order_money) } private val ll_service_money by lazy { find<LinearLayout>(R.id.ll_service_money) } private val tv_service_money by lazy { find<TextView>(R.id.tv_service_money) } private val ll_real_income by lazy { find<LinearLayout>(R.id.ll_real_income) } private val tv_real_income by lazy { find<TextView>(R.id.tv_real_income) } private val tv_cancel_to by lazy { find<TextView>(R.id.tv_cancel_to) } private val tv_cancel_money by lazy { find<TextView>(R.id.tv_cancel_money) } private val tv_cancel_result by lazy { find<TextView>(R.id.tv_cancel_result) } @@ -108,6 +114,9 @@ if(orderType == "1"){ tv_red_money.gone() } tv_order_money.text = getString(R.string.money) + it.orderMoney tv_service_money.text = getString(R.string.money) + it.platformServerMoney tv_real_income.text = getString(R.string.money) + it.driverServerMoney when (orderBean.orderState) { 10,12-> { ll_order_cancel.visible() app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt
New file @@ -0,0 +1,72 @@ package com.driver.igotrip.ui.main import android.content.Context import android.content.Intent import android.widget.TextView import androidx.core.view.isVisible import androidx.viewpager2.widget.ViewPager2 import com.driver.igotrip.R import com.driver.igotrip.base.MyBaseActivity import com.driver.igotrip.ui.adapter.ShowPictureAdapter //显示图片页 class ShowPictureActivity : MyBaseActivity() { private val title by lazy { intent.getStringExtra("title") } private val list by lazy { intent.getStringArrayListExtra("list") } private val index by lazy { intent.getIntExtra("index", 0) } private val adapter by lazy { ShowPictureAdapter() } private val tvBack by lazy { findViewById<TextView>(R.id.tv_back) } private val tvTitle by lazy { findViewById<TextView>(R.id.tv_title) } private val viewPager by lazy { findViewById<ViewPager2>(R.id.viewPager) } private val tvCount by lazy { findViewById<TextView>(R.id.tv_count) } companion object { //获取跳转此页面intent fun getIntent( context: Context, title: String, list: ArrayList<String>, index: Int = 0 ): Intent { return Intent(context, ShowPictureActivity::class.java).apply { putExtra("title", title) putStringArrayListExtra("list", list) putExtra("index", index) } } } override fun setContentView() { setContentView(R.layout.activity_show_picture) } override fun initView() { setBlcakShow(false) setFullScreenMode(true) tvTitle.text = title viewPager.adapter = adapter viewPager.offscreenPageLimit = list?.size ?: 1 viewPager.currentItem = index adapter.setData(list ?: emptyList()) tvCount.isVisible = (list?.size ?: 0) > 1 runOnUiThread { viewPager.currentItem = index refreshCount(index) } } override fun setOnclick() { tvBack.setOnClickListener { finish() } viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position) refreshCount(position) } }) } //刷新下标 private fun refreshCount(index: Int) { tvCount.text = "${index + 1}/${list?.size ?: 0}" } } app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt
@@ -1,6 +1,7 @@ package com.driver.igotrip.ui.main.small_cargo import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper @@ -10,6 +11,8 @@ import android.widget.EditText import android.widget.ImageView import android.widget.TextView import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import cn.sinata.xldutils.utils.* import com.driver.igotrip.R import com.driver.igotrip.base.BaseEvent @@ -27,6 +30,7 @@ import com.driver.igotrip.netUtls.* import com.driver.igotrip.ui.DialogUtil import com.driver.igotrip.ui.UiUtil import com.driver.igotrip.ui.main.MediaOperationActivity import com.driver.igotrip.ui.main.ReassignActivity import com.driver.igotrip.utils.DateUtil import com.driver.igotrip.utils.MyUtils @@ -81,6 +85,9 @@ var graylist = arrayListOf<LatLng>() // 灰色轨迹 var grayline: Polyline? = null //业务多媒体类型 var businessMediaType: Int = 0 private val tv_name by lazy { find<TextView>(R.id.tv_name) } private val tv_car_num by lazy { find<TextView>(R.id.tv_car_num) } private val tv_people_cargo by lazy { find<TextView>(R.id.tv_people_cargo) } @@ -97,6 +104,9 @@ private val iv_police by lazy { find<View>(R.id.iv_police) } private val iv_to_gd by lazy { find<View>(R.id.iv_to_gd) } private val slide_btn by lazy { find<SlidingButton>(R.id.slide_btn) } //跳转另一个页面并接收返回结果启动器 private lateinit var launcherForResult: ActivityResultLauncher<Intent> override fun setContentView() { setContentView(R.layout.activity_trip_cargo) @@ -119,7 +129,28 @@ } override fun initView() { launcherForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> when (businessMediaType) { 0 -> { if (result.resultCode == RESULT_OK && result.data != null) { val result = result.data!!.getStringArrayListExtra("result") showConfirmPriceDialog(result!!.joinToString(separator = ",")) } else { } } 1 -> { if (result.resultCode == RESULT_OK && result.data != null) { val result = result.data!!.getStringArrayListExtra("result") showConfirmDeliveryDialog(result!!.joinToString(separator = ",")) } else { } } } } } private fun addSockectCancel() { @@ -320,18 +351,14 @@ 2, 3, 4 -> { if (it.data.orderState == 4) { if (orderType == "4") { DialogUtil.getDelAndSureDialog( this, getString(R.string.确认现金金额).format(it.data.expressPayAllMoney) .replace(",", "."), {}, { it.data.orderState++ callStatue("1", it.data.orderState) { iv_to_gd.callOnClick() } showStatueMapUI(it) }) businessMediaType = 0 launcherForResult.launch( MediaOperationActivity.getIntent( this, getString(R.string.请上传图片), getString(R.string.确认取货), 3, 1 ) ) } else { it.data.orderState++ callStatue("1", it.data.orderState) { @@ -350,49 +377,16 @@ } 5, 6 -> { sendCode() { it.data.orderState = 6 var dialog = DialogUtil.getDialog(this, R.layout.dialog_show_cargo_money) var viewContent = DialogUtil.getView(dialog) val view_hint_close_car = viewContent.find<View>(R.id.view_hint_close_car) val tv_car_num_close = viewContent.find<View>(R.id.tv_car_num_close) val tv_money = viewContent.find<TextView>(R.id.tv_money) val tv_sure_car_num = viewContent.find<TextView>(R.id.tv_sure_car_num) val et_num_zg = viewContent.find<EditText>(R.id.et_num_zg) view_hint_close_car.setOnClickListener { dialog.dismiss() } tv_car_num_close.setOnClickListener { dialog.dismiss() } if (it.data.driverPay == "1") { tv_money.visible() tv_money.text = getString(R.string.确认现金金额).format(if (orderType == "4") it.data.expressPayAllMoney else if (it.data.payMoney == 0.0) it.data.orderMoney else it.data.payMoney) .replace(",", ".") } tv_sure_car_num.setOnClickListener { var num = et_num_zg.getContent() if (num.isEmpty()) { toast(getString(R.string.请输入验证码)) return@setOnClickListener } callStatue(orderBean!!.data.orderState, num) { dialog.dismiss() // startActivity<SmallOverActivity>( // "orderId" to orderId, // "orderType" to orderType // ) /* startActivity<MajorSureMoneyActivity>( "orderId" to orderId, "orderType" to orderType )*/ finish() } } } // sendCode() { businessMediaType = 1 launcherForResult.launch( MediaOperationActivity.getIntent( this, getString(R.string.请上传图片), getString(R.string.确认送达), 3, 1 ) ) // } } 12 -> { @@ -423,6 +417,62 @@ } } } //显示确认送达弹窗 private fun showConfirmDeliveryDialog(url: String) { orderBean?.let { it.data.orderState = 6 val dialog = DialogUtil.getDialog(this, R.layout.dialog_show_cargo_money) val viewContent = DialogUtil.getView(dialog) val view_hint_close_car = viewContent.find<View>(R.id.view_hint_close_car) val tv_car_num_close = viewContent.find<View>(R.id.tv_car_num_close) val tv_money = viewContent.find<TextView>(R.id.tv_money) val tv_sure_car_num = viewContent.find<TextView>(R.id.tv_sure_car_num) val et_num_zg = viewContent.find<EditText>(R.id.et_num_zg) view_hint_close_car.setOnClickListener { dialog.dismiss() } tv_car_num_close.setOnClickListener { dialog.dismiss() } if (it.data.driverPay == "1") { tv_money.visible() tv_money.text = getString(R.string.确认现金金额).format(if (orderType == "4") it.data.expressPayAllMoney else if (it.data.payMoney == 0.0) it.data.orderMoney else it.data.payMoney) .replace(",", ".") } tv_sure_car_num.setOnClickListener { val num = et_num_zg.getContent() if (num.isEmpty()) { toast(getString(R.string.请输入验证码)) return@setOnClickListener } confirmDelivery(6, num, url) { dialog.dismiss() finish() } } } } //显示确认价格弹窗 private fun showConfirmPriceDialog(url: String) { orderBean?.let { DialogUtil.getDelAndSureDialog( this, getString(R.string.确认现金金额).format(it.data.expressPayAllMoney) .replace(",", "."), {}, { confirmPickUp(url, 5) { it.data.orderState = 5 showStatueMapUI(it) iv_to_gd.callOnClick() } }) } } fun startNavi(startLat: Double, startLon: Double, endLat: Double, endLon: Double) { @@ -475,6 +525,27 @@ } } //确认送达 private fun confirmDelivery(i: Int, num: String, imgTwo: String, click: () -> Unit) { var map = getMapByAny() map["orderId"] = orderId map["orderType"] = orderType map["state"] = i if (!num.isNullOrEmpty()) map["pickUpCode"] = num Log.e( "定位==============》", "${MyApplication.getLocation()?.latitude},${MyApplication.getLocation()?.longitude}" ) map["imgTwo"] = imgTwo map["lat"] = MyApplication.getLocation()?.latitude ?: 0.0 map["lon"] = MyApplication.getLocation()?.longitude ?: 0.0 callNet(Api.process, map) { OrderTimeOutManager.instance.checkOrderManager(orderId, orderType, i) click() } } private fun callStatue(phone: String, i: Int, click: () -> Unit) { var map = getMapByAny() map["orderId"] = orderId @@ -489,6 +560,21 @@ } } //确认收获 private fun confirmPickUp(imgOne: String, i: Int, click: () -> Unit) { var map = getMapByAny() map["orderId"] = orderId map["orderType"] = orderType map["imgOne"] = imgOne map["state"] = i map["lat"] = MyApplication.getLocation()?.latitude ?: 0.0 map["lon"] = MyApplication.getLocation()?.longitude ?: 0.0 callNet(Api.process, map) { OrderTimeOutManager.instance.checkOrderManager(orderId, orderType, i) click() } } private var movedByFinger = false /*** app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt
@@ -43,6 +43,12 @@ private val tv_end_address by lazy { find<TextView>(R.id.tv_end_address) } private val tv_money_cargo by lazy { find<TextView>(R.id.tv_money_cargo) } private val tv_remark by lazy { find<TextView>(R.id.tv_remark) } private val ll_order_money by lazy { find<LinearLayout>(R.id.ll_order_money) } private val tv_order_money by lazy { find<TextView>(R.id.tv_order_money) } private val ll_service_money by lazy { find<LinearLayout>(R.id.ll_service_money) } private val tv_service_money by lazy { find<TextView>(R.id.tv_service_money) } private val ll_real_income by lazy { find<LinearLayout>(R.id.ll_real_income) } private val tv_real_income by lazy { find<TextView>(R.id.tv_real_income) } private val tv_pay_result_small_money by lazy { find<TextView>(R.id.tv_pay_result_small_money) } private val tv_tv_num_cargo by lazy { find<TextView>(R.id.tv_tv_num_cargo) } private val tv_people_cargo by lazy { find<TextView>(R.id.tv_people_cargo) } @@ -100,27 +106,31 @@ getString(R.string.其中含加急费用) + it.tipMoney.toString() setTitleText(getSmallStatue(it.orderState)) tv_pay_result_title.text = getString(R.string.订单) + getSmallStatue(it.orderState) tv_order_money.text = getString(R.string.money) + it.orderMoney tv_service_money.text = getString(R.string.money) + it.platformServerMoney tv_real_income.text = getString(R.string.money) + it.driverServerMoney ll_pay_result.visible() if (it.orderState in 6..7) { tv_pay_result_title.text = getString(R.string.待乘客支付) }else if (it.orderState == 8){ } else if (it.orderState == 8) { tv_pay_result_title.text = getString(R.string.订单待评价) }else if (it.orderState == 9){ } else if (it.orderState == 9) { tv_pay_result_title.text = getString(R.string.订单已完成) }else if (it.orderState == 10||it.orderState == 12){ } else if (it.orderState == 10 || it.orderState == 12) { ll_order_cancel.visible() iv_phone.gone() ll_pay_result.gone() tv_cancel_to.text = it.cancelUser tv_cancel_money.text = getString(R.string.money) +" "+ doubleOne(it.cancelPayMoney) tv_cancel_money.text = getString(R.string.money) + " " + doubleOne(it.cancelPayMoney) tv_cancel_result.text = it.cancelReason tv_cancel_s.text = it.cancelRemark if (it.cancelRemark.isNullOrEmpty()){ if (it.cancelRemark.isNullOrEmpty()) { tv_cancel_s.text = "" } } if (it.orderState in 6..9){ if (it.orderState in 6..9) { tv_pay_result_small_money.text = getString(R.string.查看收费明细) tv_pay_result_small_money.visible() view_line_money_detail.visible() @@ -131,10 +141,12 @@ ) } } if (it.isFrozen == 2){ if (it.isFrozen == 2) { tv_frozen.visible() tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds(0, UiUtil.getFrozenBitmap(),0,0) tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds( 0, UiUtil.getFrozenBitmap(), 0, 0 ) } } } app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java
@@ -60,6 +60,19 @@ /*** * 加载图片 */ @SuppressLint("CheckResult") public static void load(ImageView imageView, String url, int placeholder, int error, int radius) { Glide.with(imageView) .load(url) .apply(getRequestOption(radius)) .placeholder(placeholder) .error(error) .into(imageView); } /*** * 加载图片 * @param context * @param url * @param imageView app/src/main/res/drawable/shape_black1_bg_4.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/black1" /> <corners android:radius="4dp" /> </shape> app/src/main/res/layout/activity_media_operation.xml
New file @@ -0,0 +1,47 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.main.MediaOperationActivity"> <TextView android:id="@+id/tv_notice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14dp" android:layout_marginTop="8dp" android:text="只支持jpg格式" android:textColor="#ff979797" android:textSize="14sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_list" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginTop="4dp" android:layout_marginHorizontal="9dp" app:layout_constraintBottom_toTopOf="@id/tv_operation" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_notice" /> <TextView android:id="@+id/tv_operation" android:layout_width="0dp" android:layout_height="50dp" android:layout_marginHorizontal="14dp" android:layout_marginBottom="30dp" android:background="@drawable/bg_login" android:gravity="center" android:text="" android:textColor="@color/white" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/activity_mine_income.xml
@@ -41,7 +41,7 @@ android:maxWidth="280dp" android:maxLines="1" android:singleLine="true" android:text="@string/我的收入" android:text="@string/平台服务费" android:textColor="@color/textColor" android:textSize="16sp" android:textStyle="bold" /> app/src/main/res/layout/activity_mine_purse.xml
@@ -128,7 +128,7 @@ android:gravity="center_vertical" android:paddingStart="14dp" android:paddingEnd="14dp" android:text="@string/我的收入" android:text="@string/平台服务费" android:textColor="#ff333333" android:textSize="14sp" /> app/src/main/res/layout/activity_order_over.xml
@@ -6,6 +6,126 @@ <include layout="@layout/include_order_top" /> <LinearLayout android:id="@+id/ll_money_detail" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:elevation="3dp" android:orientation="vertical" android:paddingHorizontal="14dp"> <LinearLayout android:id="@+id/ll_order_money" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="11dp" android:text="@string/订单金额" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginVertical="11dp" android:text=":" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_order_money" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/color_e72c1c" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/ll_service_money" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="11dp" android:text="@string/平台服务费" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginVertical="11dp" android:text=":" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_service_money" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/color_e72c1c" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/ll_real_income" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="11dp" android:text="@string/实际收入" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginVertical="11dp" android:text=":" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_real_income" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/color_e72c1c" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> </LinearLayout> <include layout="@layout/include_order_money" android:layout_width="match_parent" @@ -20,30 +140,31 @@ <TextView android:id="@+id/tv_show_pay_over" android:layout_marginTop="10dp" android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:text="@string/Passengers_have_paid" android:textStyle="bold" android:textColor="#ff000000" android:textSize="18sp" /> android:textSize="18sp" android:textStyle="bold" /> <include layout="@layout/include_weight_height"/> <include layout="@layout/include_weight_height" /> <include layout="@layout/include_pay_bottom"/> <include layout="@layout/include_pay_bottom" /> <TextView android:id="@+id/tv_frozen" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_frozen" android:gravity="center" android:layout_marginBottom="50dp" android:visibility="gone" android:textColor="#FF9803" android:textStyle="bold" android:textSize="14sp" android:layout_marginHorizontal="40dp" android:layout_marginBottom="50dp" android:drawableTop="@mipmap/yidongjie_cn" android:drawablePadding="20dp" android:text="@string/被冻结"/> android:gravity="center" android:text="@string/被冻结" android:textColor="#FF9803" android:textSize="14sp" android:textStyle="bold" android:visibility="gone" /> </LinearLayout> app/src/main/res/layout/activity_order_over_small.xml
@@ -6,6 +6,126 @@ <include layout="@layout/include_order_top_cargo" /> <LinearLayout android:id="@+id/ll_money_detail" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:elevation="3dp" android:orientation="vertical" android:paddingHorizontal="14dp"> <LinearLayout android:id="@+id/ll_order_money" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="11dp" android:text="@string/订单金额" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginVertical="11dp" android:text=":" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_order_money" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/color_e72c1c" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/ll_service_money" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="11dp" android:text="@string/平台服务费" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginVertical="11dp" android:text=":" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_service_money" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/color_e72c1c" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/ll_real_income" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="11dp" android:text="@string/实际收入" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginVertical="11dp" android:text=":" android:textColor="#ff27282d" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_real_income" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/color_e72c1c" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> </LinearLayout> <include layout="@layout/include_order_money" android:layout_width="match_parent" @@ -20,26 +140,27 @@ <TextView android:id="@+id/tv_show_pay_over" android:layout_marginTop="10dp" android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:text="@string/Passengers_have_paid" android:textColor="#ff000000" android:textSize="14sp" /> <TextView android:id="@+id/tv_frozen" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_frozen" android:gravity="center" android:layout_marginBottom="50dp" android:visibility="gone" android:textColor="#FF9803" android:textStyle="bold" android:textSize="14sp" android:layout_marginHorizontal="40dp" android:layout_marginBottom="50dp" android:drawableTop="@mipmap/yidongjie_cn" android:drawablePadding="20dp" android:text="@string/被冻结"/> android:gravity="center" android:text="@string/被冻结" android:textColor="#FF9803" android:textSize="14sp" android:textStyle="bold" android:visibility="gone" /> </LinearLayout> app/src/main/res/layout/activity_show_picture.xml
New file @@ -0,0 +1,60 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" tools:context=".ui.main.ShowPictureActivity"> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv_back" android:layout_width="wrap_content" android:layout_marginTop="26dp" android:layout_height="50dp" android:drawableStart="@mipmap/icon_close" android:gravity="center" android:paddingStart="@dimen/dp_10" android:paddingEnd="@dimen/dp_15" android:textColor="@color/white" android:textSize="16sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="50dp" android:drawablePadding="3dp" android:layout_marginTop="26dp" android:gravity="center" android:maxWidth="240dp" android:maxLines="2" android:textColor="#333333" android:textSize="17sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="30dp" android:textColor="@color/white" android:textSize="12sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/include_order_money.xml
@@ -22,7 +22,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" tools:text="FCFA15.12" android:textColor="#E72C1C" android:textColor="@color/color_e72c1c" android:textSize="36sp" android:textStyle="bold" /> app/src/main/res/layout/item_media_operation.xml
New file @@ -0,0 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingHorizontal="5dp" android:paddingVertical="4dp"> <ImageView android:id="@+id/iv_picture" android:layout_width="80dp" android:layout_height="80dp" /> <ImageView android:id="@+id/iv_delete" android:layout_marginTop="2dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/iv_picture" android:layout_alignEnd="@id/iv_picture" android:background="@drawable/shape_black1_bg_4" android:padding="5dp" android:src="@mipmap/icon_close" /> </RelativeLayout> app/src/main/res/layout/item_show_picture.xml
New file @@ -0,0 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/iv_picture" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/mipmap-xxhdpi/icon_camera_box.png
app/src/main/res/values-en/strings.xml
@@ -823,5 +823,9 @@ <string name="选择区号">Select Area Code</string> <string name="科特迪瓦">Côte d\'Ivoire</string> <string name="中国">China</string> <string name="确认取货">Confirm pickup</string> <string name="请上传图片">please upload images</string> <string name="请在应用权限页面开启相机权限">Please enable camera permissions on the app permissions page</string> <string name="实际收入">Real income</string> </resources> app/src/main/res/values-fr/strings.xml
@@ -827,4 +827,9 @@ <string name="选择区号">Choisir le code régional</string> <string name="科特迪瓦">Côte d\'Ivoire</string> <string name="中国">Chine</string> <string name="确认取货">Confirmation de retrait</string> <string name="请上传图片">Veuillez télécharger une image</string> <string name="请在应用权限页面开启相机权限">Veuillez activer les autorisations de la caméra sur la page autorisations de l\'application</string> <string name="实际收入">Revenus réels</string> </resources> app/src/main/res/values/colors.xml
@@ -111,6 +111,7 @@ <color name="color_2378D2">#2378D2</color> <color name="color_F35646">#F35646</color> <color name="color_e72c1c">#E72C1C</color> app/src/main/res/values/strings.xml
@@ -815,5 +815,9 @@ <string name="选择区号">选择区号</string> <string name="科特迪瓦">科特迪瓦</string> <string name="中国">中国</string> <string name="确认取货">确认取货</string> <string name="请上传图片">请上传图片</string> <string name="请在应用权限页面开启相机权限">请在应用权限页面开启相机权限</string> <string name="实际收入">实际收入</string> </resources>