/** * Beeps the device for a given number of times. By default, it will beep once. If the user * explicitly sets the beep count to zero, it will play the applications notification profile. The * application profile playback sequence is controlled by the user. * * @param args JSONArray formatted as [ count ] count: specifies the number of times to beep the * device (default: 1). * @return A CommandResult object with the success or failure state for beeping the device. */ public static PluginResult execute(JSONArray args) { PluginResult result = null; if (Alert.isAudioSupported()) { try { int repeatCount = 1; if (args.length() > 0 && !args.isNull(0)) { repeatCount = args.getInt(0); } // play tone n times if (repeatCount > 0) { playTone(repeatCount); } // FIXME: unsupported on other platforms // send notification event to application profile else { NotificationsManager.triggerImmediateEvent(PhoneGapExtension.getAppID(), 0, null, null); } } catch (JSONException e) { Logger.log(BeepAction.class.getName() + ": " + e); result = new PluginResult(PluginResult.Status.JSONEXCEPTION, e.getMessage()); } catch (Exception e) { Logger.log(BeepAction.class.getName() + ": " + e); result = new PluginResult(PluginResult.Status.IOEXCEPTION, e.getMessage()); } result = new PluginResult(PluginResult.Status.OK); } else { result = new PluginResult(PluginResult.Status.ILLEGALACCESSEXCEPTION, "Audio not supported"); } return result; }
/** * Add plugin to be loaded and cached. If plugin is already created, then just return it. * * @param className The class to load * @return The plugin */ public Plugin addPlugin(String className, Class clazz) throws ClassNotFoundException, IllegalAccessException, InstantiationException { if (this.plugins.containsKey(className)) { return this.getPlugin(className); } Logger.log("PluginManager.addPlugin(" + className + ")"); Plugin plugin = (Plugin) clazz.newInstance(); this.plugins.put(className, plugin); plugin.setContext(this.ext); return plugin; }