Исправления на экране сканера
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.dinect.checker"
|
||||
android:versionCode="1"
|
||||
android:versionName="0.0.2">
|
||||
android:versionName="0.0.3">
|
||||
|
||||
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
|
||||
|
||||
|
||||
@@ -46,11 +46,17 @@ import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import java.io.IOException;
|
||||
import java.lang.Exception;
|
||||
import java.lang.Thread;
|
||||
import java.util.List;
|
||||
import io.flutter.plugin.common.MethodCall;
|
||||
import io.flutter.plugin.common.MethodChannel;
|
||||
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
|
||||
import io.flutter.plugin.common.MethodChannel.Result;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.json.*;
|
||||
|
||||
import com.dinect.checker.R;
|
||||
|
||||
public class CameraActivity extends AppCompatActivity implements SurfaceHolder.Callback {
|
||||
@@ -61,9 +67,10 @@ public class CameraActivity extends AppCompatActivity implements SurfaceHolder.C
|
||||
private HashMap<String, Integer> mContours = new HashMap<>();
|
||||
|
||||
private boolean mBarcodeScanned = false;
|
||||
private boolean previewing = false;
|
||||
private boolean previewing = true;
|
||||
private Handler autoFocusHandler;
|
||||
private int mOffset;
|
||||
private String mToken = "19305da6610a74504f8a462411199b5de0c93979";
|
||||
|
||||
static {
|
||||
System.loadLibrary("iconv");
|
||||
@@ -254,17 +261,61 @@ public class CameraActivity extends AppCompatActivity implements SurfaceHolder.C
|
||||
mCamera.stopPreview();
|
||||
|
||||
SymbolSet syms = mScanner.getResults();
|
||||
|
||||
for (Symbol sym : syms) {
|
||||
mBarcodeScanned = true;
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("code", sym.getData());
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
requestUser(sym.getData());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private NetworkThread t;
|
||||
|
||||
private void requestUser(String code) {
|
||||
t = new NetworkThread(this, code, mToken);
|
||||
t.start();
|
||||
}
|
||||
|
||||
void handleResult(Response response, String card) {
|
||||
if (response == null) {
|
||||
previewing = true;
|
||||
mCamera.setPreviewCallback(previewCallback);
|
||||
mCamera.startPreview();
|
||||
return;
|
||||
}
|
||||
if (response.code() == 200) {
|
||||
try {
|
||||
JSONArray users = new JSONArray(response.body().string());
|
||||
if (users.length() > 0) {
|
||||
Toast.makeText(this, "Чики-брики и в дамки", Toast.LENGTH_SHORT).show();
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("user", users.get(0).toString());
|
||||
intent.putExtra("card", card);
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
} else {
|
||||
Toast.makeText(this, "Пользователь с таким id не найден", Toast.LENGTH_SHORT).show();
|
||||
previewing = true;
|
||||
mCamera.setPreviewCallback(previewCallback);
|
||||
mCamera.startPreview();
|
||||
}
|
||||
} catch (IOException | JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Log.d("kifio", response.body().string());
|
||||
Toast.makeText(this, "Произошла ошибка", Toast.LENGTH_SHORT).show();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
t.close();
|
||||
}
|
||||
|
||||
private Runnable doAutoFocus = new Runnable() {
|
||||
public void run() {
|
||||
if (previewing) {
|
||||
@@ -273,10 +324,60 @@ public class CameraActivity extends AppCompatActivity implements SurfaceHolder.C
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
AutoFocusCallback autoFocusCallback = new AutoFocusCallback() {
|
||||
public void onAutoFocus(boolean success, Camera camera) {
|
||||
Log.d("kifio", String.valueOf(success));
|
||||
autoFocusHandler.postDelayed(doAutoFocus, 1000);
|
||||
}
|
||||
};
|
||||
|
||||
private static class NetworkThread extends Thread {
|
||||
|
||||
private CameraActivity mActivity;
|
||||
private String mCode = "";
|
||||
private String mUrl = "http://pos-api-int.dinect.com/20130701/users/?auto=";
|
||||
private String mCard = "";
|
||||
private String mToken = "";
|
||||
|
||||
NetworkThread(final CameraActivity activity, final String code, String token) {
|
||||
if (code == null) {
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
activity.handleResult(null, code);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
mActivity = activity;
|
||||
mCard = code;
|
||||
mUrl += code;
|
||||
mToken = token;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.addHeader("DM-Authorization", "dmapptoken 9fec83cdca38c357e6b65dbb17514cdd36bf2a08")
|
||||
.addHeader("Authorization", "dmtoken " + mToken)
|
||||
.url(mUrl)
|
||||
.build();
|
||||
|
||||
try {
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
final Response response = client.newCall(request).execute();
|
||||
mActivity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
mActivity.handleResult(response, mCard);
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
void close() {
|
||||
mActivity = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
|
||||
import io.flutter.plugin.common.MethodChannel.Result;
|
||||
import com.google.android.gms.iid.InstanceID;
|
||||
import java.util.Map;
|
||||
import java.util.ArrayList;
|
||||
import java.lang.System;
|
||||
|
||||
public class MainActivity extends FlutterActivity {
|
||||
@@ -109,9 +110,13 @@ public class MainActivity extends FlutterActivity {
|
||||
finish();
|
||||
} else if (requestCode == START_SCANNER_REQUEST_CODE && resultCode == RESULT_OK) {
|
||||
if (data != null) {
|
||||
String code = data.getExtras().getString("code", null);
|
||||
if (code != null) {
|
||||
mChannel.invokeMethod("purchase", code);
|
||||
String user = data.getExtras().getString("user", null);
|
||||
if (user != null) {
|
||||
String card = data.getExtras().getString("card", null);
|
||||
ArrayList<String> args = new ArrayList<>(2);
|
||||
args.add(user);
|
||||
args.add(card);
|
||||
mChannel.invokeMethod("purchase", args);
|
||||
} else {
|
||||
String menuItem = data.getExtras().getString("item", null);
|
||||
Log.d("item", menuItem);
|
||||
|
||||
Reference in New Issue
Block a user