1 package it.unical.mat.embasp.specializations.dlv2.android;
3 import android.app.ActivityManager;
4 import android.content.BroadcastReceiver;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.content.IntentFilter;
8 import android.os.Bundle;
9 import android.util.Log;
11 import java.util.List;
13 import it.unical.mat.embasp.base.Callback;
14 import it.unical.mat.embasp.base.InputProgram;
15 import it.unical.mat.embasp.base.OptionDescriptor;
16 import it.unical.mat.embasp.platforms.android.AndroidService;
17 import it.unical.mat.embasp.specializations.dlv.android.DLVAndroidReasoner;
18 import it.unical.mat.embasp.specializations.dlv2.DLV2AnswerSets;
29 private class Receiver
extends BroadcastReceiver {
32 asCallback = callback;
36 public void onReceive(Context context, Intent intent) {
37 context.unregisterReceiver(
this);
38 Bundle bundle = intent.getExtras();
41 if (ASPResult !=
null) {
51 public void startAsync(
Callback callback, List<InputProgram> programs, List<OptionDescriptor> options) {
52 stopDlv2Service(context);
54 String input_options =
new String();
56 input_options+=
"--silent";
60 input_options+= o.getOptions();
66 String final_program =
new String();
67 String files =
new String();
70 final_program += p.getPrograms();
71 String program_file = p.getStringOfFilesPaths();
73 if (program_file !=
null) {
74 files += program_file;
81 context.registerReceiver(
new Receiver(callback),
new IntentFilter(
DLVAndroidReasoner.RESULT_NOTIFICATION));
82 context.startService(intent);
86 void stopDlv2Service(Context context){
88 boolean isServiceRunning =
true;
89 while (isServiceRunning) {
91 ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
93 isServiceRunning =
false;
95 for (ActivityManager.RunningServiceInfo processInfo : manager.getRunningServices(Integer.MAX_VALUE)) {
97 isServiceRunning =
true;
104 }
catch (InterruptedException e) {