diff --git a/.idea/modules.xml b/.idea/modules.xml index 58fc8a76..f95bb89a 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,8 @@ - + + diff --git a/app/build.gradle b/app/build.gradle index b44a52c3..b84b0168 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 17 targetSdkVersion 23 - versionCode 215 - versionName "3.0.0 Alpha16" + versionCode 217 + versionName "3.0.0 Alpha17" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true ndk { diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java index 253671c0..ba93485a 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java @@ -32,6 +32,7 @@ import com.stardust.scriptdroid.R; import com.stardust.autojs.core.image.ScreenCaptureRequestActivity; import com.stardust.autojs.core.util.Shell; import com.stardust.autojs.core.console.StardustConsole; +import com.stardust.scriptdroid.sublime.SublimePluginService; import com.stardust.util.ScreenMetrics; import com.stardust.util.Supplier; import com.stardust.util.UiHandler; @@ -76,7 +77,14 @@ public class AutoJs { mContext = context; mUiHandler = new UiHandler(context); mAppUtils = new AppUtils(context); - mGlobalConsole = new GlobalStardustConsole(mUiHandler); + mGlobalConsole = new GlobalStardustConsole(mUiHandler){ + @Override + public String println(int level, CharSequence charSequence) { + String log = super.println(level, charSequence); + SublimePluginService.log(log); + return log; + } + }; mNotificationObserver = new NotificationListener.Observer(context); mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager()); mScriptEngineService = buildScriptEngineService(); diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginClient.java b/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginClient.java index 96148005..ec34fed0 100644 --- a/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginClient.java +++ b/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginClient.java @@ -1,14 +1,11 @@ package com.stardust.scriptdroid.sublime; -import android.graphics.BitmapFactory; +import android.os.Build; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import com.stardust.enhancedfloaty.FloatyWindow; -import com.stardust.enhancedfloaty.ResizableFloaty; -import org.greenrobot.eventbus.EventBus; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; @@ -72,15 +69,29 @@ public class SublimePluginClient { mSocket.setTcpNoDelay(true); mOutputStream = mSocket.getOutputStream(); s.onComplete(); - readLoop(mSocket.getInputStream()); + sendDeviceName(); } catch (IOException e) { s.onError(e); - } finally { + tryClose(); + return; + } + try { + readLoop(mSocket.getInputStream()); + } catch (IOException e) { + e.printStackTrace(); + }finally { tryClose(); } } + private void sendDeviceName() { + JsonObject object = new JsonObject(); + object.addProperty("type", "device_name"); + object.addProperty("device_name", Build.MODEL); + send(object).subscribe(); + } + public PublishSubject getConnectionState() { return mConnectionState; } @@ -97,18 +108,15 @@ public class SublimePluginClient { } } - public Observable send(final JsonObject object) { + public Observable send(final JsonObject object) { if (mSocket == null) { throw new IllegalStateException("Socket is not listening "); } - return Observable.fromCallable(new Callable() { - @Override - public Void call() throws Exception { - mOutputStream.write(object.toString().getBytes()); - mOutputStream.write("\n".getBytes()); - mOutputStream.flush(); - return null; - } + return Observable.fromCallable(() -> { + mOutputStream.write(object.toString().getBytes()); + mOutputStream.write("\n".getBytes()); + mOutputStream.flush(); + return object; }); } diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginService.java b/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginService.java index 384a6b48..e5657519 100644 --- a/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginService.java +++ b/app/src/main/java/com/stardust/scriptdroid/sublime/SublimePluginService.java @@ -3,6 +3,8 @@ package com.stardust.scriptdroid.sublime; import com.google.gson.JsonObject; import io.reactivex.Observable; +import io.reactivex.Scheduler; +import io.reactivex.schedulers.Schedulers; import io.reactivex.subjects.PublishSubject; /** @@ -50,11 +52,9 @@ public class SublimePluginService { JsonObject object = new JsonObject(); object.addProperty("type", "log"); object.addProperty("log", log); - try { - client.send(object); - } catch (Exception e) { - e.printStackTrace(); - disconnect(); - } + client.send(object) + .subscribeOn(Schedulers.io()) + .subscribe(ignored -> { + }, Throwable::printStackTrace); } } diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime/SublimeResponseHandler.java b/app/src/main/java/com/stardust/scriptdroid/sublime/SublimeResponseHandler.java index 8640a128..34c528c7 100644 --- a/app/src/main/java/com/stardust/scriptdroid/sublime/SublimeResponseHandler.java +++ b/app/src/main/java/com/stardust/scriptdroid/sublime/SublimeResponseHandler.java @@ -15,6 +15,8 @@ import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.model.script.Scripts; import com.stardust.scriptdroid.io.StorageFileProvider; +import java.util.HashMap; + /** * Created by Stardust on 2017/5/11. */ @@ -29,7 +31,7 @@ public class SublimeResponseHandler implements Handler { public boolean handle(JsonObject data) { String script = data.get("script").getAsString(); String name = getName(data); - int viewId = data.get("view_id").getAsInt(); + String viewId = data.get("view_id").getAsString(); runScript(viewId, name, script); return false; } @@ -37,7 +39,7 @@ public class SublimeResponseHandler implements Handler { .handler("stop", new Handler() { @Override public boolean handle(JsonObject data) { - int viewId = data.get("view_id").getAsInt(); + String viewId = data.get("view_id").getAsString(); stopScript(viewId); return true; } @@ -55,7 +57,7 @@ public class SublimeResponseHandler implements Handler { @Override public boolean handle(JsonObject data) { - int viewId = data.get("view_id").getAsInt(); + String viewId = data.get("view_id").getAsString(); String script = data.get("script").getAsString(); String name = getName(data); stopScript(viewId); @@ -72,14 +74,14 @@ public class SublimeResponseHandler implements Handler { })); - private SparseArray mScriptExecutions = new SparseArray<>(); + private HashMap mScriptExecutions = new HashMap<>(); @Override public boolean handle(JsonObject data) { return mRouter.handle(data); } - private void runScript(int viewId, String name, String script) { + private void runScript(String viewId, String name, String script) { if (TextUtils.isEmpty(name)) { name = "[" + viewId + "]"; } else { @@ -88,11 +90,11 @@ public class SublimeResponseHandler implements Handler { mScriptExecutions.put(viewId, Scripts.run(new StringScriptSource(":" + name, script))); } - private void stopScript(int viewId) { + private void stopScript(String viewId) { ScriptExecution execution = mScriptExecutions.get(viewId); if (execution != null) { execution.getEngine().forceStop(); - mScriptExecutions.delete(viewId); + mScriptExecutions.remove(viewId); } } diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java b/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java index 3667bb33..fa526127 100644 --- a/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java +++ b/app/src/main/java/com/stardust/scriptdroid/tool/WifiTool.java @@ -1,6 +1,7 @@ package com.stardust.scriptdroid.tool; import android.content.Context; +import android.net.DhcpInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.text.format.Formatter; @@ -17,8 +18,20 @@ public class WifiTool { public static String getWifiAddress(Context context) { WifiManager wifiMgr = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE); + if(wifiMgr == null){ + return null; + } WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); int ip = wifiInfo.getIpAddress(); return Formatter.formatIpAddress(ip); } + + public static String getRouterIp(Context context){ + WifiManager wifiService = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + if(wifiService == null){ + return null; + } + DhcpInfo dhcpInfo = wifiService.getDhcpInfo(); + return Formatter.formatIpAddress(dhcpInfo.gateway); + } } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java index db1b6f08..cece68e0 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java @@ -52,6 +52,7 @@ import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import org.greenrobot.eventbus.EventBus; +import java.net.Socket; import java.util.Arrays; @EActivity(R.layout.activity_main) diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java index 27d198f1..0388faa1 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java @@ -247,7 +247,7 @@ public class DrawerFragment extends android.support.v4.app.Fragment { } private void inputRemoteHost() { - String host = Pref.getServerAddressOrDefault(WifiTool.getWifiAddress(getActivity())); + String host = Pref.getServerAddressOrDefault(WifiTool.getRouterIp(getActivity())); new MaterialDialog.Builder(getActivity()) .title(R.string.text_server_address) .input("", host, (dialog, input) -> { diff --git a/app/src/main/res/layout/script_file_list_directory.xml b/app/src/main/res/layout/script_file_list_directory.xml index f5cae7fd..b5c1df02 100644 --- a/app/src/main/res/layout/script_file_list_directory.xml +++ b/app/src/main/res/layout/script_file_list_directory.xml @@ -10,7 +10,7 @@ android:clickable="true" android:foreground="?selectableItemBackground" app:cardBackgroundColor="#ffffff" - app:cardElevation="0.5dp" + app:cardElevation="0.618dp" app:cardUseCompatPadding="true">