Получить штрих-код в Кордове

У меня есть устройство КПК PE900S, на котором я устанавливаю приложение Ionic, которое должно сканировать штрих-коды с помощью встроенного в устройство лазерного сканера.

Для этого я создал плагин Cordova, класс которого в Main.java сейчас выглядит следующим образом:

public class Scanner extends CordovaPlugin {

@Override
public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException {

    if (action.equals("scan")) {

        Intent intentService = new Intent("com.hyipc.core.service.barcode.BarcodeService2D");
        intentService.putExtra("KEY_ACTION", "UP");

        cordova.getActivity().startService(intentService);
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        intentService.putExtra("KEY_ACTION", "DOWN");
        cordova.getActivity().startService(intentService);

        intentService.putExtra("KEY_ACTION", "TONE=100");

        return true;

    } else {

        return false;

    }
}

Этот код запускает сканер и создает звуковой сигнал при успешном сканировании. Проблема в том, что я не знаю, как получить результат (строку штрих-кода), чтобы я мог отправить его обратно в мое приложение Ionic.

У меня есть этот пример Java-кода от производителя, который должен делать то, что я хочу, но я не знаю, как интегрировать его в мое приложение. Какие-нибудь мысли?

    package com.example.getbarcode;

    import java.security.PublicKey;

    import android.os.Bundle;
    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    public class MainActivity extends Activity {
        public static final String ACTION_BARCODE_SERVICE_BROADCAST = "action_barcode_broadcast";
        private BroadcastReceiver mReceiver = new BarcodeReceiver();
        public static final String KEY_BARCODE_STR = "key_barcode_string";
        private TextView tvBarcode;
        private String strBarcode = "";
        private Button btnScan;
        public static final String KEY_ACTION = "KEY_ACTION";
        public static final String TONE = "TONE=100";
        private Intent intentService = new Intent("com.hyipc.core.service.barcode.BarcodeService2D");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvBarcode = (TextView) this.findViewById(R.id.tvBarcode);
        btnScan = (Button) this.findViewById(R.id.btnScan);
        intentService.putExtra(KEY_ACTION, TONE);
        this.startService(intentService);
    }

    public class BarcodeReceiver extends BroadcastReceiver {
        public void onReceive(Context ctx, Intent intent) {
            if (intent.getAction().equals(ACTION_BARCODE_SERVICE_BROADCAST)) {
                    strBarcode = intent.getExtras().getString(KEY_BARCODE_STR);
                    tvBarcode.setText(strBarcode);
                    strBarcode = "";
            }
        }
    }

    public void doClick(View v){
        if (v.equals(btnScan)) {
            intentService.putExtra(KEY_ACTION, "UP");
             .startService(intentService);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            intentService.putExtra(KEY_ACTION, "DOWN");
            this.startService(intentService);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        //close barcodePower

        this.unregisterReceiver(mReceiver);
    }

    @Override
    protected void onResume() {
        super.onResume();
        intentService.putExtra(KEY_ACTION, "INIT");
        this.startService(intentService);

        // register receiver
        IntentFilter filter = new IntentFilter();
        filter.addAction(ACTION_BARCODE_SERVICE_BROADCAST);
        this.registerReceiver(mReceiver, filter);

    }


}

0 ответов

Другие вопросы по тегам