Browse Source

update dialog via eventbus

cs 9 months ago
parent
commit
c48646d680

+ 10 - 0
app/src/main/AndroidManifest.xml

@@ -29,6 +29,16 @@
             android:name=".Scrcpy"
             android:enabled="true"
             android:exported="true"></service>
+        <provider
+            android:name="androidx.core.content.FileProvider"
+            android:authorities="org.las2mile.scrcpy.provider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/myfileprovider">  
+            </meta-data>
+        </provider>
     </application>
 
 </manifest>

+ 52 - 0
app/src/main/java/org/las2mile/okio/OkIoClient.java

@@ -22,6 +22,13 @@ import okio.BufferedSource;
 import okio.Okio;
 import java.util.Set;
 
+import org.las2mile.ui.MessageEvent;
+import org.las2mile.ui.ImgDlMsgEvent;
+import org.las2mile.ui.LogDlMsgEvent;
+import org.las2mile.ui.LogEndStickyMsgEvent;
+import org.las2mile.ui.ImgEndStickyMsgEvent;
+import org.greenrobot.eventbus.EventBus;
+
 public class OkIoClient extends Thread{
     private String serverIP;
     private ExecutorService executor;
@@ -71,6 +78,7 @@ public class OkIoClient extends Thread{
                             if(mOnOkIoMsgListener != null){
                                 mOnOkIoMsgListener.onOkIoMsg(logFileMsgResp);
                             }
+                            notifyProcedureState(downTaskHandler);
                         } else if(packet.cmd == BaseMsg.RESP_LOGZIP_END){
                             LogFileEndMsgResp logFileEndMsgResp = new LogFileEndMsgResp();
                             logFileEndMsgResp.decodeData(packet.mBaseMsgBuffer, (short) packet.mBaseMsgBuffer.size());
@@ -87,6 +95,7 @@ public class OkIoClient extends Thread{
                                 logFileEndMsgResp.allDownloaded =  logFileLostMsg.lostNums> 0 ? false : true;
                                 mOnOkIoMsgListener.onOkIoMsg(logFileEndMsgResp);
                             }
+                            notifyProcedureEnd(downTaskHandler);
                         } else if(packet.cmd == BaseMsg.REQ_HARTBEAT){
                             HartBeatMsgResp msgResp = new HartBeatMsgResp();
                             msgResp.decodeData(packet.mBaseMsgBuffer, (short) packet.mBaseMsgBuffer.size());
@@ -94,6 +103,7 @@ public class OkIoClient extends Thread{
                             if(mOnOkIoMsgListener != null){
                                 mOnOkIoMsgListener.onOkIoMsg(msgResp);
                             }
+                            notifyRemoteVersion(msgResp.remoteInfo);
                         }
                     }
                 }
@@ -179,4 +189,46 @@ public class OkIoClient extends Thread{
     public interface OnOkIoMsgListener{
         void onOkIoMsg(BaseMsg msg);
     }
+
+    private void notifyProcedureState(DownTaskHandler downTaskHandler){
+        if(downTaskHandler.mProcedureType == LogFileMsgReq.PROCEDURE_IMAGE){
+            ImgDlMsgEvent event = (ImgDlMsgEvent)MessageEvent.getMessageEvent(MessageEvent.EVENT_GOT_REMOTE_IMG_PROCEDURE);
+            event.mZipPath = downTaskHandler.mZipPath;
+            event.isDownloaded = downTaskHandler.isDownloaded;
+            event.downloadedpercent = downTaskHandler.downloadedpercent;
+            event.srcfileSize = downTaskHandler.srcfileSize;
+            EventBus.getDefault().post(event);
+        } else{
+            LogDlMsgEvent event = (LogDlMsgEvent)MessageEvent.getMessageEvent(MessageEvent.EVENT_GOT_REMOTE_LOG_PROCEDURE);
+            event.mZipPath = downTaskHandler.mZipPath;
+            event.isDownloaded = downTaskHandler.isDownloaded;
+            event.downloadedpercent = downTaskHandler.downloadedpercent;
+            event.srcfileSize = downTaskHandler.srcfileSize;
+            EventBus.getDefault().post(event);
+        }
+    }
+
+    private void notifyProcedureEnd(DownTaskHandler downTaskHandler){
+        if(downTaskHandler.mProcedureType == LogFileMsgReq.PROCEDURE_IMAGE){
+            ImgEndStickyMsgEvent event = (ImgEndStickyMsgEvent)MessageEvent.getMessageEvent(MessageEvent.EVENT_GOT_REMOTE_IMG_PROCEDURE_END);
+            event.mZipPath = downTaskHandler.mZipPath;
+            event.isDownloaded = downTaskHandler.isDownloaded;
+            event.downloadedpercent = downTaskHandler.downloadedpercent;
+            event.srcfileSize = downTaskHandler.srcfileSize;
+            EventBus.getDefault().postSticky(event);
+        } else{
+            LogEndStickyMsgEvent event = (LogEndStickyMsgEvent)MessageEvent.getMessageEvent(MessageEvent.EVENT_GOT_REMOTE_LOG_PROCEDURE_END);
+            event.mZipPath = downTaskHandler.mZipPath;
+            event.isDownloaded = downTaskHandler.isDownloaded;
+            event.downloadedpercent = downTaskHandler.downloadedpercent;
+            event.srcfileSize = downTaskHandler.srcfileSize;
+            EventBus.getDefault().postSticky(event);
+        }
+    }
+
+    private void notifyRemoteVersion(String remoteVer){
+        MessageEvent event = MessageEvent.getMessageEvent(MessageEvent.EVENT_GOT_REMOTE_VERSION);
+        event.message = remoteVer;
+        EventBus.getDefault().postSticky(event);
+    }
 }

+ 15 - 2
app/src/main/java/org/las2mile/okio/client/DownTaskHandler.java

@@ -17,13 +17,20 @@ import java.io.File;
 
 public class DownTaskHandler {
     public static final String LOCALE_LOG_ROOT_DIR = "/sdcard/phone/";
+    public static final int BEFORE_DOWNLOAD = 1;
+    public static final int DURING_DOWNLOAD = 2;
+    public static final int SUC_DOWNLOAD = 3;
+    public static final int FAIL_DOWNLOAD = 4;
 
     public int taskId = 0;
     int mSum = 0;
     Set<Integer> receivedPkts;
     RandomAccessFile mZipRaFile;
     public String mZipPath;
-    int mProcedureType;
+    public int mProcedureType;//区别下载的是日志还是图片
+    public int isDownloaded = BEFORE_DOWNLOAD;//判断当前下载状态
+    public int downloadedpercent;//已下载百分比
+    public long srcfileSize;//远端设备文件的大小
 
     public DownTaskHandler(){
         mZipRaFile = null;
@@ -50,12 +57,15 @@ public class DownTaskHandler {
     }
 
     public int store(long skip,byte[] content,int contentLen, int pktNums, int pktNo,long fileSize) throws IOException{
+        isDownloaded = DURING_DOWNLOAD; 
+        srcfileSize = fileSize;
         mSum = pktNums;
         //output to local file
         long bytesWritten = restorePartly(fileSize,skip,content,contentLen);
         //record received sub pkts;
         receivedPkts.add(pktNo);
-        return (int)(bytesWritten*1.0f/fileSize*100);
+        downloadedpercent = (int)(bytesWritten*1.0f/fileSize*100);
+        return downloadedpercent;
     }
 
     public BaseMsg checkLost(int taskId) throws IOException {
@@ -81,9 +91,12 @@ public class DownTaskHandler {
 
         //无需补充包时,关闭本地文件
         if(lostsize == 0){
+            isDownloaded = SUC_DOWNLOAD; 
             if(mZipRaFile == null) {
                 mZipRaFile.close();
             }
+        }else{
+            isDownloaded = FAIL_DOWNLOAD; 
         }
 
         lostPkts.clear();

+ 24 - 1
app/src/main/java/org/las2mile/scrcpy/MainActivity.java

@@ -63,6 +63,11 @@ import com.lzf.easyfloat.enums.SidePattern;
 import android.view.Gravity;
 import android.widget.ImageView;
 import org.las2mile.ui.DownloadTaskDialog;
+import org.las2mile.ui.MessageEvent;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+import org.las2mile.okio.message.req.LogFileMsgReq;
 
 
 public class MainActivity extends FragmentActivity implements Scrcpy.ServiceCallbacks, SensorEventListener {
@@ -253,7 +258,7 @@ public class MainActivity extends FragmentActivity implements Scrcpy.ServiceCall
             LogFileMsgResp logFileMsgResp = (LogFileMsgResp)baseMsg;
             String sizeFmt = ZipUtils.formetFileSize(logFileMsgResp.fileSize);
             String percentStr = logFileMsgResp.writenPercent+"%";//Math.round((logFileMsgResp.pktNo+1)*1.0f/logFileMsgResp.pktNums * 100)+"%";
-            String str_save_log_to_local = String.format(getResources().getString(R.string.str_save_log_to_local),logFileMsgResp.zipPath,sizeFmt,percentStr);
+            String str_save_log_to_local = String.format(getResources().getString(R.string.str_save_log_to_local),logFileMsgResp.zipPath,sizeFmt,percentStr,"");
             Message msg = new Message();
             msg.what = GOT_REMOTE_LOG_PROCEDURE;
             msg.obj = str_save_log_to_local;
@@ -273,6 +278,18 @@ public class MainActivity extends FragmentActivity implements Scrcpy.ServiceCall
         
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onMessageEvent(MessageEvent event) {
+        //Log.e("Scrcpy: ","activity DownloadTaskDialog onMessageEvent "+event.what);
+        if(event.what == MessageEvent.EVENT_GOT_REMOTE_VERSION){
+            showFloatViewWhenRender();
+        } else if(event.what == MessageEvent.EVENT_CLICK_IMG_BTN){
+            scrcpy.downloadPics();
+        } else if(event.what == MessageEvent.EVENT_CLICK_LOG_BTN){
+            scrcpy.downloadLog();
+        }
+    }
+
     private void showProgress(){
         Log.e("scrcpy","Asset showProgress");
         mainProgressDialog = new ProgressDialog(context);
@@ -557,6 +574,9 @@ public class MainActivity extends FragmentActivity implements Scrcpy.ServiceCall
     @Override
     protected void onPause() {
         super.onPause();
+
+        EventBus.getDefault().unregister(this);
+
         if (serviceBound) {
             scrcpy.pause();
         }
@@ -565,6 +585,9 @@ public class MainActivity extends FragmentActivity implements Scrcpy.ServiceCall
     @Override
     protected void onResume() {
         super.onResume();
+
+        EventBus.getDefault().register(this);
+
         if (!first_time && !result_of_Rotation) {
             final View decorView = getWindow().getDecorView();
             decorView.setSystemUiVisibility(

+ 110 - 5
app/src/main/java/org/las2mile/ui/DownloadTaskDialog.java

@@ -19,38 +19,120 @@ import java.util.concurrent.TimeUnit;
 import io.reactivex.rxjava3.functions.Consumer;
 import kotlin.Unit;
 import org.las2mile.scrcpy.R;
+import android.widget.TextView;
+import org.las2mile.scrcpy.MainActivity;
+import org.las2mile.ui.MessageEvent;
+import android.util.Log;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import org.las2mile.okio.utils.ZipUtils;
+import org.las2mile.okio.client.DownTaskHandler;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.DocumentsContract;
+import android.content.ComponentName;
+import java.io.File;
+import androidx.core.content.FileProvider;
 
 //https://www.cnblogs.com/dwcg/articles/17933292.html
 public class DownloadTaskDialog {
     private Activity mActivity;
     AlertDialog alertDialog;
+    TextView tv_remote_ver,tv_log_dl,tv_img_dl;
+
     public DownloadTaskDialog(Activity a){
         mActivity = a;
         init();
     }
+
     private void init(){
         AlertDialog.Builder customizeDialog =
                 new AlertDialog.Builder(mActivity);
         final View dialogView = LayoutInflater.from(mActivity)
                 .inflate(R.layout.download_task_dialog,null);
         customizeDialog.setView(dialogView);
+        tv_remote_ver = dialogView.findViewById(R.id.tv_remote_ver);
         RxView.clicks( dialogView.findViewById(R.id.btn_close))
-                .throttleFirst( 2 , TimeUnit.SECONDS )
+                .throttleFirst( 500 , TimeUnit.MILLISECONDS )
                 .subscribe(new Consumer<Unit>() {
                     @Override
                     public void accept(Unit unit) throws Throwable {
-                        Toast.makeText(mActivity, "点击了", Toast.LENGTH_SHORT).show();
-                        EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
+                        //EventBus.getDefault().post(MessageEvent.getMessageEvent(MessageEvent.EVENT_CLICK_IMG_BTN));
                         dismiss();
                     }
                 });
+        tv_log_dl = dialogView.findViewById(R.id.tv_log_dl);
+        RxView.clicks( dialogView.findViewById(R.id.btn_log_dl))
+                .throttleFirst( 500 , TimeUnit.MILLISECONDS )
+                .subscribe(new Consumer<Unit>() {
+                    @Override
+                    public void accept(Unit unit) throws Throwable {
+                        LogEndStickyMsgEvent stickyEvent = EventBus.getDefault().getStickyEvent(LogEndStickyMsgEvent.class);
+                        if(stickyEvent != null) {
+                            EventBus.getDefault().removeStickyEvent(stickyEvent);
+                        }
+                        EventBus.getDefault().post(MessageEvent.getMessageEvent(MessageEvent.EVENT_CLICK_LOG_BTN));
+                    }
+                });
+        tv_img_dl = dialogView.findViewById(R.id.tv_img_dl);
+        RxView.clicks( dialogView.findViewById(R.id.btn_img_dl))
+                .throttleFirst( 500 , TimeUnit.MILLISECONDS )
+                .subscribe(new Consumer<Unit>() {
+                    @Override
+                    public void accept(Unit unit) throws Throwable {
+                        ImgEndStickyMsgEvent stickyEvent = EventBus.getDefault().getStickyEvent(ImgEndStickyMsgEvent.class);
+                        if(stickyEvent != null) {
+                            EventBus.getDefault().removeStickyEvent(stickyEvent);
+                        }
+                        EventBus.getDefault().post(MessageEvent.getMessageEvent(MessageEvent.EVENT_CLICK_IMG_BTN));
+                    }
+                });
+        RxView.clicks( dialogView.findViewById(R.id.btn_show_all))
+                .throttleFirst( 500 , TimeUnit.MILLISECONDS )
+                .subscribe(new Consumer<Unit>() {
+                    @Override
+                    public void accept(Unit unit) throws Throwable {
+                        dismiss();
+                        shareViaWechat();
+                    }
+                });
         alertDialog = customizeDialog.create();
         alertDialog.setCancelable(false);
     }
 
     @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
-    public void onEvent(MessageEvent event){
-        Toast.makeText(mActivity, event.message, Toast.LENGTH_SHORT).show();
+    public void onMessageEvent(MessageEvent event){
+        MessageEvent stickyEvent = EventBus.getDefault().getStickyEvent(MessageEvent.class);
+        //Log.e("Scrcpy: ","DownloadTaskDialog onMessageEvent "+event.what+"  "+(stickyEvent != null ? stickyEvent.what:0));
+        if(event.what == MessageEvent.EVENT_GOT_REMOTE_VERSION){
+            String remoteVer = String.format(mActivity.getResources().getString(R.string.str_remote_dev_info),(String)event.message);
+            tv_remote_ver.setText(remoteVer);
+        }else if(event.what == MessageEvent.EVENT_GOT_REMOTE_LOG_PROCEDURE){
+            LogDlMsgEvent logDlMsgEvent = (LogDlMsgEvent)event;
+            String sizeFmt = ZipUtils.formetFileSize(logDlMsgEvent.srcfileSize);
+            String stateStr = logDlMsgEvent.isDownloaded ==  DownTaskHandler.DURING_DOWNLOAD ? "下载中":"未知";
+            String str_save_log_to_local = String.format(mActivity.getResources().getString(R.string.str_save_log_to_local),logDlMsgEvent.mZipPath,sizeFmt,logDlMsgEvent.downloadedpercent+"%",stateStr);
+            tv_log_dl.setText(str_save_log_to_local);
+        }else if(event.what == MessageEvent.EVENT_GOT_REMOTE_LOG_PROCEDURE_END){
+            LogEndStickyMsgEvent logEndStickyMsgEvent = (LogEndStickyMsgEvent)event;
+            String sizeFmt = ZipUtils.formetFileSize(logEndStickyMsgEvent.srcfileSize);
+            String stateStr = logEndStickyMsgEvent.isDownloaded== DownTaskHandler.SUC_DOWNLOAD? "成功":"失败";
+            String str_save_log_to_local = String.format(mActivity.getResources().getString(R.string.str_save_log_to_local),logEndStickyMsgEvent.mZipPath,sizeFmt,logEndStickyMsgEvent.downloadedpercent+"%",stateStr);
+            tv_log_dl.setText(str_save_log_to_local);
+        }else if(event.what == MessageEvent.EVENT_GOT_REMOTE_IMG_PROCEDURE){
+            ImgDlMsgEvent imgDlMsgEvent = (ImgDlMsgEvent)event;
+            String sizeFmt = ZipUtils.formetFileSize(imgDlMsgEvent.srcfileSize);
+            String stateStr = imgDlMsgEvent.isDownloaded == DownTaskHandler.DURING_DOWNLOAD? "下载中":"未知";
+            String str_save_log_to_local = String.format(mActivity.getResources().getString(R.string.str_save_log_to_local),imgDlMsgEvent.mZipPath,sizeFmt,imgDlMsgEvent.downloadedpercent+"%",stateStr);
+            tv_img_dl.setText(str_save_log_to_local);
+        }else if(event.what == MessageEvent.EVENT_GOT_REMOTE_IMG_PROCEDURE_END){
+            ImgEndStickyMsgEvent imgEndStickyMsgEvent = (ImgEndStickyMsgEvent)event;
+            String sizeFmt = ZipUtils.formetFileSize(imgEndStickyMsgEvent.srcfileSize);
+            String stateStr = imgEndStickyMsgEvent.isDownloaded== DownTaskHandler.SUC_DOWNLOAD ? "成功":"失败";
+            String str_save_log_to_local = String.format(mActivity.getResources().getString(R.string.str_save_log_to_local),imgEndStickyMsgEvent.mZipPath,sizeFmt,imgEndStickyMsgEvent.downloadedpercent+"%",stateStr);
+            tv_img_dl.setText(str_save_log_to_local);
+        }
     }
 
     public void show(){
@@ -62,4 +144,27 @@ public class DownloadTaskDialog {
         EventBus.getDefault().unregister(this);
         alertDialog.dismiss();
     }
+
+    private void shareViaWechat(){
+        Intent shareContent = new Intent();
+        shareContent.setAction(Intent.ACTION_SEND);
+        shareContent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI"));
+        Uri uri = FileProvider.getUriForFile(mActivity,
+                            "org.las2mile.scrcpy.provider",
+                            new File("/sdcard/phone/img_20250110_175038.zip"));
+        shareContent.putExtra(Intent.EXTRA_STREAM,uri);
+        shareContent.setType("*/*");
+        mActivity.startActivity(shareContent);
+    }
+
+    private void showViaFileManager(){
+        String path = "%2fphone%2f";
+        Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary:"+path);
+        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("*/*");
+        intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,uri);
+        mActivity.startActivityForResult(intent,0);
+
+    }
 }

+ 12 - 0
app/src/main/java/org/las2mile/ui/ImgDlMsgEvent.java

@@ -0,0 +1,12 @@
+package org.las2mile.ui;
+
+public class ImgDlMsgEvent extends MessageEvent{
+    public String mZipPath;
+    public int isDownloaded;
+    public int downloadedpercent;
+    public long srcfileSize;
+
+    public ImgDlMsgEvent(int what, Object message) {
+        super(what, message);
+    }
+}

+ 12 - 0
app/src/main/java/org/las2mile/ui/ImgEndStickyMsgEvent.java

@@ -0,0 +1,12 @@
+package org.las2mile.ui;
+
+public class ImgEndStickyMsgEvent extends MessageEvent{
+    public String mZipPath;
+    public int isDownloaded;
+    public int downloadedpercent;
+    public long srcfileSize;
+
+    public ImgEndStickyMsgEvent(int what, Object message) {
+        super(what, message);
+    }
+}

+ 12 - 0
app/src/main/java/org/las2mile/ui/LogDlMsgEvent.java

@@ -0,0 +1,12 @@
+package org.las2mile.ui;
+
+public class LogDlMsgEvent extends MessageEvent{
+    public String mZipPath;
+    public int isDownloaded;
+    public int downloadedpercent;
+    public long srcfileSize;
+
+    public LogDlMsgEvent(int what, Object message) {
+        super(what, message);
+    }
+}

+ 12 - 0
app/src/main/java/org/las2mile/ui/LogEndStickyMsgEvent.java

@@ -0,0 +1,12 @@
+package org.las2mile.ui;
+
+public class LogEndStickyMsgEvent extends MessageEvent{
+    public String mZipPath;
+    public int isDownloaded;
+    public int downloadedpercent;
+    public long srcfileSize;
+
+    public LogEndStickyMsgEvent(int what, Object message) {
+        super(what, message);
+    }
+}

+ 38 - 1
app/src/main/java/org/las2mile/ui/MessageEvent.java

@@ -1,9 +1,46 @@
 package org.las2mile.ui;
 
+import java.util.HashMap;
+import java.util.Map;
+import org.las2mile.scrcpy.MainActivity;
+// import org.las2mile.ui.VersionStickyMsgEvent;
+// import org.las2mile.ui.LogEndStickyMsgEvent;
+// import org.las2mile.ui.ImgEndStickyMsgEvent;
+
 public class MessageEvent {
-    public final String message;
+    public static final int EVENT_GOT_REMOTE_VERSION = 1000;
+    public static final int EVENT_GOT_REMOTE_LOG_PROCEDURE = 1001;
+    public static final int EVENT_GOT_REMOTE_IMG_PROCEDURE = 1002;
+    public static final int EVENT_GOT_REMOTE_LOG_PROCEDURE_END = 1003;
+    public static final int EVENT_GOT_REMOTE_IMG_PROCEDURE_END = 1004;
+    public static final int EVENT_CLICK_LOG_BTN = 1005;
+    public static final int EVENT_CLICK_IMG_BTN = 1006;
+
+    public Object message;
+    public int what;
+
+    static Map<Integer,MessageEvent> mMap;
+    static {
+        mMap = new HashMap<>();
+        mMap.put(EVENT_GOT_REMOTE_VERSION,new VersionStickyMsgEvent(EVENT_GOT_REMOTE_VERSION,"msg3"));
+        mMap.put(EVENT_GOT_REMOTE_LOG_PROCEDURE,new LogDlMsgEvent(EVENT_GOT_REMOTE_LOG_PROCEDURE,"msg3"));
+        mMap.put(EVENT_GOT_REMOTE_IMG_PROCEDURE,new ImgDlMsgEvent(EVENT_GOT_REMOTE_IMG_PROCEDURE,"msg3"));
+        mMap.put(EVENT_GOT_REMOTE_LOG_PROCEDURE_END,new LogEndStickyMsgEvent(EVENT_GOT_REMOTE_LOG_PROCEDURE_END,"msg3"));
+        mMap.put(EVENT_GOT_REMOTE_IMG_PROCEDURE_END,new ImgEndStickyMsgEvent(EVENT_GOT_REMOTE_IMG_PROCEDURE_END,"msg3"));
+        mMap.put(EVENT_CLICK_LOG_BTN,new MessageEvent(EVENT_CLICK_LOG_BTN,"msg3"));
+        mMap.put(EVENT_CLICK_IMG_BTN,new MessageEvent(EVENT_CLICK_IMG_BTN,"msg3"));
+    }
+
+    public static MessageEvent getMessageEvent(int what){
+        return mMap.get(what);
+    }
 
     public MessageEvent(String message) {
         this.message = message;
     }
+
+    public MessageEvent(int what,Object message) {
+        this.message = message;
+        this.what =  what;
+    }
 }

+ 7 - 0
app/src/main/java/org/las2mile/ui/VersionStickyMsgEvent.java

@@ -0,0 +1,7 @@
+package org.las2mile.ui;
+
+public class VersionStickyMsgEvent extends MessageEvent{
+    public VersionStickyMsgEvent(int what, Object message) {
+        super(what, message);
+    }
+}

+ 2 - 0
app/src/main/res/layout/activity_main.xml

@@ -25,6 +25,7 @@
             android:id="@+id/editText_server_host"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:hint="192.168.43.1"
             android:maxLength="15"
             android:ems="7"
             android:inputType="text"
@@ -42,6 +43,7 @@
             android:id="@+id/editText_server_port"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:hint="15555"
             android:maxLength="7"
             android:ems="7"
             android:inputType="text"

+ 19 - 3
app/src/main/res/layout/download_task_dialog.xml

@@ -1,11 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
+    android:layout_height="wrap_content"
     android:orientation="vertical">
     <TextView
+        android:id="@+id/tv_remote_ver"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:textAppearance="@android:style/TextAppearance"
+        android:text="远程设备版本信息:"/>
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="@android:style/TextAppearance"
         android:text="文件下载"/>
     <View
         android:layout_width="match_parent"
@@ -17,11 +24,15 @@
         android:layout_marginStart="5dp"
         android:layout_marginEnd="5dp">
         <TextView
-            android:text="dfasdfasdf"
+            android:id="@+id/tv_log_dl"
+            android:textAppearance="@android:style/TextAppearance"
+            android:layout_gravity="center_vertical"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="1"/>
         <Button
+            android:id="@+id/btn_log_dl"
+            android:layout_gravity="center_vertical"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="下载日志"/>
@@ -38,11 +49,15 @@
         android:layout_marginStart="5dp"
         android:layout_marginEnd="5dp">
         <TextView
-            android:text="dfasdfasdf"
+            android:id="@+id/tv_img_dl"
+            android:textAppearance="@android:style/TextAppearance"
+            android:layout_gravity="center_vertical"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="1"/>
         <Button
+            android:id="@+id/btn_img_dl"
+            android:layout_gravity="center_vertical"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="下载图片"/>
@@ -65,6 +80,7 @@
             android:layout_height="1dp"
             android:layout_weight="1"/>
         <Button
+            android:id="@+id/btn_show_all"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="end"

+ 1 - 0
app/src/main/res/layout/surface.xml

@@ -12,6 +12,7 @@
     android:orientation="vertical">
 
     <LinearLayout
+    android:visibility="gone"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="#ffffff"

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -13,7 +13,7 @@
     <string name="switch1">Nav Bar  (check this if remote device does not have on-screen nav bar)</string>
     <string name="str_remote_dev_info">公司远程设备软件发行时间:%1$s</string>
     <string name="str_remote_log_dlst">状态:%1$s</string>
-    <string name="str_save_log_to_local">文件保存路径:%1$s,大小:%2$s,下载进度%3$s,</string>
+    <string name="str_save_log_to_local">文件保存路径:%1$s,大小:%2$s,下载%3$s,状态:%4$s</string>
 
 
     <string-array name="options_resolution_keys">

+ 4 - 0
app/src/main/res/xml/myfileprovider.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths xmlns:android="http://schemas.android.com/apk/res/android">
+    <external-path name="external_files" path="." />
+</paths>