Procházet zdrojové kódy

author:wcq
update:处理异常处理页面无法使用的页面
增加轮播图功能

XFIOOLS\xfIools před 2 roky
rodič
revize
6f742e5a4e

+ 1 - 0
README.MD

@@ -0,0 +1 @@
+ich-android

+ 11 - 0
app/build.gradle

@@ -84,6 +84,17 @@ dependencies {
     implementation 'com.github.xuexiangjys.XUpdateAPI:xupdate-easy:1.0.0'
     implementation 'com.zhy:okhttputils:2.6.2'
 
+    // implementation "com.iwdael:carouselbanner:$version"
+    implementation 'com.hacknife:carouselbanner:1.1.2'
+    //compile 'com.hacknife:carouselbanner:version'
+
+    compile 'com.github.bumptech.glide:glide:4.12.0'
+    //annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+    //noinspection GradleCompatible,GradleCompatible
+    //compile 'com.android.support:support-v4:28.0.0'
+
+
+
     testImplementation 'junit:junit:4.12'
     implementation files('libs/moterndevicecontroller.aar')
 }

+ 7 - 4
app/src/main/AndroidManifest.xml

@@ -1,9 +1,9 @@
 <?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.emato.ich"
-    android:sharedUserId="android.uid.system" >
-
+    package="com.emato.ich" android:sharedUserId="android.uid.system"
+    >
+<!--   -->
 <!--    android:sharedUserId="android.uid.system"-->
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <!-- networkSecurityConfig: 这里配置为强制使用HTTP请求 -->
@@ -34,7 +34,10 @@
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        android:theme="@style/Theme.Ichandroid">
+        android:theme="@style/Theme.Ichandroid"
+        android:usesCleartextTraffic="true"
+        tools:targetApi="m"
+        >
         <activity
             android:name=".MainActivity"
             android:label="@string/app_name"

+ 13 - 0
app/src/main/java/com/emato/ich/ImageFactory.java

@@ -0,0 +1,13 @@
+package com.emato.ich;
+
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.hacknife.carouselbanner.interfaces.CarouselImageFactory;
+
+public class ImageFactory implements CarouselImageFactory {
+    @Override
+    public void onLoadFactory(String url, ImageView view) {
+        Glide.with(view).load(url).into(view);
+    }
+}

+ 32 - 0
app/src/main/java/com/emato/ich/MainActivity.java

@@ -43,6 +43,11 @@ import androidx.navigation.ui.AppBarConfiguration;
 import androidx.navigation.ui.NavigationUI;
 
 import com.emato.ich.databinding.ActivityMainBinding;
+import com.hacknife.carouselbanner.Banner;
+import com.hacknife.carouselbanner.CarouselBanner;
+import com.hacknife.carouselbanner.CoolCarouselBanner;
+import com.hacknife.carouselbanner.interfaces.OnCarouselItemChangeListener;
+import com.hacknife.carouselbanner.interfaces.OnCarouselItemClickListener;
 import com.xuexiang.xupdate.XUpdate;
 import com.xuexiang.xupdate.aria.AriaDownloadServiceProxyImpl;
 import com.xuexiang.xupdate.aria.AriaDownloader;
@@ -54,6 +59,7 @@ import com.xuexiang.xupdate.proxy.impl.DefaultUpdateParser;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.WindowManager;
+import android.widget.Toast;
 
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 import org.jetbrains.annotations.NotNull;
@@ -62,8 +68,10 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
@@ -82,6 +90,8 @@ public class MainActivity extends AppCompatActivity  {
 
     private static final String TAG = MainActivity.class.getName();
 
+    CarouselBanner banner;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -116,6 +126,28 @@ public class MainActivity extends AppCompatActivity  {
 
         // TODO 监听shell命令脚本
         MessageHandler.executeShell(ichSubscribeClient, ichPublishClient);
+        List<String> list = new ArrayList<>();
+        Banner.init(new ImageFactory());
+        list.add("http://183.3.221.143/group1/M00/00/09/twPdj2MW7GaAKBJZAAFsNNDnV10679.jpg");
+//        list.add("http://183.3.221.143/group1/M00/00/09/twPdj2MW7GaAbB0vAAqanlvlafA572.jpg");
+
+        banner = findViewById(R.id.banner);
+
+        banner.setOnCarouselItemChangeListener(new OnCarouselItemChangeListener() {
+            @Override
+            public void onItemChange(int position) {
+//                Toast.makeText(MainActivity.this, String.valueOf(position), Toast.LENGTH_LONG).show();
+            }
+        });
+        banner.setOnCarouselItemClickListener(new OnCarouselItemClickListener() {
+            @Override
+            public void onItemClick(int position, String url) {
+                // 点击事件不进行处理
+                // Toast.makeText(MainActivity.this, url, Toast.LENGTH_LONG).show();
+            }
+        });
+        banner.initBanner(list);
+
     }
 
     private void getSystemConfig(){

+ 3 - 3
app/src/main/java/com/emato/ich/fragment/ChooseCabinetFragment.java

@@ -227,7 +227,7 @@ public class ChooseCabinetFragment extends Fragment {
 
             // 不为空说明是异常页跳过来的, 更新柜子类型, 如果有订单号就更新预下单, 无则走预下单逻辑
             if (null != exceptionBundle) {
-                Bundle inputInfoBundle = activity.getBundleMap().get(InputInfoFragment.class.getName());
+                Bundle inputInfoBundle = activity.getBundleMap().get(InputInfoKeyBoardFragment.class.getName());
                 ObjectMapper objectMapper = JacksonUtils.objectmapper;
                 if (inputInfoBundle == null) {
                     ToastUtils.make(getContext(), "您还没有投递!");
@@ -276,7 +276,7 @@ public class ChooseCabinetFragment extends Fragment {
                                                     // 跳转到确认投递
                                                     try {
                                                         MainActivity activity = (MainActivity) getActivity();
-                                                        activity.getBundleMap().put(InputInfoFragment.class.getName(), bundle);
+                                                        activity.getBundleMap().put(InputInfoKeyBoardFragment.class.getName(), bundle);
                                                         activity.getBundleMap().remove(ExceptionFragment.class.getName());
                                                         if (null != timer) {
                                                             timer.cancel();
@@ -314,7 +314,7 @@ public class ChooseCabinetFragment extends Fragment {
                     timer.cancel();
                 }
                 activity.getBundleMap().put(ChooseCabinetFragment.class.getName(), bundle);
-                NavUtils.navigate(this, R.id.action_chooseCabinetFragment_to_inputInfoFragment, bundle);
+                NavUtils.navigate(this, R.id.action_chooseCabinetFragment_to_InputInfoKeyBoardFragment, bundle);
             }
 
         } catch (RuntimeException | JsonProcessingException e) {

+ 1 - 1
app/src/main/java/com/emato/ich/fragment/ExceptionFragment.java

@@ -85,7 +85,7 @@ public class ExceptionFragment extends Fragment {
         MainActivity activity = null;
         try {
             activity = (MainActivity) getActivity();
-            arguments = activity.getBundleMap().get(InputInfoFragment.class.getName());
+            arguments = activity.getBundleMap().get(InputInfoKeyBoardFragment.class.getName());
         } catch (RuntimeException e) {
             Log.e(TAG, "onViewCreated: InputInfoFragment向ExceptionFragment页面传值错误! ", e);
             LoggingUtils.sendErrorLog("业务异常: InputInfoFragment向ExceptionFragment页面传值错误! ", e);

+ 3 - 3
app/src/main/java/com/emato/ich/fragment/InputInfoFragment.java

@@ -223,7 +223,7 @@ public class InputInfoFragment extends Fragment {
                                             // 跳转到确认投递
                                             try {
                                                 MainActivity activity = (MainActivity) getActivity();
-                                                activity.getBundleMap().put(InputInfoFragment.class.getName(), bundle);
+                                                activity.getBundleMap().put(InputInfoKeyBoardFragment.class.getName(), bundle);
                                             } catch (RuntimeException e) {
                                                 Log.e(TAG, "onResponse: InputInfoFragment页面获取SendInfoConfirmFragment传值错误! ", e);
                                                 LoggingUtils.sendErrorLog("业务异常: InputInfoFragment页面获取SendInfoConfirmFragment传值错误! ", e);
@@ -231,7 +231,7 @@ public class InputInfoFragment extends Fragment {
                                             if (null != timer) {
                                                 timer.cancel();
                                             }
-                                            NavUtils.navigate(InputInfoFragment.this, R.id.action_inputInfoFragment_to_sendInfoConfirmFragment);
+                                            NavUtils.navigate(InputInfoFragment.this, R.id.action_InputInfoKeyBoardFragment_to_sendInfoConfirmFragment);
                                         }
                                         Log.i(TAG, "onResponse: ICSP返回码: " + responseData.getCode() + ", 返回信息: " + responseData.getMsg());
                                         ToastUtils.make(getContext(), responseData.getMsg());
@@ -431,7 +431,7 @@ public class InputInfoFragment extends Fragment {
             if (null != timer) {
                 timer.cancel();
             }
-            NavUtils.navigate(this, R.id.action_inputInfoFragment_to_chooseCabinetFragment);
+            NavUtils.navigate(this, R.id.action_InputInfoKeyBoardFragment_to_chooseCabinetFragment);
         });
 
         // 默认选中运单号输入框

+ 2 - 2
app/src/main/java/com/emato/ich/fragment/InputInfoKeyBoardFragment.java

@@ -231,7 +231,7 @@ public class InputInfoKeyBoardFragment extends Fragment {
                                             if (null != timer) {
                                                 timer.cancel();
                                             }
-                                            NavUtils.navigate(InputInfoKeyBoardFragment.this, R.id.action_inputInfoFragment_to_sendInfoConfirmFragment);
+                                            NavUtils.navigate(InputInfoKeyBoardFragment.this, R.id.action_InputInfoKeyBoardFragment_to_sendInfoConfirmFragment);
                                         }
                                         Log.i(TAG, "onResponse: ICSP返回码: " + responseData.getCode() + ", 返回信息: " + responseData.getMsg());
                                         ToastUtils.make(getContext(), responseData.getMsg());
@@ -986,7 +986,7 @@ public class InputInfoKeyBoardFragment extends Fragment {
             if (null != timer) {
                 timer.cancel();
             }
-            NavUtils.navigate(this, R.id.action_inputInfoFragment_to_chooseCabinetFragment);
+            NavUtils.navigate(this, R.id.action_InputInfoKeyBoardFragment_to_chooseCabinetFragment);
         });
 
         // 默认选中运单号输入框

+ 3 - 2
app/src/main/java/com/emato/ich/local/LocalStorage.java

@@ -4,6 +4,7 @@ import android.os.Bundle;
 
 import com.emato.ich.MainActivity;
 import com.emato.ich.fragment.InputInfoFragment;
+import com.emato.ich.fragment.InputInfoKeyBoardFragment;
 import com.emato.ich.utils.StringUtils;
 
 import java.util.Map;
@@ -47,12 +48,12 @@ public class LocalStorage {
         Map<String, Bundle> bundleMap = activity.getBundleMap();
         Bundle inputInfo = null;
         if (isException) {
-            inputInfo = bundleMap.get(InputInfoFragment.class.getName());
+            inputInfo = bundleMap.get(InputInfoKeyBoardFragment.class.getName());
         }
         if (activity != null && bundleMap != null && bundleMap.size() > 0) {
             bundleMap.clear();
             if (null != inputInfo) {
-                bundleMap.put(InputInfoFragment.class.getName(), inputInfo);
+                bundleMap.put(InputInfoKeyBoardFragment.class.getName(), inputInfo);
             }
         }
     }

+ 2 - 2
app/src/main/java/com/emato/ich/utils/TimeOutUtils.java

@@ -81,9 +81,9 @@ public class TimeOutUtils {
         } else if (fragment instanceof ExceptionFragment) {
             return R.id.actionExceptionFragment_to_mainFragment;
         } else if (fragment instanceof InputInfoFragment) {
-            return R.id.action_inputInfoFragment_to_mainFragment;
+            return R.id.action_InputInfoKeyBoardFragment_to_mainFragment;
         } else if (fragment instanceof InputInfoKeyBoardFragment) {
-            return R.id.action_inputInfoFragment_to_mainFragment;
+            return R.id.action_InputInfoKeyBoardFragment_to_mainFragment;
         }else if (fragment instanceof SendFragment) {
             return R.id.action_sendFragment_to_mainFragment;
         } else if (fragment instanceof SendKeyBoardFragment) {

+ 24 - 10
app/src/main/res/layout/content_main.xml

@@ -16,22 +16,36 @@
         android:layout_height="0dp"
         app:defaultNavHost="true"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_bias="0.0"
         app:navGraph="@navigation/nav_graph" />
 
-    <ImageView
-        android:id="@+id/imageView"
+<!--    <ImageView-->
+<!--        android:id="@+id/imageView"-->
+<!--        android:layout_width="344dp"-->
+<!--        android:layout_height="290dp"-->
+<!--        android:scaleType="fitXY"-->
+<!--        app:layout_constraintEnd_toEndOf="parent"-->
+<!--        app:layout_constraintHorizontal_bias="0.0"-->
+<!--        app:layout_constraintStart_toStartOf="parent"-->
+<!--        app:srcCompat="@drawable/top_image2"-->
+<!--        tools:ignore="MissingConstraints"-->
+<!--        tools:layout_editor_absoluteY="0dp" />-->
+
+    <com.hacknife.carouselbanner.CarouselBanner
+        android:id="@+id/banner"
         android:layout_width="344dp"
         android:layout_height="290dp"
-        android:scaleType="fitXY"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.0"
-        app:layout_constraintStart_toStartOf="parent"
-        app:srcCompat="@drawable/top_image2"
-        tools:ignore="MissingConstraints"
-        tools:layout_editor_absoluteY="0dp" />
+        app:autoPlaying="true"
+        app:indicatorGravity="left"
+        app:indicatorSelectedSrc="#d6c2c2"
+        app:indicatorUnselectedSrc="#df0000"
+        app:orientation="horizontal"
+        app:speedPerPixelMillisecond="0.8"
+        tools:layout_editor_absoluteY="0dp"
+        tools:ignore="MissingConstraints" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 6 - 6
app/src/main/res/navigation/nav_graph.xml

@@ -37,19 +37,19 @@
 
     <!--  输入投递信息  -->
     <fragment
-        android:id="@+id/InputInfoFragment"
+        android:id="@+id/InputInfoKeyBoardFragment"
         android:name="com.emato.ich.fragment.InputInfoKeyBoardFragment"
         android:label=""
         tools:layout="@layout/fragment_input_key_board">
 
         <action
-            android:id="@+id/action_inputInfoFragment_to_sendInfoConfirmFragment"
+            android:id="@+id/action_InputInfoKeyBoardFragment_to_sendInfoConfirmFragment"
             app:destination="@id/SendInfoConfirmFragment" />
         <action
-            android:id="@+id/action_inputInfoFragment_to_chooseCabinetFragment"
+            android:id="@+id/action_InputInfoKeyBoardFragment_to_chooseCabinetFragment"
             app:destination="@id/ChooseCabinetFragment"/>
         <action
-            android:id="@+id/action_inputInfoFragment_to_mainFragment"
+            android:id="@+id/action_InputInfoKeyBoardFragment_to_mainFragment"
             app:destination="@id/MainFragment"/>
     </fragment>
 
@@ -116,8 +116,8 @@
         tools:layout="@layout/fragment_choose_cabinet">
 
         <action
-            android:id="@+id/action_chooseCabinetFragment_to_inputInfoFragment"
-            app:destination="@id/InputInfoFragment"/>
+            android:id="@+id/action_chooseCabinetFragment_to_InputInfoKeyBoardFragment"
+            app:destination="@id/InputInfoKeyBoardFragment"/>
         <action
             android:id="@+id/action_chooseCabinetFragment_to_sendInfoConfirmFragment"
             app:destination="@id/SendInfoConfirmFragment"/>

+ 15 - 1
build.gradle

@@ -4,6 +4,13 @@ buildscript {
         google()
         mavenCentral()
         maven { url "https://jitpack.io" }
+//        maven {
+//            url 'http://maven.aliyun.com/nexus/content/groups/public/'
+//        }
+//        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+//        maven { url 'https://maven.aliyun.com/repository/google' }
+//        maven {url 'https://dl.bintray.com/jetbrains/anko'}
+        jcenter()
     }
     dependencies {
         classpath "com.android.tools.build:gradle:4.2.1"
@@ -18,7 +25,14 @@ allprojects {
         google()
         mavenCentral()
         jcenter() // Warning: this repository is going to shut down soon
-        maven { url "https://jitpack.io" }
+//        maven {
+//            url 'http://maven.aliyun.com/nexus/content/groups/public/'
+//        }
+//        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+//        maven { url 'https://maven.aliyun.com/repository/google' }
+//        maven {url 'https://dl.bintray.com/jetbrains/anko'}
+//        maven {url "https://maven.google.com"}
+        maven { url 'https://www.jitpack.io' }
     }
 }
 

+ 2 - 1
gradle.properties

@@ -20,4 +20,5 @@ android.useAndroidX=true
 KEY_PATH = /data/ich/sign_file/ematou_key.jks
 KEY_PASS = ematoupsd
 ALIAS_NAME = ematou
-ALIAS_PASS = ematoupsd
+ALIAS_PASS = ematoupsd
+android.enableJetifier=true