1 package it.unical.mat.embasp.specializations.dlv2.android;
3 import android.app.IntentService;
4 import android.content.Intent;
5 import android.util.Log;
6 import it.unical.mat.embasp.specializations.dlv.android.DLVAndroidReasoner;
9 import java.io.FileOutputStream;
10 import java.util.concurrent.TimeUnit;
16 System.loadLibrary(
"dlv2jni");
20 super(
"dlv2_service");
25 protected void onHandleIntent(Intent intent) {
26 Log.i(
"DLV2",(intent!=
null)+
"");
28 final String action = intent.getAction();
37 final String result = handleActionSolve(program, options, files);
38 publishResults(result);
43 private void publishResults(String result) {
46 sendBroadcast(intent);
49 public String handleActionSolve(String program, String options, String filesPath) {
50 Log.i(
"DLV2",
"Launching DLV2");
53 FileOutputStream outputStream;
56 outputStream =
new FileOutputStream(file);
57 outputStream.write(program.getBytes());
60 }
catch (Exception e) {
64 StringBuilder completeProgram =
new StringBuilder();
65 completeProgram.append(options).append(
" ");
66 completeProgram.append(file.getAbsolutePath()).append(
" ");
68 completeProgram.append(filesPath).append(
" ");
70 long startTime = System.nanoTime();
71 String result = dlv2main(completeProgram.toString());
72 long stopTime = System.nanoTime();
73 Log.i(
"DLV2",
"Execution Time: "+Long.toString(TimeUnit.NANOSECONDS.toMillis(stopTime - startTime)));
78 private native String dlv2main(String filePath);
81 public void onDestroy() {
83 android.os.Process.killProcess(android.os.Process.myPid());