Переглянути джерело

feat 2.7.8 副屏功能代码

xwh 7 місяців тому
батько
коміт
e13d850cfe

+ 2 - 0
app/build.gradle

@@ -286,6 +286,8 @@ dependencies {
     //GT基础功能(必要的)
 //    implementation 'com.github.1079374315:GSLS_Tool:v1.4.5.2'
 
+    //副屏库
+    implementation project(':secondaryscreen')
 }
 repositories {
     mavenCentral()

+ 17 - 3
app/src/main/java/com/hh/arome/bean/ampe/AmpeAppletRequestBean.java

@@ -280,11 +280,24 @@ public class AmpeAppletRequestBean {
             this.speechQueue = speechQueue;
         }
 
+        /**
+         * 副屏显示图片
+         */
+        private  String secondaryScreenBase64;
+
+        public String getSecondaryScreenBase64() {
+            return secondaryScreenBase64;
+        }
+
+        public void setSecondaryScreenBase64(String secondaryScreenBase64) {
+            this.secondaryScreenBase64 = secondaryScreenBase64;
+        }
 
         @Override
         public String toString() {
             return "ParamsDTO{" +
                     "extInfo=" + extInfo +
+                    ", printList=" + printList +
                     ", infoType='" + infoType + '\'' +
                     ", scope='" + scope + '\'' +
                     ", serviceId='" + serviceId + '\'' +
@@ -293,13 +306,14 @@ public class AmpeAppletRequestBean {
                     ", certNo='" + certNo + '\'' +
                     ", certPhotoBase64Str='" + certPhotoBase64Str + '\'' +
                     ", text='" + text + '\'' +
-                    ", pitch=" + pitch + '\'' +
-                    ", rate=" + rate + '\'' +
+                    ", pitch=" + pitch +
+                    ", rate=" + rate +
                     ", speechQueue=" + speechQueue +
+                    ", secondaryScreenBase64='" + secondaryScreenBase64 + '\'' +
+                    ", intervalTime=" + intervalTime +
                     '}';
         }
 
-
         // 录音
         Integer intervalTime = 1000;
 

+ 19 - 0
app/src/main/java/com/hh/arome/bean/ampe/AmpeAppletResultBean.java

@@ -145,6 +145,14 @@ public class AmpeAppletResultBean {
         Integer microphoneListenerState;
         // -----------麦克风录音---------end
 
+        /**
+         * 副屏展示状态
+         * 0 关闭
+         * 1 显示
+         * -1 暂不支持(可能是单屏设备)
+         */
+        Integer getSecondaryScreenState;
+
         public String getVoiceContent() {
             return voiceContent;
         }
@@ -420,6 +428,13 @@ public class AmpeAppletResultBean {
             this.photoBase64 = photoBase64;
         }
 
+        public Integer getGetSecondaryScreenState() {
+            return getSecondaryScreenState;
+        }
+
+        public void setGetSecondaryScreenState(Integer getSecondaryScreenState) {
+            this.getSecondaryScreenState = getSecondaryScreenState;
+        }
 
         @Override
         public String toString() {
@@ -453,6 +468,10 @@ public class AmpeAppletResultBean {
                     ", androidVersion='" + androidVersion + '\'' +
                     ", deviceIP='" + deviceIP + '\'' +
                     ", deviceDisplay='" + deviceDisplay + '\'' +
+                    ", voiceContent='" + voiceContent + '\'' +
+                    ", microphoneState=" + microphoneState +
+                    ", microphoneListenerState=" + microphoneListenerState +
+                    ", getSecondaryScreenState=" + getSecondaryScreenState +
                     '}';
         }
     }

+ 7 - 0
app/src/main/java/com/hh/arome/common/Constants.java

@@ -105,6 +105,8 @@ public class Constants {
         public static final String LOG_PRINT = "打印---";
         public static final String LOG_SPEECH = "语音---";
 
+        public static final String LOG_SECONDARY_SCREEN_PAGE = "副屏---";
+
 
         // 对应web的日志类型
         public static final String NET_LOGCAT = "Logcat";
@@ -175,7 +177,12 @@ public class Constants {
         // 结束红外感应——持续返回
         public static final String ACTION_STOP_INFRARED_INDUCTION_LISTENER = "stopInfraredInductionListener";
 
+        //开启副屏
+        public static final String ACTION_OPENSECONDARYSCREEN = "openSecondaryScreen";
+
+        public static final String ACTION_CLOSESECONDARYSCREEN = "closeSecondaryScreen";
 
+        public static final String ACTION_SECONDARYSCREENSTATE = "getSecondaryScreenState";
 
         public static final String AMPE_EVENT = "";
 

+ 146 - 1
app/src/main/java/com/hh/arome/ui/MainActivity.java

@@ -125,6 +125,8 @@ import com.hh.arome.mvp.presenter.DeviceConfigPresenter;
 import com.hh.arome.mvp.presenter.HeartbeatPresenter;
 import com.hh.arome.mvp.presenter.LogcatAddPresenter;
 import com.hh.arome.mvp.presenter.ThreeElementsPresenter;
+import com.hh.arome.secondaryscreen.SecondaryScreenPage;
+import com.hh.arome.secondaryscreen.bean.ConfigBean;
 import com.hh.arome.services.keeplive.LocalService;
 import com.hh.arome.services.keeplive.MyJobService;
 import com.hh.arome.services.keeplive.RemoteService;
@@ -2582,7 +2584,15 @@ public class MainActivity extends BaseHHActivity implements DeviceConfigContract
                             ampeAppletRequestBean.getEvent(),
                             ampeAppletRequestBean.getTaskId(),
                             ampeActionMap.get(ACTION_STOP_INFRARED_INDUCTION_LISTENER).getBridgeCallback());
-
+                }else  if(Constants.Ampe.ACTION_OPENSECONDARYSCREEN.equals(ampeAppletRequestBean.getAction())){
+                    //开启副屏
+                    openSecondaryScreen(ampeAppletRequestBean,bridgeCallback);
+                }else  if(Constants.Ampe.ACTION_CLOSESECONDARYSCREEN.equals(ampeAppletRequestBean.getAction())){
+                    //关闭副屏
+                    closeSecondaryScreen(ampeAppletRequestBean,bridgeCallback);
+                }else  if(Constants.Ampe.ACTION_SECONDARYSCREENSTATE.equals(ampeAppletRequestBean.getAction())){
+                    //副屏显示状态
+                    getSecondaryScreen(ampeAppletRequestBean,bridgeCallback);
                 }
 
             }
@@ -2936,6 +2946,141 @@ public class MainActivity extends BaseHHActivity implements DeviceConfigContract
     }
 
 
+    /**
+     *
+     * desc:开启副屏
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */ 
+    private void openSecondaryScreen(AmpeAppletRequestBean ampeAppletRequestBean,AromeServiceInvoker.BridgeCallback bridgeCallback){
+        ConfigBean configBean=new ConfigBean();
+        configBean.setPhotoBase64Str(ampeAppletRequestBean.getParams().getSecondaryScreenBase64()); ;
+        SecondaryScreenPage.open(MainActivity.this,configBean);
+        AmpeAppletResultBean resaultBean = new AmpeAppletResultBean();
+        resaultBean.setAction(Constants.Ampe.ACTION_OPENSECONDARYSCREEN);
+        resaultBean.setEvent(ampeAppletRequestBean.getEvent());
+        resaultBean.setTaskId(ampeAppletRequestBean.getTaskId());
+        resaultBean.setSuccess(true);
+        resaultBean.setMessage("成功");
+        AmpeAppletResultBean.Data dataBean = new AmpeAppletResultBean.Data();
+        resaultBean.setData(dataBean);
+        try {
+            JsonObject jsonObject = gson.toJsonTree(resaultBean).getAsJsonObject();
+            if (bridgeCallback != null) {
+                bridgeCallback.callback(jsonObject.toString());
+            }
+            sendLogs(Constants.Ampe.ACTION_OPENSECONDARYSCREEN,jsonObject);
+        }catch (Throwable t) {
+            AppLogUtils.e("onCalled--t" + t);
+        }
+
+    }
+
+    /**
+     *
+     * desc:关闭副屏
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */ 
+    private void closeSecondaryScreen(AmpeAppletRequestBean ampeAppletRequestBean,AromeServiceInvoker.BridgeCallback bridgeCallback){
+        SecondaryScreenPage.close();
+        AmpeAppletResultBean resaultBean = new AmpeAppletResultBean();
+        resaultBean.setAction(Constants.Ampe.ACTION_CLOSESECONDARYSCREEN);
+        resaultBean.setEvent(ampeAppletRequestBean.getEvent());
+        resaultBean.setTaskId(ampeAppletRequestBean.getTaskId());
+        resaultBean.setSuccess(true);
+        resaultBean.setMessage("成功");
+        AmpeAppletResultBean.Data dataBean = new AmpeAppletResultBean.Data();
+        resaultBean.setData(dataBean);
+        try {
+            JsonObject jsonObject = gson.toJsonTree(resaultBean).getAsJsonObject();
+            if (bridgeCallback != null) {
+                bridgeCallback.callback(jsonObject.toString());
+            }
+            sendLogs(Constants.Ampe.ACTION_CLOSESECONDARYSCREEN,jsonObject);
+        }catch (Throwable t) {
+            AppLogUtils.e("onCalled--t" + t);
+        }
+
+    }
+    
+    /**
+     *
+     * desc:获取副屏状态 1开启  0关闭   -1不支持双屏
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */ 
+    private void getSecondaryScreen(AmpeAppletRequestBean ampeAppletRequestBean,AromeServiceInvoker.BridgeCallback bridgeCallback){
+        int state=SecondaryScreenPage.getSecondaryScreenState(MainActivity.this);
+        AmpeAppletResultBean resaultBean = new AmpeAppletResultBean();
+        resaultBean.setAction(Constants.Ampe.ACTION_SECONDARYSCREENSTATE);
+        resaultBean.setEvent(ampeAppletRequestBean.getEvent());
+        resaultBean.setTaskId(ampeAppletRequestBean.getTaskId());
+        resaultBean.setSuccess(true);
+        resaultBean.setMessage("成功");
+        AmpeAppletResultBean.Data dataBean = new AmpeAppletResultBean.Data();
+        dataBean.setGetSecondaryScreenState(state);
+        resaultBean.setData(dataBean);
+        try {
+            JsonObject jsonObject = gson.toJsonTree(resaultBean).getAsJsonObject();
+            if (bridgeCallback != null) {
+                bridgeCallback.callback(jsonObject.toString());
+            }
+            sendLogs(Constants.Ampe.ACTION_SECONDARYSCREENSTATE,jsonObject);
+        }catch (Throwable t) {
+            AppLogUtils.e("onCalled--t" + t);
+        }
+    }
+
+
+    /**
+     *
+     * desc:发送日志
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */ 
+    private void sendLogs(String action,JsonObject jsonObject) {
+        try {
+            // 日志开始----------------begin
+            // 日志行数——对应web端"日志标签"
+            String logLine = (new Throwable().getStackTrace())[0].toString();
+            // 日志节点
+            String logNode = action + "--回传处理结果给小程序--";
+            // 日志内容
+            StringBuilder logContentSb = new StringBuilder();
+            logContentSb.append(logNode).append(WARP)
+                    .append("jsonObject = ").append(jsonObject);
+
+            // 开始保存本地日志
+            AppLogUtils.saveLog(LogType.Logcat, new StringBuilder()
+                    .append(LINE)
+                    .append(logLine).append(WARP)
+                    .append(NODE)
+                    .append(logContentSb)
+                    .toString()
+            );
+
+            // 开始网络在线日志
+            LogcatAddRequestBean logBean = new LogcatAddRequestBean();
+            logBean.setLogType(NET_LOGCAT);
+            // 对应web端"日志标签"
+            logBean.setLogTag(logLine + WARP + LOG_NODE_APPLET + LOG_NODE_MICROPHONE);
+            logBean.setLogContent(logContentSb.toString());
+            requestLogcatAdd(logBean);
+            // 日志开始----------------end
+
+            // 打印编译器输出日志
+            AppLogUtils.e(logContentSb);
+
+        } catch (Throwable t) {
+            AppLogUtils.e("onCalled--t" + t);
+        }
+    }
+
     /**
      * 单次操作关闭给小程序
      *

+ 1 - 0
secondaryscreen/.gitignore

@@ -0,0 +1 @@
+/build

+ 28 - 0
secondaryscreen/build.gradle

@@ -0,0 +1,28 @@
+
+plugins {
+    id 'com.android.library'
+    id 'org.jetbrains.kotlin.android'
+    id 'kotlin-android-extensions'
+}
+android {
+    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
+    buildToolsVersion rootProject.ext.android["buildToolsVersion"]
+
+    defaultConfig {
+
+        minSdkVersion 19
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
+
+    }
+
+}
+
+dependencies {
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
+    implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'//1.1.0
+    implementation 'com.google.android.material:material:1.1.0'
+    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+    implementation 'com.github.bumptech.glide:glide:4.13.2'
+}

+ 21 - 0
secondaryscreen/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 7 - 0
secondaryscreen/src/main/AndroidManifest.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.hh.arome.secondaryscreen">
+
+
+</manifest>

+ 163 - 0
secondaryscreen/src/main/java/com/hh/arome/secondaryscreen/SecondaryScreenPage.java

@@ -0,0 +1,163 @@
+package com.hh.arome.secondaryscreen;
+
+
+import android.annotation.SuppressLint;
+import android.app.Presentation;
+import android.content.Context;
+import android.hardware.display.DisplayManager;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Display;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.Toast;
+
+import com.bumptech.glide.Glide;
+import com.hh.arome.secondaryscreen.bean.ConfigBean;
+
+import java.util.Base64;
+
+
+/**
+ * @Description: 副屏页面
+ * @author: Xia WeiHao
+ * @date: 2024/6/19
+ */
+public class SecondaryScreenPage extends Presentation implements View.OnClickListener{
+
+    private ConfigBean mConfig;
+    private static SecondaryScreenPage screenPage=null;
+
+
+    public SecondaryScreenPage(Context context, Display display, ConfigBean config){
+        super(context,display);
+        mConfig=config;
+    }
+
+    @SuppressLint({"MissingInflatedId", "LongLogTag"})
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.layout_secondary_screen_page);
+        ImageView imageView=findViewById(R.id.iv_bg);
+        Glide.with(getContext())
+                .load(mConfig.getPhotoBase64Str())
+                //.apply(mRequestOptions)
+                .centerCrop()
+                .into(imageView);
+
+
+
+    }
+
+    public void onClick(View v) {
+        int id = v.getId();
+
+    }
+
+/*    public void showBg(){
+        Glide.with(imageView)
+                .asBitmap()
+                .load("http://gips2.baidu.com/it/u=195724436,3554684702&fm=3028&app=3028&f=JPEG&fmt=auto?w=1280&h=960")
+                .centerCrop()
+                .into(imageView);
+        ll.setVisibility(View.GONE);
+    }*/
+
+
+    
+    /**
+     *
+     * desc:获取当前副屏是否展示(关闭时双屏同显,显示时双屏异显)
+     * @author xia weihao
+     * @date 2024/6/20
+     * 0 关闭
+     * 1 显示
+     * -1 暂不支持(可能是单屏设备)
+     */ 
+    public static int getSecondaryScreenState(Context context) {
+        if (isSupportedDifferentDisplay(context)) {
+            if (screenPage != null && screenPage.isShowing()) {
+                return 1;
+            } else {
+                return 0;
+            }
+        }
+
+        return -1;
+    }
+
+    /**
+     *
+     * desc:是否支持双屏显示
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */
+   private static boolean isSupportedDifferentDisplay(Context context) {
+        DisplayManager mDisplayManager = (DisplayManager) context.
+                getApplicationContext().getSystemService(Context.DISPLAY_SERVICE);
+        Display[] displays = mDisplayManager.getDisplays();
+
+        if(displays.length > 1) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     *
+     * desc:开启副屏
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */ 
+    public static void open(Context context,ConfigBean config) {
+        if (screenPage == null) {
+            synchronized (SecondaryScreenPage.class) {
+                if(screenPage==null) {
+                    create(context,config);
+                }
+            }
+        }else if(!screenPage.isShowing()){
+            screenPage.show();
+        }
+    }
+    
+    /**
+     *
+     * desc:创建并开启副屏
+     * @author xia weihao
+     * @date 2024/6/20
+     *
+     */ 
+    private static void create(Context context,ConfigBean config){
+        DisplayManager mDisplayManager = (DisplayManager) context
+                .getApplicationContext()
+                .getSystemService(Context.DISPLAY_SERVICE);
+        Display[] displays = mDisplayManager.getDisplays();
+        if (displays.length > 1) {
+            Display display = displays[1];
+            screenPage = new SecondaryScreenPage(context, display, config);
+            screenPage.show();
+        }
+    }
+
+    /**
+     *
+     * desc:关闭副屏
+     * @author chenjunxu
+     * @date 2024/6/20
+     *
+     */ 
+    public static void close(){
+        if(screenPage!=null){
+            screenPage.dismiss();
+            screenPage=null;
+        }
+
+    }
+
+}

+ 19 - 0
secondaryscreen/src/main/java/com/hh/arome/secondaryscreen/bean/ConfigBean.java

@@ -0,0 +1,19 @@
+package com.hh.arome.secondaryscreen.bean;
+
+/**
+ * @Description:副屏配置实体类
+ * @author: Xia WeiHao
+ * @date: 2024/6/20
+ */
+public class ConfigBean {
+
+    private String photoBase64Str;
+
+    public String getPhotoBase64Str() {
+        return photoBase64Str;
+    }
+
+    public void setPhotoBase64Str(String photoBase64Str) {
+        this.photoBase64Str = photoBase64Str;
+    }
+}

+ 170 - 0
secondaryscreen/src/main/res/drawable/ic_launcher_background.xml

@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+    <path
+        android:fillColor="#3DDC84"
+        android:pathData="M0,0h108v108h-108z" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M9,0L9,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,0L19,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M29,0L29,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M39,0L39,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M49,0L49,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M59,0L59,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M69,0L69,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M79,0L79,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M89,0L89,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M99,0L99,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,9L108,9"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,19L108,19"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,29L108,29"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,39L108,39"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,49L108,49"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,59L108,59"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,69L108,69"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,79L108,79"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,89L108,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,99L108,99"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,29L89,29"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,39L89,39"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,49L89,49"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,59L89,59"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,69L89,69"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,79L89,79"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M29,19L29,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M39,19L39,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M49,19L49,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M59,19L59,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M69,19L69,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M79,19L79,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+</vector>

+ 17 - 0
secondaryscreen/src/main/res/layout/layout_secondary_screen_page.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout 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:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:id="@+id/iv_bg"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+
+
+
+</FrameLayout>

+ 10 - 0
secondaryscreen/src/main/res/values/colors.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="purple_200">#FFBB86FC</color>
+    <color name="purple_500">#FF6200EE</color>
+    <color name="purple_700">#FF3700B3</color>
+    <color name="teal_200">#FF03DAC5</color>
+    <color name="teal_700">#FF018786</color>
+    <color name="black">#FF000000</color>
+    <color name="white">#FFFFFFFF</color>
+</resources>

+ 3 - 0
secondaryscreen/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">secondaryScreen</string>
+</resources>

+ 12 - 0
secondaryscreen/src/main/res/values/themes.xml

@@ -0,0 +1,12 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
+        <!-- Customize your theme here. -->
+        <item name="colorPrimary">@color/purple_500</item>
+        <item name="colorPrimaryDark">@color/purple_700</item>
+        <item name="colorAccent">@color/white</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowBackground">@android:color/white</item>
+    </style>
+
+</resources>

+ 1 - 0
settings.gradle

@@ -4,3 +4,4 @@ include ':MultiReaderLib',':idCard',":recorderlib"
 include ':app', ':lib_base','SeriaApp',':lib_print'
 rootProject.name = "HHContainer"
 include ':EnterIDNumber'
+include ':secondaryscreen'