NEXT, PREV, BATT, CALLLOG, SMSLOG,
LS, RM, CONTACTS, DISABLE, ENABLE,
POLL, HANGUP, ANSWER, LAUNCH, DATA,
- GPS, GLOCATION, REBOOT, SHUTDOWN, NOTIFY
+ GPS, GLOCATION, REBOOT, NOTIFY, SCREENCAP,
+ TORCH
}
/**
/** Fine battery status notifications */
BATTERY_CHANGED,
/** Headset plug/unplug notifications */
- HEADSET
+ HEADSET,
+ /** Phone booted notifications */
+ BOOT,
}
/**
switch(address.protocol){
case HTTP:
new HttpCallExecutableRunnable("/send", toNonNull(Arrays.asList(
- new Header("X-Destination", toNonNull(address.data)))), context, null, message).execute();
+ new Header("X-Destination", toNonNull(address.data)))), context, null, true, message).execute();
break;
case SMS:
*/
public static URL getServerURL(final Context context, final String path) throws MalformedURLException{
final String hostname=PreferenceManager.getDefaultSharedPreferences(context).getString("hostname", "fonbot.ieval.ro");
- final int port=Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context).getString("port", "7777"));
+ final int port=Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context).getString("port", "443"));
final URL url=new URL("https", hostname, port, path);
return url;
}
/**
- * Poll the server for pending commands.
+ * Poll the server for pending commands. This function must not be called from BroadcastReceivers
*
* @param context Context instance
*/
public static void pollServer(final Context context){
- new HttpCallExecutableRunnable("/get", null, context, new PollResultCallback(context)).execute();
+ new HttpCallExecutableRunnable("/get", null, context, new PollResultCallback(context), false).execute();
}
+ /**
+ * Poll the server for pending commands from {@link FonBotMainService}. This function should be used from BroadcastReceviers instead of {@link #pollServer}
+ *
+ * @param context Context instance
+ */
+ public static void safePollServer(final Context context){
+ final Intent intent=new Intent(context, FonBotMainService.class);
+ intent.setAction(FonBotMainService.ACTION_TRIGGER_POLL);
+ context.startService(intent);
+ }
/**
* Executes a given command
*
*/
private static void processCommand(final Context context, final Command cmd,final String[] args,final Address replyTo){
if(Heavy.isCommandDisabled(context, cmd)){
- sendMessage(context, replyTo, command_disabled);
+ sendMessage(context, replyTo, command_disabled, cmd.toString());
return;
}
Heavy.reboot(context, replyTo, args.length==0?null:args[0]);
break;
- case SHUTDOWN:
- //TODO: implement command
- break;
-
case NOTIFY:
if(args.length!=1 && args.length!=3){
Heavy.help(context, replyTo, toNonNull(Command.NOTIFY));
+ return;
}
final int id;
else
Heavy.notify(context, replyTo, id, toNonNull(args[1]), toNonNull(args[2]));
break;
+
+ case SCREENCAP:
+ if(args.length != 1){
+ Heavy.help(context, replyTo, toNonNull(Command.SCREENCAP));
+ return;
+ }
+
+ Heavy.screencap(context, replyTo, args[0]);
+ break;
+
+ case TORCH:
+ Heavy.torch(context, replyTo);
+ break;
}
}