提交 b16842bb 编写于 作者: B Bin Li

Fix abnormal exit after create engine failed

上级 3e3cd176
...@@ -28,6 +28,7 @@ import org.greenrobot.eventbus.EventBus; ...@@ -28,6 +28,7 @@ import org.greenrobot.eventbus.EventBus;
public class AppModel { public class AppModel {
private boolean stopClassify = false;
private Handler mJniThread; private Handler mJniThread;
public static AppModel instance = new AppModel(); public static AppModel instance = new AppModel();
private AppModel() { private AppModel() {
...@@ -54,8 +55,18 @@ public class AppModel { ...@@ -54,8 +55,18 @@ public class AppModel {
@Override @Override
public void run() { public void run() {
int result = JniMaceUtils.maceMobilenetCreateEngine(initData.getModel(), initData.getDevice()); int result = JniMaceUtils.maceMobilenetCreateEngine(initData.getModel(), initData.getDevice());
if (result == -1 && callback != null) { Log.i("APPModel", "maceMobilenetCreateEngine result = " + result);
callback.onCreateEngineFail();
if (result == -1) {
stopClassify = true;
MaceApp.app.mMainHandler.post(new Runnable() {
@Override
public void run() {
callback.onCreateEngineFail(InitData.DEVICES[0].equals(initData.getDevice()));
}
});
} else {
stopClassify = false;
} }
} }
}); });
...@@ -65,6 +76,9 @@ public class AppModel { ...@@ -65,6 +76,9 @@ public class AppModel {
mJniThread.post(new Runnable() { mJniThread.post(new Runnable() {
@Override @Override
public void run() { public void run() {
if (stopClassify) {
return;
}
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
float[] result = JniMaceUtils.maceMobilenetClassify(input); float[] result = JniMaceUtils.maceMobilenetClassify(input);
...@@ -76,7 +90,7 @@ public class AppModel { ...@@ -76,7 +90,7 @@ public class AppModel {
} }
public interface CreateEngineCallback { public interface CreateEngineCallback {
void onCreateEngineFail(); void onCreateEngineFail(final boolean quit);
} }
} }
...@@ -25,7 +25,6 @@ import android.view.WindowManager; ...@@ -25,7 +25,6 @@ import android.view.WindowManager;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.xiaomi.mace.demo.camera.CameraEngage; import com.xiaomi.mace.demo.camera.CameraEngage;
...@@ -187,17 +186,29 @@ public class CameraActivity extends Activity implements View.OnClickListener, Ap ...@@ -187,17 +186,29 @@ public class CameraActivity extends Activity implements View.OnClickListener, Ap
} }
@Override @Override
public void onCreateEngineFail() { public void onCreateEngineFail(final boolean quit) {
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Error"); builder.setTitle("Error");
builder.setMessage("Failed to create inference engine with current setting!"); builder.setMessage("Failed to create inference engine with current setting:\n" + initData.getModel() + ", " + initData.getDevice());
builder.setCancelable(false); builder.setCancelable(false);
builder.setPositiveButton("Quit", new DialogInterface.OnClickListener() { builder.setPositiveButton(quit ? "Quit" : "Reset", new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
finish(); if (quit) {
System.exit(0);
} else {
dialog.dismiss();
resetCpu();
}
} }
}); });
builder.show(); builder.show();
} }
private void resetCpu() {
String content = InitData.DEVICES[0];
mSelectPhoneType.setText(content);
initData.setDevice(content);
AppModel.instance.maceMobilenetCreateEngine(initData, CameraActivity.this);
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册