1 package it.unical.mat.embasp.specializations.dlv.android;
3 import android.app.IntentService;
4 import android.content.Intent;
5 import android.util.Log;
7 import java.io.FileOutputStream;
8 import java.util.concurrent.TimeUnit;
13 public static final String FILENAME =
"tmp_program";
18 System.loadLibrary(
"dlvJNI");
28 public static final String ACTION_SOLVE =
"it.unical.mat.embasp.specializations.dlv.android.SOLVE";
29 public static final String PROGRAM =
"it.unical.mat.embasp.specializations.dlv.android.PROGRAM";
30 public static final String OPTION =
"it.unical.mat.embasp.specializations.dlv.android.OPTION";
31 public static final String FILES =
"it.unical.mat.embasp.specializations.dlv.android.FILES";
32 public static final String SOLVER_RESULT =
"it.unical.mat.embasp.specializations.dlv.android.SOLVER_RESULT";
33 public static final String RESULT_NOTIFICATION =
"it.unical.mat.embasp.specializations.dlv.android.RESULT_NOTIFICATION";
36 protected void onHandleIntent(Intent intent) {
38 final String action = intent.getAction();
39 if (ACTION_SOLVE.equals(action)) {
44 final String program = intent.getStringExtra(PROGRAM);
45 final String options = intent.getStringExtra(OPTION);
46 final String files = intent.getStringExtra(FILES);
47 final String result = handleActionSolve(program, options, files);
48 Log.i(
"result", result);
49 publishResults(result);
54 private void publishResults(String result) {
55 Intent intent =
new Intent(RESULT_NOTIFICATION);
56 intent.putExtra(SOLVER_RESULT, result);
57 sendBroadcast(intent);
60 protected String handleActionSolve(String program, String options, String filesPath) {
61 Log.i(
"DLV",
"Launching DLV");
62 File file =
new File(this.getFilesDir(), FILENAME);
64 FileOutputStream outputStream;
67 outputStream =
new FileOutputStream(file);
68 outputStream.write(program.getBytes());
71 }
catch (Exception e) {
75 StringBuilder completeProgram =
new StringBuilder();
76 completeProgram.append(options).append(
" ");
77 completeProgram.append(file.getAbsolutePath()).append(
" ");
79 completeProgram.append(filesPath).append(
" ");
81 long startTime = System.nanoTime();
82 String result = dlvMain(completeProgram.toString());
83 long stopTime = System.nanoTime();
84 Log.i(
"DLV",
"Execution Time: "+Long.toString(TimeUnit.NANOSECONDS.toMillis(stopTime - startTime)));
89 private native String dlvMain(String filePath);
92 public void onDestroy() {
94 android.os.Process.killProcess(android.os.Process.myPid());