keyCabinet-android/app/libs/API-20250310.jarBinary files differ
keyCabinet-android/app/libs/simple-xml-2.7.1.jarBinary files differ
keyCabinet-android/app/src/main/AndroidManifest.xml
@@ -16,6 +16,12 @@ android:usesCleartextTraffic="true" tools:replace="android:allowBackup"> <activity android:name=".ui.face.ChoseActivationActivity" android:exported="false" /> <activity android:name=".ui.face.OfflineActivationActivity" android:exported="false" /> <activity android:name=".ui.keyCabinet.ChangeUrlActivity" android:exported="false" /> <activity @@ -27,31 +33,30 @@ <activity android:name=".ui.keyCabinet.KeyCabinetActivity" android:exported="false" /> <activity android:name=".ui.guide.TestActivity"> </activity> <activity android:name=".ui.guide.TestActivity" /> <activity android:name="com.doumee.keyCabinet.ui.face.ErrActivity" android:name=".ui.face.ErrActivity" android:exported="false" /> <activity android:name="com.doumee.keyCabinet.ui.face.UserManagerActivity" android:name=".ui.face.UserManagerActivity" android:exported="false" /> <activity android:name="com.doumee.keyCabinet.ui.face.AddFaceActivity" android:name=".ui.face.AddFaceActivity" android:exported="false" /> <activity android:name="com.doumee.keyCabinet.ui.face.ActivationActivity" android:name=".ui.face.ActivationActivity" android:exported="false" /> <activity android:name="com.doumee.keyCabinet.ui.face.FaceActivity" android:name=".ui.face.FaceActivity" android:exported="false" android:windowSoftInputMode="stateAlwaysHidden|adjustPan"/> android:windowSoftInputMode="stateAlwaysHidden|adjustPan" /> <activity android:name="com.doumee.keyCabinet.ui.main.MainActivity" android:name=".ui.main.MainActivity" android:exported="true" android:launchMode="singleTask" > android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> @@ -75,8 +80,8 @@ android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" /> </provider> <!--<receiver <!-- <receiver android:name="com.doumee.keyCabinet.ui.service.BootCompleteReceiver" android:enabled="true" android:exported="true"> @@ -85,20 +90,22 @@ <intent-filter android:priority="1000"> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>--> <!--<service android:name="com.doumee.keyCabinet.ui.service.HeartbeatService" /> <service android:name="com.doumee.keyCabinet.ui.service.FaceUpdateService" />--> </receiver> --> <!-- <service android:name="com.doumee.keyCabinet.ui.service.HeartbeatService" /> <service android:name="com.doumee.keyCabinet.ui.service.FaceUpdateService" /> --> <uses-library android:name="org.apache.http.legacy" android:required="false" /> </application> <uses-permission android:name="android.permission.ACCESS_SURERUSER" /> <uses-permission android:name="android.permission.USB_PERMISSION"/> <uses-feature android:name="android.hardware.usb.host"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-feature android:name="android.hardware.usb.host" /> <uses-feature android:name="android.hardware.nfc" /> <uses-permission android:name="android.permission.ACCESS_SURERUSER" /> <uses-permission android:name="android.permission.USB_PERMISSION" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> @@ -120,7 +127,6 @@ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
@@ -20,6 +20,8 @@ private String info; //设å¤åç§° private String name; //人è¸è¯å«ç¦»çº¿æ¿æ´»æä»¶ä¸è½½å°å private String activateFileUrl; private CabinetConfigDataBean cabinetConfigDataVO; private List<ManageKeyCabinetBean> cabinetGridInfoVOList; @@ -103,4 +105,12 @@ public void setCabinetConfigDataVO(CabinetConfigDataBean cabinetConfigDataVO) { this.cabinetConfigDataVO = cabinetConfigDataVO; } public String getActivateFileUrl() { return activateFileUrl; } public void setActivateFileUrl(String activateFileUrl) { this.activateFileUrl = activateFileUrl; } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BatchOpenGridAdminParam.java
@@ -7,6 +7,8 @@ private Integer cabinetId; //ææ ¼ä¸»é®å表 private List<Integer> gridIdList; //å¼å¯æ¹å¼ï¼0=ç³»ç»å¼å¯ï¼1=æå¨å¼å¯ private int openType; public Integer getCabinetId() { return cabinetId; @@ -23,4 +25,12 @@ public void setGridIdList(List<Integer> gridIdList) { this.gridIdList = gridIdList; } public int getOpenType() { return openType; } public void setOpenType(int openType) { this.openType = openType; } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OpenGridDriverParam.java
@@ -12,6 +12,8 @@ private int cabinetId; //ææ ¼ä¸»é® private int gridId; //å¼å¯æ¹å¼ï¼0=ç³»ç»å¼å¯ï¼1=æå¨å¼å¯ private int openType; public int getAuthType() { return authType; @@ -44,4 +46,12 @@ public void setGridId(int gridId) { this.gridId = gridId; } public int getOpenType() { return openType; } public void setOpenType(int openType) { this.openType = openType; } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ChoseActivationActivity.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package com.doumee.keyCabinet.ui.face; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.doumee.keyCabinet.R; import com.doumee.keyCabinet.base.MyBaseActivity; import com.doumee.keyCabinet.databinding.ChoseActivationActivityBinding; import com.doumee.lib_coremodel.bean.event.ActionEventData; import com.innohi.YNHAPI; import dagger.hilt.android.AndroidEntryPoint; @AndroidEntryPoint public class ChoseActivationActivity extends MyBaseActivity<ChoseActivationVM, ChoseActivationActivityBinding> { @Override public int getLayoutId() { return R.layout.chose_activation_activity; } @Override public void initView(@Nullable Bundle savedInstanceState) { isToGuild = false; normalConfig(); getDB().setModel(getVM()); YNHAPI mAPI = YNHAPI.getInstance(); mAPI.setNavigationBarVisibility(YNHAPI.NavigationBarVisibility.VISIBLE); } @Override public void initData(@Nullable Bundle savedInstanceState) { } @Override protected void doRegister(int type, ActionEventData data) { switch (type){ case 1: startActivity(ActivationActivity.class); finish(); break; case 2: startActivity(OfflineActivationActivity.class); finish(); break; default: break; } } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ChoseActivationVM.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.doumee.keyCabinet.ui.face; import android.app.Application; import androidx.annotation.NonNull; import androidx.hilt.lifecycle.ViewModelInject; import com.doumee.lib_coremodel.base.BaseModel; import com.doumee.lib_coremodel.base.DataViewModel; public class ChoseActivationVM extends DataViewModel { @ViewModelInject public ChoseActivationVM(@NonNull Application application, BaseModel model) { super(application, model); } @Override protected void clickByTypeCommand(int type) { doAction(type); } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
@@ -121,6 +121,12 @@ private SpannableString getErrPhoneText(){ String phone = MApplication.getConfigBean().getLinkPhone(); if(phone==null){ String text = "妿é®é¢è¯·è系管çå"; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return styledText; } String text = "妿é®é¢è¯·è系管çå"+phone; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,190 @@ package com.doumee.keyCabinet.ui.face; import androidx.annotation.Nullable; import android.content.ClipboardManager; import android.content.Context; import android.os.Bundle; import android.os.Environment; import android.text.TextUtils; import android.view.View; import com.baidu.idl.main.facesdk.FaceAuth; import com.baidu.idl.main.facesdk.callback.Callback; import com.doumee.keyCabinet.MApplication; import com.doumee.keyCabinet.R; import com.doumee.keyCabinet.base.MyBaseActivity; import com.doumee.keyCabinet.databinding.OfflineActivationActivityBinding; import com.doumee.keyCabinet.event.TimeClockEvent; import com.doumee.keyCabinet.utils.LMobileInfo; import com.doumee.keyCabinet.utils.update.FileUtil; import com.doumee.lib_coremodel.view.ToastView; import com.example.datalibrary.utils.FileUtils; import com.example.datalibrary.utils.ToastUtils; import org.greenrobot.eventbus.Subscribe; import dagger.hilt.android.AndroidEntryPoint; @AndroidEntryPoint public class OfflineActivationActivity extends MyBaseActivity<OfflineActivationVM, OfflineActivationActivityBinding> implements View.OnClickListener { private FaceAuth faceAuth; private boolean isDownLoad; String filePath = Environment.getExternalStorageDirectory().getPath()+"/License.zip"; @Override public int getLayoutId() { return R.layout.offline_activation_activity; } @Override public void initView(@Nullable Bundle savedInstanceState) { isToGuild = false; normalConfig(); getDB().setModel(getVM()); } @Override public void initData(@Nullable Bundle savedInstanceState) { getDB().tvId.setText("NOï¼"+ LMobileInfo.getDeviceUniqueId()); // å¤å¶æé® faceAuth = new FaceAuth(); String a = faceAuth.getDeviceId(this); getDB().accreditDeviceTv.setText(a); // é¿æç¹å»å¤å¶ getDB().accreditDeviceTv.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(getDB().accreditDeviceTv.getText()); ToastUtils.toast(OfflineActivationActivity.this, "deviceID å¤å¶æå"); return false; } }); getDB().accreditOffBtn.setOnClickListener(this); getDB().btnDown.setOnClickListener(this); } @Subscribe public void TimeClockEvent(TimeClockEvent e){ if(!isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { updateDownStatus(); } }); } } private void updateDownStatus(){ if(isDownLoad){ return; } //å æ ¡éªæ¯å¦æä¸è½½è·¯å¾ if(!TextUtils.isEmpty(MApplication.getConfigBean().getActivateFileUrl())){ if(FileUtil.FileIsExist(filePath)) { //æä»¶åå¨ getDB().btnDown.setText("éæ°ä¸è½½æ¿æ´»æä»¶"); getDB().btnDown.setClickable(true); getDB().btnDown.setBackgroundResource(R.mipmap.btn_main_normal); getDB().accreditOffBtn.setClickable(true); getDB().accreditOffBtn.setBackgroundResource(R.mipmap.btn_main_normal); }else { getDB().btnDown.setText("ä¸è½½æ¿æ´»æä»¶"); getDB().btnDown.setClickable(true); getDB().btnDown.setBackgroundResource(R.mipmap.btn_main_normal); getDB().accreditOffBtn.setClickable(false); getDB().accreditOffBtn.setBackgroundResource(R.mipmap.btn_less_normal); } }else { //å 餿¿æ´»æä»¶ FileUtils.deleteFile(filePath); getDB().btnDown.setText("å¾ åå°ä¸ä¼ æ¿æ´»æä»¶"); getDB().btnDown.setClickable(false); getDB().btnDown.setBackgroundResource(R.mipmap.btn_less_normal); getDB().accreditOffBtn.setClickable(false); getDB().accreditOffBtn.setBackgroundResource(R.mipmap.btn_less_normal); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_down: //ä¸è½½æé® if(isDownLoad){ ToastView.show(MApplication.mContext,"ä¸è½½ä¸..."); return; } if(!TextUtils.isEmpty(MApplication.getConfigBean().getActivateFileUrl())){ isDownLoad = true; FileUtil.downLoadFile(filePath, MApplication.getConfigBean().getActivateFileUrl(), new FileUtil.DownLoadCallBack() { @Override public void sucess() { ToastView.show(MApplication.mContext,"ä¸è½½æå"); isDownLoad = false; } @Override public void err(String e) { ToastView.show(MApplication.mContext,e); isDownLoad = false; } }); } break; // ç¦»çº¿æ¿æ´» case R.id.accredit_offBtn: faceAuth.initLicenseOffLine(this, new Callback() { @Override public void onResponse(final int code, final String response) { if (code == 0) { runOnUiThread(new Runnable() { @Override public void run() { // æææå跳转åè½å ¥å£é¡µé¢ getDB().accreditHintTv.setText(""); finish(); } }); } else { runOnUiThread(new Runnable() { @Override public void run() { if (code == 7) { getDB().accreditHintTv.setText("æ¿æ´»å¤±è´¥ï¼è®¾å¤ç¡¬ä»¶æçº¹ä¸License.zipä¸ç¬¦"); } else if (code == 11) { getDB().accreditHintTv.setText("æ¿æ´»å¤±è´¥ï¼License.zipæä»¶å¯¹åºçåºåå·ä¸å¨æææèå´å "); } else if (code == -1) { getDB().accreditHintTv.setText("æªæ£æµå°License.zipæä»¶"); } else if (code == 14) { getDB().accreditHintTv.setText("æ¿æ´»å¤±è´¥ï¼License.zipæä»¶å¯¹åºçåºåå·ä¸å¨æææèå´å "); } else if (code == 4) { getDB().accreditHintTv.setText("æ¿æ´»å¤±è´¥ï¼è®¾å¤ç¡¬ä»¶æçº¹ä¸License.zipä¸ç¬¦"); } else { getDB().accreditHintTv.setText(code); } } }); } } }); break; } } @Override protected void onDestroy() { super.onDestroy(); } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationVM.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.doumee.keyCabinet.ui.face; import android.app.Application; import androidx.annotation.NonNull; import androidx.hilt.lifecycle.ViewModelInject; import com.doumee.lib_coremodel.base.BaseModel; import com.doumee.lib_coremodel.base.DataViewModel; public class OfflineActivationVM extends DataViewModel { @ViewModelInject public OfflineActivationVM(@NonNull Application application, BaseModel model) { super(application, model); } @Override protected void clickByTypeCommand(int type) { doAction(type); } } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
@@ -167,6 +167,7 @@ //å¼å¯æé¨ getVM().openGridDriver(selectBean); downTime = 60; getDB().tvTitle.setVisibility(View.GONE); break; case 2: //getDB().clTip1.setVisibility(View.GONE); @@ -281,6 +282,12 @@ private SpannableString getErrPhoneText(){ String phone = MApplication.getConfigBean().getLinkPhone(); if(phone==null){ String text = "妿é®é¢è¯·è系管çå"; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return styledText; } String text = "妿é®é¢è¯·è系管çå"+phone; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip2), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
@@ -289,7 +289,7 @@ param.setMemberId(loginBean.getMemberId()); param.setGridId(gridDo.getGridId()); param.setKeyStatus(!TextUtils.isEmpty(gridDo.getCurKeyCode())?1:2); toast(gridDo.getGridKey()+"å ³éï¼å½åé¥åå·ï¼"+gridDo.getCurKeyCode()); //toast(gridDo.getGridKey()+"å ³éï¼å½åé¥åå·ï¼"+gridDo.getCurKeyCode()); getRetrofitService(Apis.class).closeGrid(ParamsUtil.encodeRequestBody(param)) .compose(RxUtils.schedulersTransformer()) .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) { keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -69,6 +69,7 @@ import com.doumee.keyCabinet.event.OpenGridOneResultEvent; import com.doumee.keyCabinet.event.TimeClockEvent; import com.doumee.keyCabinet.ui.face.ActivationActivity; import com.doumee.keyCabinet.ui.face.ChoseActivationActivity; import com.doumee.keyCabinet.ui.face.FaceActivity; import com.doumee.keyCabinet.ui.keyCabinet.ChangeUrlActivity; import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity; @@ -458,6 +459,12 @@ private SpannableString getErrPhoneText(){ String phone = MApplication.getConfigBean().getLinkPhone(); if(phone==null){ String text = "妿é®é¢è¯·è系管çå"; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return styledText; } String text = "妿é®é¢è¯·è系管çå"+phone; SpannableString styledText = new SpannableString(text); styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); @@ -577,7 +584,7 @@ /* *è¦æ§è¡çæä½*/ startActivity(new Intent(mContext, ActivationActivity.class)); startActivity(new Intent(mContext, ChoseActivationActivity.class)); } }; Timer timer = new Timer(); keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/BraceletLogUtils.java
@@ -14,14 +14,14 @@ public static Long lastTime = 0L; public static void saveLog(String msg){ String time = TimeUtils.getNowDate(); /*String time = TimeUtils.getNowDate(); String text = SpUtil.getString(LOG_KEY); if(TextUtils.isEmpty(text)){ text = ""; } text+= time + "ï¼"+msg+" #"; COUNT++; SpUtil.saveString(LOG_KEY,text); SpUtil.saveString(LOG_KEY,text);*/ } keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/update/FileUtil.java
@@ -10,6 +10,9 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.sql.Timestamp; import java.text.DecimalFormat; @@ -236,4 +239,60 @@ } return file; } public static interface DownLoadCallBack{ void sucess(); void err(String e); } public static void downLoadFile(String filePath,String url,DownLoadCallBack callBack){ try { URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.setConnectTimeout(10000); int responeCode = conn.getResponseCode(); InputStream is; if (responeCode == 200) { is = conn.getInputStream(); } else { //è¿æ¥å¤±è´¥ if(callBack!=null){ callBack.err("ä¸è½½å°åé误"); } return; } int fileSize = conn.getContentLength(); if (fileSize < 1 || is == null) { //æä»¶å¤§å°ä¸å¯¹ if(callBack!=null){ callBack.err("æä»¶å¤§å°ä¸å¯¹"); } return; } else { //ä¸è½½ if (FileUtil.deleteFile(filePath)) {// å é¤åæ¥çå®è£ æä»¶åä¸è½½ FileOutputStream fos = new FileOutputStream(filePath); byte[] bytes = new byte[1024]; int len = -1; while ((len = is.read(bytes)) != -1) { fos.write(bytes, 0, len); fos.flush(); } //ä¸è½½å®æ if(callBack!=null){ callBack.sucess(); } is.close(); fos.close(); } } } catch (Exception e) { //ä¸è½½æ¥é if(callBack!=null){ callBack.err(e.getMessage()); } e.printStackTrace(); } } } keyCabinet-android/app/src/main/res/layout/chose_activation_activity.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,66 @@ <?xml version="1.0" encoding="utf-8"?> <layout > <data> <import type="com.doumee.lib_coremodel.base.BaseViewModel"/> <import type="android.view.View"/> <variable name="model" type="com.doumee.keyCabinet.ui.face.ChoseActivationVM" /> </data> <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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.face.ChoseActivationActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="éæ©æ¿æ´»æ¹å¼" android:textColor="#ff111111" android:textSize="33sp" android:textStyle="bold" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="30dp"/> <TextView android:id="@+id/tv_zx" android:layout_width="match_parent" android:layout_height="75dp" android:text="å¨çº¿æ¿æ´»" android:textColor="@color/white" android:textSize="24sp" android:textStyle="bold" android:gravity="center" android:background="@drawable/shape_mb_bt_ok" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:commandType="@{1}" app:onClickCommand="@{model.myTypeCommand}" android:layout_marginBottom="30dp"/> <TextView android:id="@+id/tv_km" android:layout_width="match_parent" android:layout_height="75dp" android:text="ç¦»çº¿æ¿æ´»" android:textColor="@color/white" android:textSize="24sp" android:textStyle="bold" android:gravity="center" android:background="@drawable/shape_mb_bt_ok" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" app:layout_constraintTop_toBottomOf="@+id/tv_zx" android:layout_marginTop="60dp" app:commandType="@{2}" app:onClickCommand="@{model.myTypeCommand}" android:layout_marginBottom="30dp"/> </androidx.constraintlayout.widget.ConstraintLayout> </layout> keyCabinet-android/app/src/main/res/layout/key_cabinet_activity.xml
@@ -61,6 +61,19 @@ app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="30dp"/> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="éæ©æé¨" android:textColor="#ff111111" android:textSize="33sp" android:textStyle="bold" app:layout_constraintTop_toTopOf="@+id/viewBack" app:layout_constraintBottom_toBottomOf="@+id/viewBack" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cl_km" android:layout_width="match_parent" keyCabinet-android/app/src/main/res/layout/offline_activation_activity.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,263 @@ <?xml version="1.0" encoding="utf-8"?> <layout > <data> <import type="com.doumee.lib_coremodel.base.BaseViewModel"/> <import type="android.view.View"/> <variable name="model" type="com.doumee.keyCabinet.ui.face.OfflineActivationVM" /> </data> <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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.face.OfflineActivationActivity"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <!--ç¦»çº¿æ¿æ´»--> <RelativeLayout android:layout_marginTop="@dimen/start_15" android:id="@+id/accredit_offRl" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/accredit_Ll" android:layout_marginRight="49.3dp" android:layout_marginLeft="49.3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:background="@drawable/bg_round_import" android:orientation="vertical"> <TextView android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="@dimen/start_15" android:text="@string/off_technological_process" android:textColor="#999999" /> <RelativeLayout android:layout_marginTop="@dimen/start_15" android:orientation="horizontal" android:layout_marginRight="20dp" android:layout_marginLeft="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/activity_hintOne" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ä¸" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/activity_hintOne" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/off_technological_process_one" android:textColor="#ffffff" android:textSize="18sp" /> </RelativeLayout> <RelativeLayout android:layout_marginTop="@dimen/start_10" android:orientation="horizontal" android:layout_marginRight="20dp" android:layout_marginLeft="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/activity_hintTwo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="äº" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/activity_hintTwo" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/off_technological_process_two" android:textColor="#ffffff" android:textSize="18sp" /> </RelativeLayout> <RelativeLayout android:layout_marginTop="@dimen/start_10" android:orientation="horizontal" android:layout_marginRight="20dp" android:layout_marginLeft="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/activity_hintThree" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ä¸" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/activity_hintThree" android:text="@string/off_technological_process_three" android:textColor="#ffffff" android:textSize="18sp" /> </RelativeLayout> <RelativeLayout android:layout_marginTop="@dimen/start_10" android:orientation="horizontal" android:layout_marginRight="20dp" android:layout_marginLeft="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/activity_hintFour" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="å" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/activity_hintFour" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/off_technological_process_four" android:textColor="#ffffff" android:textSize="18sp" /> </RelativeLayout> <RelativeLayout android:layout_marginTop="@dimen/start_10" android:orientation="horizontal" android:layout_marginRight="20dp" android:layout_marginLeft="20dp" android:layout_marginBottom="@dimen/start_15" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/activity_hintFive" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="äº" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/activity_hintFive" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/off_technological_process_five" android:textColor="#ffffff" android:textSize="18sp" /> </RelativeLayout> </LinearLayout> <TextView android:id="@+id/accredit_setTv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/accredit_Ll" android:layout_centerHorizontal="true" android:layout_marginTop="30dp" android:text="@string/off_local_hardware" android:textColor="#666666" android:textSize="20sp" /> <TextView android:textSize="20sp" android:id="@+id/accredit_deviceTv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/accredit_setTv" android:layout_marginTop="20dp" android:gravity="center" android:textColor="@color/white" /> <View android:id="@+id/aaccredit_view" android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@+id/accredit_deviceTv" android:layout_marginLeft="50dp" android:layout_marginTop="10dp" android:layout_marginRight="50dp" android:background="#222222" /> <TextView android:layout_marginLeft="49.3dp" android:layout_marginRight="49.3dp" android:textSize="@dimen/bottom_font" android:id="@+id/accredit_hintTv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/aaccredit_view" android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/activition_14" android:textColor="#F34B56" /> <Button android:padding="13dp" android:id="@+id/accredit_offBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/accredit_hintTv" android:layout_centerHorizontal="true" android:layout_marginLeft="@dimen/activition_49" android:layout_marginTop="13dp" android:layout_marginRight="@dimen/activition_49" android:background="@mipmap/btn_less_normal" android:text="@string/accredit_off" android:textColor="@color/white" android:textSize="@dimen/activition_18_sp" /> <Button android:padding="13dp" android:id="@+id/btn_down" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/accredit_offBtn" android:layout_centerHorizontal="true" android:layout_marginLeft="@dimen/activition_49" android:layout_marginTop="13dp" android:layout_marginRight="@dimen/activition_49" android:background="@mipmap/btn_less_normal" android:text="ä¸è½½æ¿æ´»æä»¶" android:textColor="@color/white" android:textSize="@dimen/activition_18_sp"/> </RelativeLayout> </ScrollView> <TextView android:id="@+id/tv_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="NOï¼" android:textColor="#ffaaaaaa" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="30dp" android:layout_marginBottom="22dp" /> </androidx.constraintlayout.widget.ConstraintLayout> </layout> keyCabinet-android/app/src/main/res/values/strings.xml
@@ -73,6 +73,13 @@ <string name="on_number">请è¾å ¥16ä½åºåå·</string> <string name="accredit_use">åºç¨æ¿æ´»</string> <string name="filter_vcode">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</string> <string name="accredit_off">ç¦»çº¿æ¿æ´»</string> <string name="off_technological_process">ç¦»çº¿æ¿æ´»æµç¨: </string> <string name="off_technological_process_three">å¨ç¾åº¦æºè½äºå¹³å°è¾å ¥è®¾å¤ç¡¬ä»¶æçº¹å¹¶è·åç¦»çº¿æ¿æ´»æä»¶ï¼License.zipï¼</string> <string name="off_technological_process_four">å°ç¦»çº¿æ¿æ´»æä»¶æ·è´è³å ç½®SD塿 ¹ç®å½ä¸</string> <string name="off_technological_process_five">å¨SDKçé¢ä¸è§¦åç¦»çº¿æ¿æ´»</string> <string name="off_local_hardware">æ¬æºç¡¬ä»¶æçº¹</string> <string name="off_problem">æ¿æ´»éå°é®é¢?</string> <string name="home_face">人è¸å¯¼å ¥</string> <string name="home_faceLibrary">人è¸åºç®¡ç</string> <string name="home_camra">忢æå头</string>