scan qrcode to connect dev kit & change dev panel ui
This commit is contained in:
parent
8d0d78a12f
commit
9c9fcf4087
@ -43,7 +43,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
doricContext.init(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
doricContext.init(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||||
// doricContext.callEntity("log");
|
// doricContext.callEntity("log");
|
||||||
doricContext.getRootNode().setRootView((FrameLayout) findViewById(R.id.root));
|
doricContext.getRootNode().setRootView((FrameLayout) findViewById(R.id.root));
|
||||||
Doric.connectDevKit("ws://192.168.11.38:7777");
|
|
||||||
LocalServer localServer = new LocalServer(getApplicationContext(), 8910);
|
LocalServer localServer = new LocalServer(getApplicationContext(), 8910);
|
||||||
try {
|
try {
|
||||||
localServer.start();
|
localServer.start();
|
||||||
|
@ -57,6 +57,7 @@ dependencies {
|
|||||||
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
|
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
|
||||||
implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
|
implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
|
||||||
implementation "io.reactivex.rxjava2:rxjava:2.2.14"
|
implementation "io.reactivex.rxjava2:rxjava:2.2.14"
|
||||||
|
implementation 'org.greenrobot:eventbus:3.1.1'
|
||||||
|
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
||||||
|
@ -17,6 +17,8 @@ package pub.doric;
|
|||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
|
||||||
|
import pub.doric.dev.ConnectCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: Doric
|
* @Description: Doric
|
||||||
* @Author: pengfei.zhou
|
* @Author: pengfei.zhou
|
||||||
@ -33,8 +35,8 @@ public class Doric {
|
|||||||
return sApplication;
|
return sApplication;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void connectDevKit(String url) {
|
public static void connectDevKit(String url, ConnectCallback connectCallback) {
|
||||||
DoricDriver.getInstance().connectDevKit(url);
|
DoricDriver.getInstance().connectDevKit(url, connectCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void disconnectDevKit() {
|
public static void disconnectDevKit() {
|
||||||
|
@ -20,6 +20,7 @@ import android.os.Looper;
|
|||||||
|
|
||||||
import pub.doric.async.AsyncCall;
|
import pub.doric.async.AsyncCall;
|
||||||
import pub.doric.async.AsyncResult;
|
import pub.doric.async.AsyncResult;
|
||||||
|
import pub.doric.dev.ConnectCallback;
|
||||||
import pub.doric.dev.WSClient;
|
import pub.doric.dev.WSClient;
|
||||||
import pub.doric.engine.DoricJSEngine;
|
import pub.doric.engine.DoricJSEngine;
|
||||||
import pub.doric.utils.DoricConstant;
|
import pub.doric.utils.DoricConstant;
|
||||||
@ -138,8 +139,8 @@ public class DoricDriver implements IDoricDriver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void connectDevKit(String url) {
|
public void connectDevKit(String url, ConnectCallback connectCallback) {
|
||||||
wsClient = new WSClient(url);
|
wsClient = new WSClient(url, connectCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -17,6 +17,7 @@ package pub.doric;
|
|||||||
|
|
||||||
|
|
||||||
import pub.doric.async.AsyncResult;
|
import pub.doric.async.AsyncResult;
|
||||||
|
import pub.doric.dev.ConnectCallback;
|
||||||
import pub.doric.utils.ThreadMode;
|
import pub.doric.utils.ThreadMode;
|
||||||
|
|
||||||
import com.github.pengfeizhou.jscore.JSDecoder;
|
import com.github.pengfeizhou.jscore.JSDecoder;
|
||||||
@ -41,7 +42,7 @@ public interface IDoricDriver {
|
|||||||
|
|
||||||
DoricRegistry getRegistry();
|
DoricRegistry getRegistry();
|
||||||
|
|
||||||
void connectDevKit(String url);
|
void connectDevKit(String url, ConnectCallback connectCallback);
|
||||||
|
|
||||||
void disconnectDevKit();
|
void disconnectDevKit();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
package pub.doric.dev;
|
||||||
|
|
||||||
|
public interface ConnectCallback {
|
||||||
|
void connected();
|
||||||
|
|
||||||
|
void exception(Exception exception);
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
package pub.doric.dev;
|
||||||
|
|
||||||
|
public class ConnectEvent {
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package pub.doric.dev;
|
package pub.doric.dev;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@ -13,12 +14,18 @@ import androidx.annotation.Nullable;
|
|||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||||
import com.tbruyelle.rxpermissions2.RxPermissions;
|
import com.tbruyelle.rxpermissions2.RxPermissions;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.functions.Consumer;
|
import io.reactivex.functions.Consumer;
|
||||||
import pub.doric.R;
|
import pub.doric.R;
|
||||||
|
|
||||||
public class DevPanel extends BottomSheetDialogFragment {
|
public class DevPanel extends BottomSheetDialogFragment {
|
||||||
|
|
||||||
|
private boolean isDevConnected = false;
|
||||||
|
|
||||||
public DevPanel() {
|
public DevPanel() {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -37,7 +44,7 @@ public class DevPanel extends BottomSheetDialogFragment {
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
|
||||||
getView().findViewById(R.id.menu1_text_view).setOnClickListener(new View.OnClickListener() {
|
getView().findViewById(R.id.connect_dev_kit_text_view).setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
final RxPermissions rxPermissions = new RxPermissions(DevPanel.this);
|
final RxPermissions rxPermissions = new RxPermissions(DevPanel.this);
|
||||||
@ -46,7 +53,7 @@ public class DevPanel extends BottomSheetDialogFragment {
|
|||||||
.subscribe(new Consumer<Boolean>() {
|
.subscribe(new Consumer<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(Boolean grant) throws Exception {
|
public void accept(Boolean grant) throws Exception {
|
||||||
if (grant){
|
if (grant) {
|
||||||
Intent intent = new Intent(getContext(), ScanQRCodeActivity.class);
|
Intent intent = new Intent(getContext(), ScanQRCodeActivity.class);
|
||||||
getContext().startActivity(intent);
|
getContext().startActivity(intent);
|
||||||
}
|
}
|
||||||
@ -55,5 +62,32 @@ public class DevPanel extends BottomSheetDialogFragment {
|
|||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (isDevConnected) {
|
||||||
|
getView().findViewById(R.id.connect_dev_kit_text_view).setVisibility(View.GONE);
|
||||||
|
getView().findViewById(R.id.debug_text_view).setVisibility(View.VISIBLE);
|
||||||
|
getView().findViewById(R.id.hot_reload_text_view).setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
getView().findViewById(R.id.connect_dev_kit_text_view).setVisibility(View.VISIBLE);
|
||||||
|
getView().findViewById(R.id.debug_text_view).setVisibility(View.GONE);
|
||||||
|
getView().findViewById(R.id.hot_reload_text_view).setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(@NonNull Context context) {
|
||||||
|
super.onAttach(context);
|
||||||
|
EventBus.getDefault().register(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDetach() {
|
||||||
|
super.onDetach();
|
||||||
|
EventBus.getDefault().unregister(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
public void onMessageEvent(ConnectEvent connectEvent) {
|
||||||
|
isDevConnected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
package pub.doric.dev;
|
package pub.doric.dev;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
import cn.bingoogolapple.qrcode.core.QRCodeView;
|
import cn.bingoogolapple.qrcode.core.QRCodeView;
|
||||||
import cn.bingoogolapple.qrcode.zxing.ZXingView;
|
import cn.bingoogolapple.qrcode.zxing.ZXingView;
|
||||||
|
import pub.doric.Doric;
|
||||||
import pub.doric.R;
|
import pub.doric.R;
|
||||||
|
|
||||||
public class ScanQRCodeActivity extends AppCompatActivity implements QRCodeView.Delegate {
|
public class ScanQRCodeActivity extends AppCompatActivity implements QRCodeView.Delegate {
|
||||||
@ -47,6 +51,19 @@ public class ScanQRCodeActivity extends AppCompatActivity implements QRCodeView.
|
|||||||
@Override
|
@Override
|
||||||
public void onScanQRCodeSuccess(String result) {
|
public void onScanQRCodeSuccess(String result) {
|
||||||
setTitle("扫描结果为:" + result);
|
setTitle("扫描结果为:" + result);
|
||||||
|
Toast.makeText(this, "dev kit connecting to " + result, Toast.LENGTH_LONG).show();
|
||||||
|
Doric.connectDevKit("ws://" + result + ":7777", new ConnectCallback() {
|
||||||
|
@Override
|
||||||
|
public void connected() {
|
||||||
|
EventBus.getDefault().post(new ConnectEvent());
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exception(Exception exception) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,10 @@ import okhttp3.WebSocketListener;
|
|||||||
public class WSClient extends WebSocketListener {
|
public class WSClient extends WebSocketListener {
|
||||||
private final WebSocket webSocket;
|
private final WebSocket webSocket;
|
||||||
|
|
||||||
public WSClient(String url) {
|
private ConnectCallback connectCallback;
|
||||||
|
|
||||||
|
public WSClient(String url, ConnectCallback connectCallback) {
|
||||||
|
this.connectCallback = connectCallback;
|
||||||
OkHttpClient okHttpClient = new OkHttpClient
|
OkHttpClient okHttpClient = new OkHttpClient
|
||||||
.Builder()
|
.Builder()
|
||||||
.readTimeout(10, TimeUnit.SECONDS)
|
.readTimeout(10, TimeUnit.SECONDS)
|
||||||
@ -54,6 +57,7 @@ public class WSClient extends WebSocketListener {
|
|||||||
@Override
|
@Override
|
||||||
public void onOpen(WebSocket webSocket, Response response) {
|
public void onOpen(WebSocket webSocket, Response response) {
|
||||||
super.onOpen(webSocket, response);
|
super.onOpen(webSocket, response);
|
||||||
|
connectCallback.connected();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,7 +40,7 @@ public class RemoteJSExecutor {
|
|||||||
.readTimeout(10, TimeUnit.SECONDS)
|
.readTimeout(10, TimeUnit.SECONDS)
|
||||||
.writeTimeout(10, TimeUnit.SECONDS)
|
.writeTimeout(10, TimeUnit.SECONDS)
|
||||||
.build();
|
.build();
|
||||||
final Request request = new Request.Builder().url("ws://192.168.24.221:2080").build();
|
final Request request = new Request.Builder().url("ws://192.168.25.175:2080").build();
|
||||||
|
|
||||||
final Thread current = Thread.currentThread();
|
final Thread current = Thread.currentThread();
|
||||||
webSocket = okHttpClient.newWebSocket(request, new WebSocketListener() {
|
webSocket = okHttpClient.newWebSocket(request, new WebSocketListener() {
|
||||||
|
5
Android/doric/src/main/res/drawable/divider.xml
Normal file
5
Android/doric/src/main/res/drawable/divider.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="#cccccc" />
|
||||||
|
<size android:height="1dp" />
|
||||||
|
</shape>
|
@ -2,39 +2,33 @@
|
|||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:divider="@drawable/divider"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:showDividers="middle">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/menu1_text_view"
|
android:id="@+id/connect_dev_kit_text_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="Dev Kit"
|
android:text="Dev Kit"
|
||||||
android:textSize="20sp" />
|
android:textSize="20sp" />
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:background="#cccccc" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/menu2_text_view"
|
android:id="@+id/debug_text_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="Debug via Visual Studio Code"
|
android:text="Debug via Visual Studio Code"
|
||||||
android:textSize="20sp" />
|
android:textSize="20sp"
|
||||||
|
android:visibility="gone" />
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:background="#cccccc" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/menu3_text_view"
|
android:id="@+id/hot_reload_text_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="Enable Hot Reload"
|
android:text="Enable Hot Reload"
|
||||||
android:textSize="20sp" />
|
android:textSize="20sp"
|
||||||
|
android:visibility="gone" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
Reference in New Issue
Block a user