[2110] 抽取taxi到common

This commit is contained in:
yangyakun
2022-09-20 11:37:20 +08:00
parent fed0551edb
commit 8648a9e533
49 changed files with 896 additions and 496 deletions

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.alibaba.arouter'
android {
compileSdkVersion 31
@@ -14,6 +16,22 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
//ARouter apt 参数
kapt {
useBuildCache = false
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildTypes {
@@ -34,6 +52,10 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation rootProject.ext.dependencies.amapnavi3dmap
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoutils

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.common.module.biz.bean;
import com.mogo.eagle.core.data.BaseData;

View File

@@ -1,8 +1,8 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.common.module.biz.bean;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
* Created by yangyakun on 2021/8/19
* 通过手机号验证码登录
*/
public class TaxiLoginReqBean {

View File

@@ -1,14 +1,14 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.common.module.biz.bean;
import com.mogo.eagle.core.data.BaseData;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
* Created by yangyakun on 2021/8/19
* 通过验证码登录
*/
public class TaxiLoginRespBean extends BaseData {
public TaxiLoginRespBean.Result data;
public Result data;
public static class Result {
public Double lat;

View File

@@ -1,8 +1,8 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.common.module.biz.bean;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
* Created by yyk on 2021/8/19
* 获取验证码
*/
public class TaxiLoginSmsReqBean {

View File

@@ -1,8 +1,8 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.common.module.biz.bean;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
* Created by yyk on 2021/8/19
* 登出请求参数
*/
public class TaxiLogoutReqBean {
public String sn;

View File

@@ -0,0 +1,9 @@
package com.mogo.och.common.module.biz.callback;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
public interface ILoginCallback {
void loginSuccess(DriverStatusQueryRespBean data);
void loginFail(boolean isLogin);
}

View File

@@ -0,0 +1,13 @@
package com.mogo.och.common.module.biz.callback
interface ILoginViewCallback {
/**
* 展示登录页面
*/
fun showLoginDialogFragment()
/**
* 隐藏登录页面
*/
fun hideLoginDialogFragment()
}

View File

@@ -1,11 +1,4 @@
package com.mogo.och.taxi.callback;
import androidx.annotation.NonNull;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
import java.util.List;
package com.mogo.och.common.module.biz.callback;
/**
* Created on 2021/9/8

View File

@@ -0,0 +1,38 @@
package com.mogo.och.common.module.biz.constant
object LoginStatusManager {
/**
* 登录状态
*/
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
@JvmStatic
fun setLoginStatus(status: Int) {
when (status) {
0 -> {
this.loginStatus = TaxiLoginStatusEnum.Logout
}
1 -> {
this.loginStatus = TaxiLoginStatusEnum.Login
}
else -> {
this.loginStatus = TaxiLoginStatusEnum.None
}
}
}
@JvmStatic
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
this.loginStatus = loginStatus
}
@JvmStatic
fun getLoginStatus(): TaxiLoginStatusEnum {
return loginStatus
}
@JvmStatic
fun isLogin():Boolean {
if(loginStatus== TaxiLoginStatusEnum.Login){
return true
}
return false
}
}

View File

@@ -0,0 +1,28 @@
package com.mogo.och.common.module.biz.constant
import com.mogo.commons.debug.DebugConfig
/**
* Created on 2021/12/6
*/
class OchCommonConst {
companion object {
private const val BASE_URL_OCH_DEV = "http://tech-dev.zhidaohulian.com"
private const val BASE_URL_OCH_QA = "https://tech-qa.zhidaohulian.com"
private const val BASE_URL_OCH_RELEASE = "https://tech.zhidaohulian.com"
@JvmStatic
fun getBaseUrl(): String {
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV, DebugConfig.NET_MODE_DEMO -> BASE_URL_OCH_DEV
DebugConfig.NET_MODE_QA -> BASE_URL_OCH_QA
DebugConfig.NET_MODE_RELEASE -> BASE_URL_OCH_RELEASE
else -> BASE_URL_OCH_RELEASE
}
}
// token 失效 重新获取token
const val WAIT_TAKEN = 100046
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.constant
package com.mogo.och.common.module.biz.constant
/**
* Created on 2022/08/19

View File

@@ -1,21 +1,20 @@
package com.mogo.och.taxi.model
package com.mogo.och.common.module.biz.model
import android.annotation.SuppressLint
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.och.taxi.model.TaxiLoginModel
import com.mogo.och.taxi.callback.ITaxiLoginCallback
import com.mogo.module.common.MogoApisHandler
import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.och.taxi.network.TaxiServiceManager
import com.mogo.och.taxi.network.TaxiServiceCallback
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.TaxiLoginReqBean
import com.mogo.och.taxi.bean.TaxiLoginRespBean
import com.mogo.och.taxi.constant.TaxiLoginStatusEnum
import com.mogo.och.taxi.utils.StatusManager
import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.module.common.MogoApisHandler
import com.mogo.och.common.module.R
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.callback.ITaxiLoginCallback
import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.biz.network.OchCommonServiceManager
/**
* Created by pangfan on 2021/8/19
@@ -24,7 +23,7 @@ import com.mogo.och.taxi.utils.StatusManager
* 网约车 - 出租车业务逻辑处理
*/
@SuppressLint("StaticFieldLeak")
object TaxiLoginModel{
object OchCommonLoginModel{
private val TAG = "TaxiLoginModel"
private var mContext: Context? = null
@@ -34,10 +33,7 @@ object TaxiLoginModel{
fun init(context: Context) {
mContext = context.applicationContext
// 达到起始站围栏监听
MogoApisHandler.getInstance()
.apis
.registerCenterApi
.registerCarLocationChangedListener(TAG, mCarLocationChangedListener2)
MogoApisHandler.getInstance().apis.registerCenterApi.registerCarLocationChangedListener(TAG, mCarLocationChangedListener2)
}
fun hasInit():Boolean{
@@ -73,8 +69,8 @@ object TaxiLoginModel{
* 获取手机验证码
*/
fun getPhoneCode(phone: String?) {
TaxiServiceManager.getInstance().getPhoneCode(mContext, phone,
object : TaxiServiceCallback<BaseData?> {
OchCommonServiceManager.getInstance().getPhoneCode(mContext, phone,
object : OchCommonServiceCallback<BaseData?> {
override fun onSuccess(data: BaseData?) {
if (null != data && 0 == data.code) {
// 获取验证码成功
@@ -103,13 +99,13 @@ object TaxiLoginModel{
fun gotoLogin(phone: String, code: String) {
val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude)
TaxiServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login,
object : TaxiServiceCallback<TaxiLoginRespBean?> {
OchCommonServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login,
object : OchCommonServiceCallback<TaxiLoginRespBean?> {
override fun onSuccess(data: TaxiLoginRespBean?) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success))
StatusManager.setLoginStatus(TaxiLoginStatusEnum.Login)
LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login)
iTaxiLoginCallback?.loginSuccess()
} else {
if (data != null) {

View File

@@ -0,0 +1,41 @@
package com.mogo.och.common.module.biz.model
import android.annotation.SuppressLint
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.constant.LoginStatusManager
@SuppressLint("StaticFieldLeak")
object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() {
const val TAG = "OchCommonLoginStatusDefaultModel"
var loginCallback: ILoginCallback? = null
var loginViewCallback: ILoginViewCallback? = null
override fun loginSuccess(data: DriverStatusQueryRespBean?) {
CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}")
if (LoginStatusManager.isLogin()) {
loginViewCallback?.hideLoginDialogFragment()
} else {
loginViewCallback?.showLoginDialogFragment()
}
loginCallback?.loginSuccess(data)
}
override fun loginFail(isLogin: Boolean) {
CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginFail:$isLogin")
if (isLogin) {
loginViewCallback?.hideLoginDialogFragment()
} else {
loginViewCallback?.showLoginDialogFragment()
}
loginCallback?.loginFail(isLogin)
}
}

View File

@@ -0,0 +1,128 @@
package com.mogo.och.common.module.biz.model;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.content.Context;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.och.common.module.R;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.biz.network.OchCommonServiceManager;
import com.mogo.och.common.module.utils.ToastUtilsOch;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
public abstract class OchCommonLoginStatusModel {
private static final String TAG = "OchCommonLoginStatusModel";
protected Context mContext;
private Disposable subscribe;
public void init() {
mContext = AbsMogoApplication.getApp();
queryCarStatus();
}
protected abstract void loginSuccess(DriverStatusQueryRespBean data);
protected abstract void loginFail(boolean isLogin);
/**
* 接单状态和登录状态查询
* 1、初始化查询
* 2、错误重试
* 3、错误重试
* 4、登出后重试
* 5、变更出车状态查下
* 6、变更出车状态查下
* 7、网络状态变更后查询
* 8、登录页面关闭后查下状态
*/
public void queryCarStatus() {
OchCommonServiceManager.getInstance().queryDriverServiceStatus(mContext,
new OchCommonServiceCallback<DriverStatusQueryRespBean>() {
@Override
public void onSuccess(DriverStatusQueryRespBean data) {
if (null != data && 0 == data.code) {
LoginStatusManager.setLoginStatus(data.data.driverStatus);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + LoginStatusManager.getLoginStatus());
loginSuccess(data);
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
subscribe = Observable.timer(5, TimeUnit.SECONDS).subscribe(aLong -> {
queryCarStatus();
});
}
@Override
public void onFail(int code, String msg) {
ToastUtilsOch.showWithCodeMessage(code,msg);
if(code== OchCommonConst.WAIT_TAKEN){
subscribe = Observable.timer(3, TimeUnit.SECONDS).subscribe(aLong -> {
queryCarStatus();
});
}else {
loginFail(LoginStatusManager.isLogin());
}
}
});
}
// 登出
public void logout(double mLatitude,double mLongitude) {
TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude);
OchCommonServiceManager.getInstance().logout(mContext,location4Login,
new OchCommonServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
loginFail(false);
queryCarStatus();
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
}
@Override
public void onFail(int code, String msg) {
ToastUtilsOch.showWithCodeMessage(code,msg);
}
});
}
public void release() {
if(subscribe!=null&&!subscribe.isDisposed()){
subscribe.dispose();
}
}
}

View File

@@ -0,0 +1,63 @@
package com.mogo.och.common.module.biz.network;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by pangfan on 2021/8/19
*
* 网约车-出租车接口定义
*/
interface OchCommonServiceApiNew {
/**
* 获取手机验证码
*
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" )
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" )
Observable<TaxiLoginRespBean> gotoLoginBycode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation")
Observable<BaseData> logout(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 接单状态和登录状态查询
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus" )
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId
,@Header("ticket") String ticket,@Query("sn") String sn);
}

View File

@@ -0,0 +1,18 @@
package com.mogo.och.common.module.biz.network;
/**
* @author congtaowang
* @since 2021/1/15
*
* 修改订单状态回调接口
*/
public interface OchCommonServiceCallback< T > {
void onSuccess(T data);
void onFail(int code, String msg);
default void onError() {
}
}

View File

@@ -0,0 +1,143 @@
package com.mogo.och.common.module.biz.network;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.content.Context;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by pangfan on 2021/8/19
*/
public class OchCommonServiceManager {
private static final String TAG = OchCommonServiceManager.class.getSimpleName();
private static final class SingletonHolder {
private static final OchCommonServiceManager INSTANCE = new OchCommonServiceManager();
}
public static OchCommonServiceManager getInstance() {
return SingletonHolder.INSTANCE;
}
private OchCommonServiceApiNew mOCHTaxiServiceApi;
private OchCommonServiceManager() {
if (mOCHTaxiServiceApi == null){
mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(OchCommonServiceApiNew.class);
}
}
/**
* 获取手机验证码
* @param context
* @param callback
*/
public void getPhoneCode(Context context,String phone,
OchCommonServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginSmsReqBean(phone))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "getPhoneCode"));
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
public void gotoLoginBycode(Context context, String phone, String code,
TaxiLoginReqBean.Location4Login location4Login,
OchCommonServiceCallback<TaxiLoginRespBean> callback) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginReqBean(phone, code, sn, location4Login))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode"));
}
/**
* 登出
*/
public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, OchCommonServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.logout(
MoGoAiCloudClientConfig.getInstance().getServiceAppId(),
MoGoAiCloudClientConfig.getInstance().getToken(),
new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "logout"));
}
/**
* 接单状态和登录状态查询
* @param context
* @param callback
*/
public void queryDriverServiceStatus(Context context,
OchCommonServiceCallback<DriverStatusQueryRespBean> callback) {
if(MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()){
callback.onFail(OchCommonConst.WAIT_TAKEN,"等待令牌中请稍等");
MoGoAiCloudClient.getInstance().refreshToken();
return;
}
mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken()
,MoGoAiCloudClientConfig.getInstance().getSn())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus"));
}
private <T extends BaseData> SubscribeImpl getSubscribeImpl(
Context context, OchCommonServiceCallback<T> callback, String apiName) {
return new SubscribeImpl<T>(RequestOptions.create(context)) {
@Override
public void onSuccess(T o) {
super.onSuccess(o);
CallerLogger.INSTANCE.d(M_TAXI + TAG,apiName + ": onSuccess() " + o.msg);
if (callback != null) {
callback.onSuccess(o);
}
}
@Override
public void onError(Throwable e) {
super.onError(e);
CallerLogger.INSTANCE.e(M_TAXI + TAG,apiName + ": onError() " + e.getMessage());
if (callback != null) {
callback.onError();
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
CallerLogger.INSTANCE.e(M_TAXI + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message));
if (callback != null) {
callback.onFail(code, message);
}
}
};
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.presenter
package com.mogo.och.common.module.biz.presenter
import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.AbsMogoApplication
@@ -7,10 +7,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.RegexUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.callback.ITaxiLoginCallback
import com.mogo.och.taxi.model.TaxiLoginModel
import com.mogo.och.taxi.ui.TaxiLoginDialogFragment
import com.mogo.och.common.module.R
import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment
import com.mogo.och.common.module.biz.callback.ITaxiLoginCallback
import com.mogo.och.common.module.biz.model.OchCommonLoginModel
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit
*
* 描述
*/
class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
class OchCommonLoginPresenter(view: TaxiLoginDialogFragment?) :
Presenter<TaxiLoginDialogFragment?>(view), ITaxiLoginCallback {
private var countDownDisposable: Disposable? = null
@@ -33,12 +33,12 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
}
private fun initListeners() {
TaxiLoginModel.init(AbsMogoApplication.getApp())
TaxiLoginModel.setiTaxiLoginCallback(this)
OchCommonLoginModel.init(AbsMogoApplication.getApp())
OchCommonLoginModel.setiTaxiLoginCallback(this)
}
fun getPhoneCode(phone:String){
if(!TaxiLoginModel.hasInit()){
if(!OchCommonLoginModel.hasInit()){
initListeners()
}
if (!RegexUtils.isMobileExact(phone)) {
@@ -46,7 +46,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
mView?.inputPhoneError()
return
}
TaxiLoginModel.getPhoneCode(phone)
OchCommonLoginModel.getPhoneCode(phone)
}
override fun onCreate(owner: LifecycleOwner) {
@@ -58,7 +58,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
TaxiLoginModel.release()
OchCommonLoginModel.release()
countDownDisposable?.let {
if (!it.isDisposed) {
it.dispose()
@@ -67,7 +67,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
}
companion object {
private val TAG = TaxiLoginPresenter::class.java.simpleName
private val TAG = OchCommonLoginPresenter::class.java.simpleName
}
override fun getPhoneCodeSuccess() {
@@ -94,7 +94,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
}
fun gotoLogin(phone: String, code: String) {
if(!TaxiLoginModel.hasInit()){
if(!OchCommonLoginModel.hasInit()){
initListeners()
}
if (!RegexUtils.isMobileExact(phone)) {
@@ -107,6 +107,6 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
return
}
mView?.closeSoftInput()
TaxiLoginModel.gotoLogin(phone,code)
OchCommonLoginModel.gotoLogin(phone,code)
}
}

View File

@@ -0,0 +1,48 @@
package com.mogo.och.common.module.biz.presenter
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.OnLifecycleEvent
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.model.OchCommonLoginStatusDefaultModel
/**
* @author yangyakun
* @since 2020-09-19
*/
class OchCommonLoginStatusDefaultPresenter : LifecycleObserver {
private var isFirstShow = true
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate(owner: LifecycleOwner) {
OchCommonLoginStatusDefaultModel.init()
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume(owner: LifecycleOwner) {
if (isFirstShow) {
isFirstShow = false
} else {
queryLoginStatus()
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestory(owner: LifecycleOwner) {
OchCommonLoginStatusDefaultModel.release()
}
fun queryLoginStatus() {
OchCommonLoginStatusDefaultModel.queryCarStatus()
}
fun logOut(mLatitude:Double,mLongitude:Double){
OchCommonLoginStatusDefaultModel.logout(mLatitude, mLongitude)
}
fun setLoginCallback(loginCallback: ILoginCallback?,loginViewCallback: ILoginViewCallback?){
OchCommonLoginStatusDefaultModel.loginCallback = loginCallback
OchCommonLoginStatusDefaultModel.loginViewCallback = loginViewCallback
}
}

View File

@@ -0,0 +1,29 @@
package com.mogo.och.common.module.biz.provider
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.template.IProvider
import com.mogo.och.common.module.biz.callback.ILoginCallback
interface LoginService : IProvider {
/**
* 注册页面
* @param fragment 主页面
* @param callback 回调
*/
fun registerFragment(fragment: Fragment?,loginCallback: ILoginCallback?)
fun unRegisterFragment()
/**
* 查询登录状态
*/
fun queryLoginStatus():Boolean
fun queryLoginStatusByNet()
/**
* 登出
*/
fun loginOut(mLatitude:Double,mLongitude:Double)
}

View File

@@ -0,0 +1,109 @@
package com.mogo.och.common.module.biz.provider
import android.content.Context
import android.content.DialogInterface
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.AppStateManager.currentActivity
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.presenter.OchCommonLoginStatusDefaultPresenter
import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment
import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment.Companion.newInstance
import java.lang.ref.WeakReference
@Route(path = "/ochbiz/common/login")
class LoginServiceImpl : LoginService,ILoginViewCallback {
companion object{
const val TAG = "LoginServiceImpl"
}
private var fragment: Fragment?=null
private var taxiLoginDialogFragment: WeakReference<TaxiLoginDialogFragment>? = null
private var presenter: OchCommonLoginStatusDefaultPresenter?=null
override fun init(context: Context) {
}
override fun registerFragment(fragment: Fragment?,loginCallback: ILoginCallback?) {
presenter = OchCommonLoginStatusDefaultPresenter()
this.fragment = fragment
presenter?.let {
it.setLoginCallback(loginCallback, this)
this.fragment?.lifecycle?.addObserver(it)
}
}
override fun unRegisterFragment() {
this.presenter?.let {
it.setLoginCallback(null,null)
this.fragment?.lifecycle?.removeObserver(it)
}
this.fragment = null
}
override fun showLoginDialogFragment() {
fragment?.let {
CallerHmiManager.hideToolsView()
val parentFragmentManager = it.parentFragmentManager
val fragmentByTag: Fragment? = parentFragmentManager.findFragmentByTag(TAG)
if (fragmentByTag is DialogFragment) {
if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) {
return
}
if (fragmentByTag.dialog != null && fragmentByTag.isAdded) {
if (currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用
d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 权限验证")
return
}
}
}
if (taxiLoginDialogFragment?.get() == null) {
taxiLoginDialogFragment = WeakReference(newInstance())
}
val taxiLoginDialog = taxiLoginDialogFragment?.get()
if (taxiLoginDialog != null) {
if (taxiLoginDialog.dialog != null && taxiLoginDialog.dialog!!.isShowing) {
return
}
if (taxiLoginDialog.isAdded) { //解决方法就是添加这行代码如果已经添加了就移除掉然后再show就不会出现Fragment already added的错误了。
parentFragmentManager.beginTransaction().remove(taxiLoginDialog)
.commitAllowingStateLoss()
}
d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 展示登录界面")
taxiLoginDialog.show(parentFragmentManager, TAG)
taxiLoginDialog.setOnDismissListener(DialogInterface.OnDismissListener { dialog: DialogInterface? ->
taxiLoginDialogFragment?.clear()
presenter?.queryLoginStatus()
})
}
}
}
override fun hideLoginDialogFragment() {
d(SceneConstant.M_TAXI + TAG, "hideLoginDialogFragment 隐藏登录界面")
if (taxiLoginDialogFragment?.get() != null) {
taxiLoginDialogFragment?.get()?.dismissAllowingStateLoss()
}
}
override fun queryLoginStatus():Boolean {
return LoginStatusManager.isLogin()
}
override fun queryLoginStatusByNet() {
presenter?.queryLoginStatus()
}
override fun loginOut(mLatitude:Double,mLongitude:Double) {
presenter?.logOut(mLatitude,mLongitude)
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.ui
package com.mogo.och.common.module.biz.ui
import android.content.DialogInterface
import android.graphics.Rect
@@ -15,7 +15,6 @@ import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.mvp.MvpDialogFragment
import com.mogo.eagle.core.utilcode.kotlin.onClick
@@ -23,16 +22,15 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.constant.TaxiConst
import com.mogo.och.taxi.presenter.TaxiLoginPresenter
import com.mogo.och.common.module.R
import com.mogo.och.common.module.biz.presenter.OchCommonLoginPresenter
/**
* @author: yangyakun
* @date: 2022/8/15
*/
class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, TaxiLoginPresenter?>(),
class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, OchCommonLoginPresenter?>(),
DialogInterface.OnKeyListener {
lateinit var clMain: ConstraintLayout
@@ -169,8 +167,8 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
}
}
override fun createPresenter(): TaxiLoginPresenter {
return TaxiLoginPresenter(this)
override fun createPresenter(): OchCommonLoginPresenter {
return OchCommonLoginPresenter(this)
}
val COUNTS = 4 // 点击次数

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="taxi_2961F2">#2961F2</color>
<color name="taxi_14FF0000">#14FF0000</color>
<color name="taxi_FF0000">#FF0000</color>
<color name="taxi_666666">#666666</color>
<color name="taxi_86A5F7">#86A5F7</color>
<color name="taxi_111533">#111533</color>
<color name="taxi_878890">#878890</color>
<color name="taxi_EF262C">#EF262C</color>
<color name="taxi_4D000000">#4D000000</color>
</resources>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="module_och_taxi_login_title">欢迎您登录</string>
<string name="module_och_taxi_login_btn">登录</string>
<string name="module_och_taxi_login_get_code">获取验证码</string>
<string name="module_och_taxi_login_get_code_title">请输入验证码</string>
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
<string name="module_och_taxi_login_login_success">登录成功</string>
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
<string name="module_och_taxi_login_code_error">请输入正确的验证码</string>
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>
<string name="network_error_tip">网络异常,请稍后重试</string>
<string name="request_error_tip">请求出现异常,请稍后重试</string>
</resources>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="DialogFullScreen" parent="Theme.AppCompat.Dialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowOverscan">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent
</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowEnterAnimation">@null</item>
<item name="android:windowExitAnimation">@null</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowFullscreen">false</item>
</style>
</resources>

View File

@@ -6,9 +6,7 @@ package com.mogo.och.taxi.callback;
* Model->Presenter回调接单车状态变更 登录状态变更
*/
public interface ITaxiCarStatusCallback {
void onCarStatusChanged(boolean inOperation,String role);
void onServiceDataUpdate(long dailyTimeDuration, long dailyOrderNum);
void onCarLoginStatusChange(boolean isLogin);
}

View File

@@ -81,6 +81,5 @@ class TaxiConst {
const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L
const val WAIT_TAKEN = 100046
}
}

View File

@@ -0,0 +1,38 @@
package com.mogo.och.taxi.constant
object TaxtServingStatusManager {
/**
* 接单状态
*/
private var openOrderStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.None
// region 是否可用接单
@JvmStatic
fun isOpeningOrderStatus():Boolean{
if(openOrderStatus==TaxiOpenOrderStatusEnum.Ordering){
return true
}
return false
}
@JvmStatic
fun setOpenOrderStatus(status: Int) {
when (status) {
0 -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.UnOrdering
}
1 -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.Ordering
}
else -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.None
}
}
}
@JvmStatic
fun getOpenOrderStatus(): TaxiOpenOrderStatusEnum {
return openOrderStatus
}
//endregion
}

View File

@@ -13,6 +13,7 @@ import android.net.ConnectivityManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
import com.amap.api.maps.model.LatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
@@ -34,12 +35,13 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.PinYinUtil;
import com.mogo.och.common.module.utils.ToastUtilsOch;
import com.mogo.och.taxi.R;
import com.mogo.och.taxi.bean.DriverServiceDataRespBean;
import com.mogo.och.taxi.bean.DriverStatusQueryRespBean;
import com.mogo.och.taxi.bean.OrderGrabRespBean;
import com.mogo.och.taxi.bean.OrderGrabStatusQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
@@ -50,19 +52,17 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLogoutReqBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiCarStatusCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.constant.TaxiOrderTypeEnum;
import com.mogo.och.taxi.constant.TaxtServingStatusManager;
import com.mogo.och.taxi.network.TaxiServiceCallback;
import com.mogo.och.taxi.network.TaxiServiceManager;
import com.mogo.och.taxi.utils.StatusManager;
import com.mogo.och.taxi.utils.TaxiAnalyticsManager;
import com.mogo.och.taxi.utils.OrderUtil;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
@@ -79,10 +79,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
import io.reactivex.exceptions.UndeliverableException;
import io.reactivex.functions.Consumer;
import io.reactivex.plugins.RxJavaPlugins;
@@ -119,7 +116,6 @@ public class TaxiModel {
private ITaxiCarStatusCallback mCarStatusCallback; //Model->Presenter接单状态、登录状态和司机今日接单状态
private ITaxiControllerStatusCallback mControllerStatusCallback; //Model->PresenterVR mode等
private ITaxiOrderStatusCallback mOrderStatusCallback; //Model->Presenter订单变更
private Disposable subscribe;
private volatile boolean isRestartAutopilot = false;
@@ -127,6 +123,8 @@ public class TaxiModel {
private double mLongitude, mLatitude;
private LoginService loginService;
private TaxiModel() {
}
@@ -149,6 +147,7 @@ public class TaxiModel {
public void init(Context context) {
mContext = context.getApplicationContext();
initListeners();
loginService = (LoginService) ARouter.getInstance().build("/ochbiz/common/login").navigation();
// IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
// apis.getSocketManagerApi(mContext).init(mContext, DebugConfig.getSocketAppId());
@@ -193,16 +192,13 @@ public class TaxiModel {
CallerLogger.INSTANCE.d(M_TAXI + TAG, "Undeliverable exception");
}
});
queryCarStatus();
}
public void release() {
startOrStopOrderLoop(false);
startOrStopCalculateRouteInfo(false);
releaseListeners();
if(subscribe!=null&&!subscribe.isDisposed()){
subscribe.dispose();
}
loginService = null;
}
private void initListeners() {
@@ -248,7 +244,7 @@ public class TaxiModel {
CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener);
}
private void startOrStopOrderLoop(boolean start) {
public void startOrStopOrderLoop(boolean start) {
CallerLogger.INSTANCE.d(M_TAXI + TAG, "startOrStopOrderLoop() " + start);
if (start) {
TaxiModelLoopManager.getInstance().startInAndWaitOrdersLoop();
@@ -261,82 +257,18 @@ public class TaxiModel {
}
}
/**
* 接单状态和登录状态查询
* 1、初始化查下状态
* 2、点击更新接单状态 如果是初始化状态就查下状态
* 3、点击更新接单状态后 查询状态
* 4、网络状态波动时 查询状态
* 5、登出后更新状态
*/
public void queryCarStatus() {
TaxiServiceManager.getInstance().queryDriverServiceStatus(mContext,
new TaxiServiceCallback<DriverStatusQueryRespBean>() {
@Override
public void onSuccess(DriverStatusQueryRespBean data) {
if (null != data && 0 == data.code) {
StatusManager.setLoginStatus(data.data.driverStatus);
StatusManager.setOpenOrderStatus(data.data.servingStatus);
//更新view
CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + StatusManager.getLoginStatus());
startOrStopOrderLoop(StatusManager.isLogin()&&StatusManager.isOpeningOrderStatus());
if(mCarStatusCallback!=null) {
mCarStatusCallback.onCarLoginStatusChange(StatusManager.isLogin());
}
String role = "";
if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) {
role = TaxiConst.DEMO_USER;
} else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) {
role = TaxiConst.TEST_USER;
}
if (mCarStatusCallback != null) {
mCarStatusCallback.onCarStatusChanged(StatusManager.isOpeningOrderStatus(), role);
}
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
subscribe = Observable.timer(5, TimeUnit.SECONDS).subscribe(aLong -> {
queryCarStatus();
});
}
@Override
public void onFail(int code, String msg) {
ToastUtilsOch.showWithCodeMessage(code,msg);
if(code==TaxiConst.WAIT_TAKEN){
subscribe = Observable.timer(3, TimeUnit.SECONDS).subscribe(aLong -> {
queryCarStatus();
});
}else {
if (mCarStatusCallback != null) {
mCarStatusCallback.onCarLoginStatusChange(StatusManager.isLogin());
}
}
}
});
}
//更新接单状态
public void updateCarStatus() {
if(!StatusManager.isLogin()){
queryCarStatus();
if(!LoginStatusManager.isLogin()){
loginService.queryLoginStatusByNet();
return;
}
TaxiServiceManager.getInstance().changeOrderServing(mContext,StatusManager.isOpeningOrderStatus(),
TaxiServiceManager.getInstance().changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(),
new TaxiServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
//StatusManager.changeOrderStatus();
queryCarStatus();
loginService.queryLoginStatusByNet();
}
}
@@ -1002,8 +934,8 @@ public class TaxiModel {
CallerLogger.INSTANCE.d(M_TAXI + TAG, "onIntentReceived = %s", intentStr);
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr)) {
if (NetworkUtils.isConnected(mContext)) {
startOrStopOrderLoop(StatusManager.isLogin()&&StatusManager.isOpeningOrderStatus());
queryCarStatus();
startOrStopOrderLoop(LoginStatusManager.isLogin()&&TaxtServingStatusManager.isOpeningOrderStatus());
loginService.queryLoginStatusByNet();
}
}
}
@@ -1580,30 +1512,6 @@ public class TaxiModel {
// 登出
public void logout() {
TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude);
TaxiServiceManager.getInstance().logout(mContext,location4Login,
new TaxiServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
mCarStatusCallback.onCarLoginStatusChange(false);
queryCarStatus();
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
}
@Override
public void onFail(int code, String msg) {
ToastUtilsOch.showWithCodeMessage(code,msg);
}
});
loginService.loginOut(mLatitude,mLongitude);
}
}

View File

@@ -2,7 +2,6 @@ package com.mogo.och.taxi.network;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.taxi.bean.CarHeartbeatReqBean;
import com.mogo.och.taxi.bean.DriverServiceDataRespBean;
import com.mogo.och.taxi.bean.DriverStatusQueryRespBean;
import com.mogo.och.taxi.bean.DriverStatusUpdateReqBean;
import com.mogo.och.taxi.bean.OrderCancelReqBean;
import com.mogo.och.taxi.bean.OrderGrabReqBean;
@@ -20,10 +19,6 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginReqBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiLoginSmsReqBean;
import com.mogo.och.taxi.bean.TaxiLogoutReqBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
@@ -290,35 +285,6 @@ interface TaxiServiceApiNew {
Observable<TaxiDataBaseRespBean> orderCompleted(@Header ("appId") String appId
, @Header("ticket") String ticket,@Body TaxiOrPassengerReadyReqBean data);
/**
* 获取手机验证码
*
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" )
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header ("appId") String appId
,@Header("ticket") String ticket,@Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" )
Observable<TaxiLoginRespBean> gotoLoginBycode(@Header ("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation")
Observable<BaseData> logout(@Header ("appId") String appId,@Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 暂停接单
* @param data
@@ -339,15 +305,4 @@ interface TaxiServiceApiNew {
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/resetOrderServing" )
Observable<BaseData> resetOrderServing(@Header ("appId") String appId,@Header("ticket") String ticket
,@Body DriverStatusUpdateReqBean data);
/**
* 接单状态和登录状态查询
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus" )
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId
,@Header("ticket") String ticket,@Query("sn") String sn);
}

View File

@@ -4,7 +4,6 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAX
import android.content.Context;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
@@ -13,7 +12,6 @@ import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.taxi.bean.CarHeartbeatReqBean;
import com.mogo.och.taxi.bean.DriverServiceDataRespBean;
import com.mogo.och.taxi.bean.DriverStatusQueryRespBean;
import com.mogo.och.taxi.bean.DriverStatusUpdateReqBean;
import com.mogo.och.taxi.bean.OrderCancelReqBean;
import com.mogo.och.taxi.bean.OrderGrabReqBean;
@@ -31,10 +29,6 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginReqBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiLoginSmsReqBean;
import com.mogo.och.taxi.bean.TaxiLogoutReqBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
import com.mogo.och.taxi.constant.TaxiConst;
@@ -263,26 +257,6 @@ public class TaxiServiceManager {
.subscribe(getSubscribeImpl(context, callback, "updateDriverServiceStatus"));
}
/**
* 接单状态和登录状态查询
* @param context
* @param callback
*/
public void queryDriverServiceStatus(Context context,
TaxiServiceCallback<DriverStatusQueryRespBean> callback) {
if(MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()){
callback.onFail(TaxiConst.WAIT_TAKEN,"等待令牌中请稍等");
MoGoAiCloudClient.getInstance().refreshToken();
return;
}
mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken()
,MoGoAiCloudClientConfig.getInstance().getSn())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus"));
}
/**
* 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度
* @param context
@@ -455,52 +429,6 @@ public class TaxiServiceManager {
}
/**
* 获取手机验证码
* @param context
* @param callback
*/
public void getPhoneCode(Context context,String phone,
TaxiServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginSmsReqBean(phone))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "getPhoneCode"));
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
public void gotoLoginBycode(Context context, String phone, String code,
TaxiLoginReqBean.Location4Login location4Login,
TaxiServiceCallback<TaxiLoginRespBean> callback) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginReqBean(phone, code, sn, location4Login))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode"));
}
/**
* 登出
*/
public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, TaxiServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.logout(
MoGoAiCloudClientConfig.getInstance().getServiceAppId(),
MoGoAiCloudClientConfig.getInstance().getToken(),
new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "logout"));
}
private <T extends BaseData> SubscribeImpl getSubscribeImpl(
Context context, TaxiServiceCallback<T> callback, String apiName) {
return new SubscribeImpl<T>(RequestOptions.create(context)) {

View File

@@ -15,7 +15,11 @@ import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
@@ -23,6 +27,7 @@ import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiCarStatusCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxtServingStatusManager;
import com.mogo.och.taxi.model.TaxiModel;
import com.mogo.och.taxi.ui.TaxiFragment;
@@ -37,11 +42,10 @@ import java.util.List;
* 描述
*/
public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASStatusCallback,
ITaxiCarStatusCallback, ITaxiOrderStatusCallback, ITaxiControllerStatusCallback {
ITaxiCarStatusCallback, ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback {
private static final String TAG = TaxiPresenter.class.getSimpleName();
private boolean isFirstShow = true;
private int preAutopilotStatus = 0;
public TaxiPresenter(TaxiFragment view) {
@@ -64,16 +68,6 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiModel.getInstance().release();
}
@Override
public void onResume(@NonNull LifecycleOwner owner) {
super.onResume(owner);
if(isFirstShow){
isFirstShow = false;
}else {
TaxiModel.getInstance().queryCarStatus();
}
}
private void initListeners() {
TaxiModel.getInstance().setADASStatusCallback(this);
TaxiModel.getInstance().setCarStatusCallback(this);
@@ -113,13 +107,6 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiModel.getInstance().jumpPassengerCheckDone();
}
/**
* 登录成功后查询登录状态
*/
public void queryLoginStatus() {
TaxiModel.getInstance().queryCarStatus();
}
/**
* 司机确认车辆环境可开启自动驾驶
*/
@@ -218,25 +205,11 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING;
}
@Override
public void onCarStatusChanged(boolean inOperation, String role) {
runOnUIThread(() -> mView.updateOperationStatus(inOperation,role));
}
@Override
public void onServiceDataUpdate(long dailyTimeDuration, long dailyOrderNum) {
runOnUIThread(() -> mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum));
}
@Override
public void onCarLoginStatusChange(boolean isLogin) {
if(isLogin){
mView.hideLoginDialogFragment();
}else {
mView.showLoginDialogFragment();
}
}
@Override
public void onOrdersInServiceChanged(@NonNull @NotNull List<OrderQueryRespBean.Result> inServiceList) {
@@ -337,4 +310,29 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
});
}
}
@Override
public void loginSuccess(DriverStatusQueryRespBean data) {
//设置 接单状态
TaxtServingStatusManager.setOpenOrderStatus(data.data.servingStatus);
//设置 是否启动订单轮训
TaxiModel.getInstance().startOrStopOrderLoop(LoginStatusManager.isLogin()&&TaxtServingStatusManager.isOpeningOrderStatus());
// 设置当前用户角色
String role = "";
if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) {
role = TaxiConst.DEMO_USER;
} else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) {
role = TaxiConst.TEST_USER;
}
String finalRole = role;
runOnUIThread(() -> {
mView.updateOperationStatus(TaxtServingStatusManager.isOpeningOrderStatus(), finalRole);
});
}
@Override
public void loginFail(boolean isLogin) {
}
}

View File

@@ -13,16 +13,13 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import com.mogo.commons.debug.DebugConfig;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.eagle.core.data.temp.EventLogout;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.AppStateManager;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.taxi.R;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
@@ -59,10 +56,19 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
private TaxiGrabOrderFragment grabOrderFragment;
private TaxiServerOrdersFragment serverOrdersFragment;
private WeakReference<TaxiLoginDialogFragment> taxiLoginDialogFragment = null;
private WeakReference<TaxiPersonalDialogFragment> personalDialogFragment = null;
protected double mCurLatitude = 0.0;
protected double mCurLongitude = 0.0;
private LoginService loginService;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
loginService = (LoginService) ARouter.getInstance().build("/ochbiz/common/login").navigation();
if(loginService!=null){
loginService.registerFragment(this, getPresenter());
}
}
@Nullable
@Override
@@ -164,6 +170,8 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
@Override
public void onDestroyView() {
super.onDestroyView();
loginService.unRegisterFragment();
loginService = null;
EventBus.getDefault().unregister(this);
}
@@ -379,57 +387,11 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
mPresenter.logout();
}
public void showLoginDialogFragment(){
CallerHmiManager.INSTANCE.hideToolsView();
Fragment fragmentByTag = getParentFragmentManager().findFragmentByTag(TaxiLoginDialogFragment.Companion.getTAG());
if(fragmentByTag instanceof DialogFragment){
DialogFragment dialogFragment = (DialogFragment)fragmentByTag;
if(dialogFragment.getDialog()!=null&&dialogFragment.getDialog().isShowing()){
return;
}
if(dialogFragment.getDialog()!=null&&dialogFragment.isAdded()){
if (AppStateManager.INSTANCE.currentActivity()==null) {// 没有在当前应用内 在启动页面关闭应用
CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 权限验证");
return;
}
}
}
if(taxiLoginDialogFragment==null||taxiLoginDialogFragment.get()==null) {
taxiLoginDialogFragment = new WeakReference<>(TaxiLoginDialogFragment.newInstance());
}
TaxiLoginDialogFragment taxiLoginDialog = taxiLoginDialogFragment.get();
if(taxiLoginDialog!=null) {
if (taxiLoginDialog.getDialog() != null && taxiLoginDialog.getDialog().isShowing()) {
return;
}
if (taxiLoginDialog.isAdded()) {//解决方法就是添加这行代码如果已经添加了就移除掉然后再show就不会出现Fragment already added的错误了。
getParentFragmentManager().beginTransaction().remove(taxiLoginDialog).commitAllowingStateLoss();
}
CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 展示登录界面");
taxiLoginDialog.show(getParentFragmentManager(), TaxiLoginDialogFragment.Companion.getTAG());
taxiLoginDialog.setOnDismissListener(dialog -> {
taxiLoginDialogFragment.clear();
mPresenter.queryLoginStatus();
});
}
}
public void hideLoginDialogFragment(){
CallerLogger.INSTANCE.d(M_TAXI + TAG,"hideLoginDialogFragment 隐藏登录界面");
if(taxiLoginDialogFragment!=null&&taxiLoginDialogFragment.get()!=null){
taxiLoginDialogFragment.get().dismissAllowingStateLoss();
}
}
private void testRouteInfoUpload() {
TPRouteDataTestUtils.converToRouteData();
}
/**
* Taxi调试信息订单、线路、轨迹等信息
*
* START
*/
//region Taxi调试信息订单、线路、轨迹等信息
private View testBar;
private TextView testCurOrderId;
private TextView testCurLineId;
@@ -474,7 +436,6 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
testCurStopMd5DPQP.setText("SMd5DPQP:" + (order == null ? "" : order.txtFileMd5DPQP));
}
}
/**
* END
*/
//endregion
}

View File

@@ -1,73 +0,0 @@
package com.mogo.och.taxi.utils
import com.mogo.och.taxi.constant.TaxiLoginStatusEnum
import com.mogo.och.taxi.constant.TaxiOpenOrderStatusEnum
object StatusManager {
/**
* 登录状态
*/
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
/**
* 接单状态
*/
private var openOrderStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.None
@JvmStatic
fun setLoginStatus(status: Int) {
when (status) {
0 -> {
this.loginStatus = TaxiLoginStatusEnum.Logout
}
1 -> {
this.loginStatus = TaxiLoginStatusEnum.Login
}
else -> {
this.loginStatus = TaxiLoginStatusEnum.None
}
}
}
@JvmStatic
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
this.loginStatus = loginStatus
}
@JvmStatic
fun getLoginStatus(): TaxiLoginStatusEnum {
return loginStatus
}
@JvmStatic
fun isLogin():Boolean {
if(loginStatus==TaxiLoginStatusEnum.Login){
return true
}
return false
}
// region 是否可用接单
@JvmStatic
fun isOpeningOrderStatus():Boolean{
if(openOrderStatus==TaxiOpenOrderStatusEnum.Ordering){
return true
}
return false
}
@JvmStatic
fun setOpenOrderStatus(status: Int) {
when (status) {
0 -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.UnOrdering
}
1 -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.Ordering
}
else -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.None
}
}
}
@JvmStatic
fun getOpenOrderStatus(): TaxiOpenOrderStatusEnum {
return openOrderStatus
}
//endregion
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -25,14 +25,4 @@
<color name="taxi_passenger_line_color">#657EE2</color>
<color name="taxi_2961F2">#2961F2</color>
<color name="taxi_14FF0000">#14FF0000</color>
<color name="taxi_FF0000">#FF0000</color>
<color name="taxi_666666">#666666</color>
<color name="taxi_86A5F7">#86A5F7</color>
<color name="taxi_111533">#111533</color>
<color name="taxi_878890">#878890</color>
<color name="taxi_EF262C">#EF262C</color>
<color name="taxi_4D000000">#4D000000</color>
</resources>

View File

@@ -30,17 +30,6 @@
<string name="module_och_taxi_auto_disable_tip">自动驾驶状态为0不可用</string>
<string name="module_och_taxi_auto_disable_tip1">司机端未确认可以开启自动驾驶</string>
<string name="module_och_taxi_login_title">欢迎您登录</string>
<string name="module_och_taxi_login_btn">登录</string>
<string name="module_och_taxi_login_get_code">获取验证码</string>
<string name="module_och_taxi_login_get_code_title">请输入验证码</string>
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
<string name="module_och_taxi_login_login_success">登录成功</string>
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
<string name="module_och_taxi_login_code_error">请输入正确的验证码</string>
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>
<string name="network_error_tip">网络异常,请稍后重试</string>
<string name="request_error_tip">请求出现异常,请稍后重试</string>
</resources>

View File

@@ -23,22 +23,4 @@
<style name="och_speed_style2">
<item name="android:textSize">32px</item>
</style>
<style name="DialogFullScreen" parent="Theme.AppCompat.Dialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowOverscan">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent
</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowEnterAnimation">@null</item>
<item name="android:windowExitAnimation">@null</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowFullscreen">false</item>
</style>
</resources>