コード例 #1
0
 @Override
 public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
     this.callbackContext = callbackContext;
     Log.d("WIFI", action);
     if(ACTION_START.equals(action)){
         PluginResult pgRes = new PluginResult(PluginResult.Status.OK, "Registered");
         pgRes.setKeepCallback(true);
         mWifiManager = (WifiManager) this.cordova.getActivity().getSystemService(Context.WIFI_SERVICE);
         this.reciever = new BroadcastReceiver()
         {
             @Override
             public void onReceive(Context c, Intent intent)
             {
                List<ScanResult> scanResults = mWifiManager.getScanResults();
                handleResults(scanResults);
             }
         };
         this.cordova.getActivity().registerReceiver(this.reciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
         callbackContext.sendPluginResult(pgRes);
         Log.d("WIFI", "inside " + action);
         return true;
     } else if (ACTION_SCAN.equals(action)){
         PluginResult pgRes = new PluginResult(PluginResult.Status.OK, []);
         pgRes.setKeepCallback(true);
         mWifiManager = (WifiManager) this.cordova.getActivity().getSystemService(Context.WIFI_SERVICE);
         mWifiManager.startScan();
         callbackContext.sendPluginResult(pgRes);
         Log.d("WIFI", "inside " + action);
         return true;
     } else if (ACTION_STOP.equals(action)){
コード例 #2
0
  private void execHelper(
      final String service, final String action, final String callbackId, final String rawArgs) {
    CordovaPlugin plugin = getPlugin(service);
    if (plugin == null) {
      Log.d(TAG, "exec() call to unknown plugin: " + service);
      PluginResult cr = new PluginResult(PluginResult.Status.CLASS_NOT_FOUND_EXCEPTION);
      app.sendPluginResult(cr, callbackId);
      return;
    }
    CallbackContext callbackContext = new CallbackContext(callbackId, app);
    try {
      long pluginStartTime = System.currentTimeMillis();
      boolean wasValidAction = plugin.execute(action, rawArgs, callbackContext);
      long duration = System.currentTimeMillis() - pluginStartTime;

      if (duration > SLOW_EXEC_WARNING_THRESHOLD) {
        Log.w(
            TAG,
            "THREAD WARNING: exec() call to "
                + service
                + "."
                + action
                + " blocked the main thread for "
                + duration
                + "ms. Plugin should use CordovaInterface.getThreadPool().");
      }
      if (!wasValidAction) {
        PluginResult cr = new PluginResult(PluginResult.Status.INVALID_ACTION);
        callbackContext.sendPluginResult(cr);
      }
    } catch (JSONException e) {
      PluginResult cr = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
      callbackContext.sendPluginResult(cr);
    } catch (Exception e) {
      Log.e(TAG, "Uncaught exception from plugin", e);
      callbackContext.error(e.getMessage());
    }
  }
コード例 #3
0
  @Override
  public boolean execute(String action, JSONArray data, CallbackContext callbackContext) {
    boolean result;

    Log.v(TAG, "execute: action=" + action);

    if (INITIALIZE.equals(action)) {
      try {
        context = getApplicationContext();
        saveConfiguration(context, data.getString(0));
        result = true;
      } catch (JSONException e) {
        Log.e(TAG, "execute: Got JSON Exception " + e.getMessage());
        result = false;
        callbackContext.error(e.getMessage());
      }

      clearNotificationQueue(context);
    } else if (REGISTER.equals(action)) {

      Log.v(TAG, "execute: data=" + data.toString());

      try {
        context = getApplicationContext();
        JSONObject jo = data.getJSONObject(0);

        gWebView = this.webView;
        Log.v(TAG, "execute: jo=" + jo.toString());

        gECB = (String) jo.get("ecb");
        gSenderID = (String) jo.get("senderID");

        Log.v(TAG, "execute: ECB=" + gECB + " senderID=" + gSenderID);

        regid = getRegistrationId(getApplicationContext());

        if (regid.isEmpty()) {
          new AsyncRegister().execute(callbackContext);
        } else {
          sendJavascript(new JSONObject().put("event", "registered").put("regid", regid));
          callbackContext.success(regid);
        }
        result = true;
      } catch (JSONException e) {
        Log.e(TAG, "execute: Got JSON Exception " + e.getMessage());
        result = false;
        callbackContext.error(e.getMessage());
      }

      if (gCachedExtras != null) {
        Log.v(TAG, "sending cached extras");
        sendExtras(gCachedExtras);
        gCachedExtras = null;
      }

    } else if (ARE_NOTIFICATIONS_ENABLED.equals(action)) {

      Log.v(TAG, "ARE_NOTIFICATIONS_ENABLED");
      final boolean registered = !getRegistrationId(getApplicationContext()).isEmpty();
      Log.d(TAG, "areNotificationsEnabled? " + registered);
      callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, registered));
      result = true;

    } else if (UNREGISTER.equals(action)) {

      GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
      try {
        gcm.unregister();
        removeRegistrationId(getApplicationContext());
      } catch (IOException exception) {
        Log.d(TAG, "IOException!");
      }

      Log.v(TAG, "UNREGISTER");
      result = true;
      callbackContext.success();
    } else {
      result = false;
      Log.e(TAG, "Invalid action : " + action);
      callbackContext.error("Invalid action : " + action);
    }

    return result;
  }
コード例 #4
0
  @Override
  public boolean execute(String action, JSONArray data, CallbackContext callbackContext)
      throws JSONException {
    reader.start();

    am.setStreamVolume(
        AudioManager.STREAM_MUSIC, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
    this.callbackContext = callbackContext;
    timedOut = false;

    Log.w(TAG, action);
    if (mute) {
      PluginResult dataResult = new PluginResult(PluginResult.Status.OK, "NOTFOUND");
      callbackContext.sendPluginResult(dataResult);
      return true;
    }

    final ACR35Controller self = this;

    final String loadKeyCommand = "FF 82 00 00 06 %s";
    final String authCommand = "FF 86 00 00 05 01 00 %s 60 00";
    final String defaultKey = "FF FF FF FF FF FF";
    String authKeyCommand = "FF 86 00 00 05 01 00 00 60 00";

    if (action.equals("getDeviceId")) {
      cordova
          .getThreadPool()
          .execute(
              new Runnable() {
                @Override
                public void run() {
                  reader.setMute(false);

                  reader.reset(
                      new AudioJackReader.OnResetCompleteListener() {
                        @Override
                        public void onResetComplete(AudioJackReader audioJackReader) {
                          reader.getDeviceId();
                        }
                      });
                }
              });
    }

    if (action.equals("getDeviceStatus")) {
      cordova
          .getThreadPool()
          .execute(
              new Runnable() {
                @Override
                public void run() {
                  reader.setMute(false);

                  reader.reset(
                      new AudioJackReader.OnResetCompleteListener() {
                        @Override
                        public void onResetComplete(AudioJackReader audioJackReader) {
                          reader.getStatus();
                        }
                      });
                }
              });
    }

    if (action.equals("readIdFromTag")) {
      executeAPDUCommands(new byte[][] {hexToBytes("FFCA000000")});
    }
    if (action.equals("readDataFromTag")) {
      executeAPDUCommands(
          new byte[][] {
            hexToBytes(String.format(loadKeyCommand, defaultKey)),
            hexToBytes(String.format(authCommand, "04")),
            hexToBytes("FF B0 00 04 10"),
            hexToBytes("FF B0 00 05 10"),
            hexToBytes("FF B0 00 06 10"),
            hexToBytes(String.format(authCommand, "08")),
            hexToBytes("FF B0 00 08 10"),
            hexToBytes("FF B0 00 09 10"),
            hexToBytes("FF B0 00 0A 10"),
            hexToBytes(String.format(authCommand, "10")),
            hexToBytes("FF B0 00 10 10"),
            hexToBytes("FF B0 00 11 10")
          });
    }
    if (action.equals("writeDataIntoTag")) {
      try {
        String dataString = data.get(0).toString();
        byte[] dataToWrite = new byte[128];
        Arrays.fill(dataToWrite, (byte) 0);
        byte[] dataBytes = hexToBytes(dataString);
        System.arraycopy(dataBytes, 0, dataToWrite, 0, dataBytes.length);

        String dataStringToWrite = bytesToHex(dataToWrite).replaceAll("\\s", "");
        String commandString1 = "FF D6 00 04 30" + dataStringToWrite.substring(0, 95);
        String commandString2 = "FF D6 00 08 30" + dataStringToWrite.substring(96, (96 * 2) - 1);
        String commandString3 =
            "FF D6 00 10 20" + dataStringToWrite.substring(96 * 2, (96 * 2 + 64) - 1);

        Log.w(TAG, dataStringToWrite);
        executeAPDUCommands(
            new byte[][] {
              hexToBytes(String.format(loadKeyCommand, defaultKey)),
              hexToBytes(String.format(authCommand, "04")),
              hexToBytes(commandString1),
              hexToBytes(String.format(authCommand, "08")),
              hexToBytes(commandString2),
              hexToBytes(String.format(authCommand, "10")),
              hexToBytes(commandString3),
            });
      } catch (java.lang.Exception e) {
        Log.w(TAG, e);
      }
    }

    Calendar calendar =
        Calendar.getInstance(); // gets a calendar using the default time zone and locale.
    calendar.add(Calendar.SECOND, timeOut);

    timer = new Timer();
    timer.schedule(new TimeoutClass(reader, self), calendar.getTime());

    PluginResult dataResult = new PluginResult(PluginResult.Status.OK, "IGNORE");
    dataResult.setKeepCallback(true);

    callbackContext.sendPluginResult(dataResult);
    return true;
  }