1 package it.unical.mat.embasp.specializations.dlv.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;
10 import java.util.List;
11 import it.unical.mat.embasp.base.Callback;
12 import it.unical.mat.embasp.base.InputProgram;
13 import it.unical.mat.embasp.base.OptionDescriptor;
14 import it.unical.mat.embasp.platforms.android.AndroidService;
15 import it.unical.mat.embasp.specializations.dlv.DLVAnswerSets;
27 private class Receiver
extends BroadcastReceiver {
30 asCallback = callback;
34 public void onReceive(Context context, Intent intent) {
35 context.unregisterReceiver(
this);
36 Bundle bundle = intent.getExtras();
39 if (ASPResult !=
null) {
49 public void startAsync(
Callback callback, List<InputProgram> programs, List<OptionDescriptor> options) {
50 stopDlvService(context);
52 String input_options =
new String();
54 input_options+=
"-silent ";
58 input_options+= o.getOptions();
64 String final_program =
new String();
65 String files =
new String();
68 final_program += p.getPrograms();
69 String program_file = p.getStringOfFilesPaths();
71 if (program_file !=
null) {
72 files += program_file;
79 context.registerReceiver(
new Receiver(callback),
new IntentFilter(
DLVAndroidReasoner.RESULT_NOTIFICATION));
80 context.startService(intent);
85 void stopDlvService(Context context){
87 boolean isServiceRunning =
true;
88 while (isServiceRunning) {
90 ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
92 isServiceRunning =
false;
94 for (ActivityManager.RunningServiceInfo processInfo : manager.getRunningServices(Integer.MAX_VALUE)) {
96 isServiceRunning =
true;
103 }
catch (InterruptedException e) {