diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5691c51..f9bf430 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -176,7 +176,6 @@
android:process=":background"
android:screenOrientation="portrait" />
-
? = null
private val nextRequestKey = AtomicInteger(0)
private var reConnection = false
+ private var connectId=-1
companion object {
const val REQUEST_CONNECT = 1
const val CHECK_NODE_REQUEST_CODE = 2
@@ -211,6 +218,10 @@ class HomeFragment: BaseFragment() , CoroutineScope by CoroutineScope(Dispatcher
rxDialogSureCancel.setSureListener {
stopUpLoadTimer()
stopClash()
+ Log.d("NewAccFragment connectId:::${connectId}")
+ if(connectId!=-1){
+ mainAtyVM.appStopStatus(connectId)
+ }
rxDialogSureCancel.cancel()
reConnection = false
}
@@ -317,6 +328,28 @@ class HomeFragment: BaseFragment() , CoroutineScope by CoroutineScope(Dispatcher
}
}
}
+ HttpReqType.AppStartupStatus ->{
+ Log.d("AppStartupStatus is Success ${httpStatus.rsp}")
+ val dataInfo = httpStatus.rsp as AppStartupStatus
+ if(dataInfo.data!=null){
+ if(dataInfo.data.id!=null){
+ connectId= dataInfo.data.id
+ MMKV.defaultMMKV().encode(BZYConstants.CONNECTID, dataInfo.data.id)
+ val serviceIntent= Intent(requireContext(), ConnectionService::class.java)
+ serviceIntent.putExtra("receiver",resultReceiver)
+ requireContext().startService(serviceIntent)
+ }
+ }
+ }
+ HttpReqType.AppUpStatus ->{
+ Log.d("AppUpStatus is Success ${httpStatus.rsp}")
+ }
+
+ HttpReqType.AppStopStatus ->{
+ Log.d("AppStopStatus is Success ${httpStatus.rsp}")
+ val serviceIntent= Intent(requireContext(), ConnectionService::class.java)
+ requireContext().stopService(serviceIntent)
+ }
else->{
}
@@ -324,9 +357,30 @@ class HomeFragment: BaseFragment() , CoroutineScope by CoroutineScope(Dispatcher
}
override fun httpFailure(httpStatus: HttpStatus.Failure) {
+ when(httpStatus.reqType){
+ HttpReqType.AppStartupStatus ->{
+ Log.d("AppStartupStatus is Failure ${httpStatus.msg}")
+ }
+ HttpReqType.AppUpStatus ->{
+ Log.d("AppUpStatus is Failure ${httpStatus.msg}")
+ }
+ HttpReqType.AppStopStatus ->{
+ Log.d("AppStopStatus is Failure ${httpStatus.msg}")
+ }
+ else->{
+ }
+ }
+ }
+ private val resultReceiver: ResultReceiver = object : ResultReceiver(null) {
+ override fun onReceiveResult(resultCode: Int, resultData: Bundle) {
+ val data = resultData.getString("data")
+ Log.d("ping to from Service: $data")
+ if(connectId!=-1){
+ mainAtyVM.appUpStatus(connectId)
+ }
+ }
}
-
private fun initMainPageHorseRaceLamp(noticeData: String) {
if (noticeData.isNotEmpty()) {
tvNotice.text = noticeData
@@ -424,7 +478,10 @@ class HomeFragment: BaseFragment() , CoroutineScope by CoroutineScope(Dispatcher
if (result.resultCode == RESULT_OK) {
stateChanged(Clash_Starting, true)
context?.startClashService()
+ mainAtyVM.appStartupStatus()
}
+ }else{
+ mainAtyVM.appStartupStatus()
}
} catch (e: Exception) {
stopUpLoadTimer()
diff --git a/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt
index 310ccdf..9ae4923 100644
--- a/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt
+++ b/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt
@@ -115,6 +115,8 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
private lateinit var tvExitLog:TextView
private lateinit var tvSignIn:TextView
+
+ private lateinit var tvVersion:TextView
private var baseLoading: RxDialogShapeLoading? = null
private val fragments = arrayListOf()
private lateinit var mainAtyVM: MainAtyVM
@@ -136,6 +138,7 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
container.addView(view)
}
+ @SuppressLint("SetTextI18n")
private fun initLanguage(view: View) {
userIdentityNumberCopy.text = requireActivity().resources.getString(R.string.copy)
view.findViewById(R.id.expirationTimeStr).text = requireActivity().resources.getString(R.string.expire_date)
@@ -179,6 +182,7 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
tvSignIn.text = requireActivity().resources.getString(R.string.SignIn)
tvExitLog.text=requireActivity().resources.getString(R.string.exit)
+ tvVersion.text=requireActivity().resources.getString(R.string.edition) + "${BuildConfig.VERSION_NAME}." + BuildConfig.productId
}
private fun initView(view: View) {
@@ -203,6 +207,8 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
clApplicationLanguage=view.findViewById(R.id.clApplicationLanguage)
clTelegraph=view.findViewById(R.id.clTelegraph)
tvExitLog=view.findViewById(R.id.tvExitLog)
+ tvVersion=view.findViewById(R.id.tvVersion)
+
setExpireDate()
if(checkExpire()){
diff --git a/app/src/main/java/com/yingmao/clash/net/http/NetService.kt b/app/src/main/java/com/yingmao/clash/net/http/NetService.kt
index dba2407..bfa8389 100644
--- a/app/src/main/java/com/yingmao/clash/net/http/NetService.kt
+++ b/app/src/main/java/com/yingmao/clash/net/http/NetService.kt
@@ -92,10 +92,10 @@ class NetService private constructor() : INetService {
// .sslSocketFactory(getSSLSocketFactory(), CustomTrustManager())//信任所有证书
.sslSocketFactory(getSSLSocketFactory(), trustAllCerts[0] as X509TrustManager)
.hostnameVerifier(getHostnameVerifier()!!)
- if (BuildConfig.DEBUG) {
- builder.addInterceptor(loggingInterceptor)
- }
-// builder.addInterceptor(loggingInterceptor)
+// if (BuildConfig.DEBUG) {
+// builder.addInterceptor(loggingInterceptor)
+// }
+ builder.addInterceptor(loggingInterceptor)
return builder.build()
}
diff --git a/app/src/main/java/com/yingmao/clash/view/RxToast.kt b/app/src/main/java/com/yingmao/clash/view/RxToast.kt
index 4571d62..92e5608 100644
--- a/app/src/main/java/com/yingmao/clash/view/RxToast.kt
+++ b/app/src/main/java/com/yingmao/clash/view/RxToast.kt
@@ -283,7 +283,7 @@ object RxToast {
toastTextView.typeface = Typeface.create(TOAST_TYPEFACE, Typeface.NORMAL)
currentToast?.view = toastLayout
currentToast?.duration = duration
- currentToast?.setGravity(Gravity.TOP,0,200)
+ currentToast?.setGravity(Gravity.CENTER,0,200)
return currentToast
}
diff --git a/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt b/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt
index 0d19f60..da08be8 100644
--- a/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt
+++ b/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt
@@ -24,10 +24,12 @@ import com.yingmao.clash.net.http.HttpReqType
import com.yingmao.clash.net.http.NetService
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
+import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.toRequestBody
import org.yaml.snakeyaml.Yaml
import java.math.BigDecimal
import java.util.*
@@ -283,4 +285,60 @@ class MainAtyVM : PublicViewMode() {
Log.d("e==>" + e.localizedMessage)
}
}
+ fun appStartupStatus() {
+ val httpApi = NetService.instances.createHttpsEncodeStr(HttpApi::class.java)
+ val token = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")!!
+ val phoneNumber =
+ MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
+ val params = mutableMapOf(
+ "phToken" to token,
+ "phoneNumber" to phoneNumber,
+ )
+ Log.d("appCheck==>$params")
+ doAsync(HttpReqType.AppStartupStatus) {
+ httpApi.appStartupStatus(params)
+ }
+ }
+
+ fun appStopStatus(addId:Int) {
+ val httpApi = NetService.instances.createHttpsEncodeStr(HttpApi::class.java)
+ val token = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")!!
+ val phoneNumber =
+ MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
+ val paramsToken = mutableMapOf(
+ "phToken" to token,
+ "phoneNumber" to phoneNumber,
+ )
+
+ val params = hashMapOf(
+ "id" to addId
+ )
+ val gson = Gson()
+ val jsonString = gson.toJson(params)
+ val requestBody: RequestBody = jsonString.toRequestBody("application/json; charset=utf-8".toMediaType())
+ doAsync(HttpReqType.AppStopStatus) {
+ httpApi.appStopStatus(paramsToken,requestBody)
+ }
+ }
+
+ fun appUpStatus(addId:Int) {
+ val httpApi = NetService.instances.createHttpsEncodeStr(HttpApi::class.java)
+ val token = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")!!
+ val phoneNumber =
+ MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
+ val paramsToken = mutableMapOf(
+ "phToken" to token,
+ "phoneNumber" to phoneNumber,
+ )
+
+ val params = hashMapOf(
+ "id" to addId
+ )
+ val gson = Gson()
+ val jsonString = gson.toJson(params)
+ val requestBody: RequestBody = jsonString.toRequestBody("application/json; charset=utf-8".toMediaType())
+ doAsync(HttpReqType.AppUpStatus) {
+ httpApi.appUpStatus(paramsToken,requestBody)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/toast_bg_fai.xml b/app/src/main/res/drawable/toast_bg_fai.xml
index 328d57b..cc8e457 100644
--- a/app/src/main/res/drawable/toast_bg_fai.xml
+++ b/app/src/main/res/drawable/toast_bg_fai.xml
@@ -2,8 +2,8 @@
-
diff --git a/app/src/main/res/drawable/toast_bg_suc.xml b/app/src/main/res/drawable/toast_bg_suc.xml
index c0a264b..017de03 100644
--- a/app/src/main/res/drawable/toast_bg_suc.xml
+++ b/app/src/main/res/drawable/toast_bg_suc.xml
@@ -2,8 +2,8 @@
-
diff --git a/app/src/main/res/layout/setting_fragment_layout.xml b/app/src/main/res/layout/setting_fragment_layout.xml
index 3b40ddc..2a4429e 100644
--- a/app/src/main/res/layout/setting_fragment_layout.xml
+++ b/app/src/main/res/layout/setting_fragment_layout.xml
@@ -1089,17 +1089,28 @@
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintBottom_toTopOf="@+id/tvVersion"
android:paddingTop="13dp"
android:paddingBottom="13dp"
android:layout_marginStart="13dp"
android:layout_marginEnd="13dp"
android:gravity="center"
android:text="@string/SignIn"
- android:layout_marginBottom="16dp"
android:textColor="#4072FE"
android:textSize="16sp"
android:background="@drawable/setting_sing_in_bg"
/>
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/toast_layout.xml b/app/src/main/res/layout/toast_layout.xml
index 6174ea6..df94d60 100644
--- a/app/src/main/res/layout/toast_layout.xml
+++ b/app/src/main/res/layout/toast_layout.xml
@@ -17,6 +17,7 @@
android:id="@+id/toast_text"
android:textSize="16sp"
android:textStyle="bold"
+ android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />