/** * Trata os pedidos de inicialização do Service: se começou uma nova lista, se enviou o nome do * usuário da nova lista, se carregou uma lista que ja estava sendo respodida. */ @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.v("BackService", "onStartCommand"); int start = intent.getIntExtra("start", 0); switch (start) { case START_NEW_QUESTIONLIST: Intent i = new Intent(IFILTER); String xml = intent.getStringExtra("xml"); QuestionList ql = QuestionList.fromXML(xml); if (ql == null) { Log.v("BackService", "Erro ao carregar question list."); i.putExtra("load", false); sendBroadcast(i); stopSelf(); return 0; } mQL = ql; i.putExtra("load", true); sendBroadcast(i); Log.v("BackService", "Question list carregada com sucesso,Broadcast enviado!"); break; case START_NEW_USERNAME: mUser = new User(intent.getStringExtra("username"), mQL); Log.v("BackService", "Username " + mUser.getNome()); mAvaliacao = mUser.QL.getAvaliacao(); break; case START_LOAD_USER: Intent i2 = new Intent(IFILTER); String xml2 = intent.getStringExtra("xml"); User usr = User.fromXML(xml2); if (usr == null) { Log.v("BackService", "Erro ao carregar user."); i2.putExtra("load", false); sendBroadcast(i2); stopSelf(); return 0; } Log.v("BackService", "User carregado com sucesso."); mUser = usr; i2.putExtra("load", true); sendBroadcast(i2); Log.v("BackService", "Broadcast enviado!"); mAvaliacao = mUser.QL.getAvaliacao(); break; } return Service.START_STICKY; }
/** * Muda para a próxima questão. * * @return */ public boolean nextQuestion() { if (mAtualQuestion + 1 < mUser.QL.size()) { mAtualQuestion++; return true; } return false; }
/** * Bundle contendo: int acertos; int total; int tentativas; boolean[] corretas; * * @return o bundle contendo as informações da lista totalmente respondida * @return null se nao tiver sido totalmente respondida */ public Bundle verificaRespondeuTodas() { Log.d("BackService", "verificaRespondeuTodas"); if (mUser.isCompletelyAnswered()) { Bundle b = new Bundle(); b.putInt("acertos", mUser.getAcertos()); b.putInt("total", mUser.QL.getArrayListQuestion().size()); // b.putInt("tentativas", mUser.getTentativas()); boolean[] corretas = mUser.getRespostasCorretas(); boolean[] corretas2 = new boolean[corretas.length]; int i = 0; for (Question q : mUser.QL.getArrayListQuestion()) { corretas2[i] = corretas[q.ID]; i++; } b.putBooleanArray("corretas", corretas2); return b; } return null; }
/** * A questão atual será setada para a requisitada. Bundle contendo: String title; String text; * ArrayList<String> list; int answer; * * @param pos posição da questão na lista. * @return */ public Bundle getQuestionInfo(int pos) { mAtualQuestion = pos; // a questão atual é esta que se pede. Bundle b = new Bundle(); Question q = mUser.QL.getQuestion(pos); b.putString("title", q.Titulo); b.putString("text", q.Enunciado); ArrayList<String> list = q.getArrayListStringAlternatives(); b.putStringArrayList("list", list); b.putInt("answer", mUser.getResposta(q.ID)); return b; }
/** * Bundle contendo: ArrayList<String> list; String title; int number_of_questions; * * @return */ public Bundle getQuestionListInfo() { Bundle b = new Bundle(); ArrayList<Question> qlist = mUser.QL.getArrayListQuestion(); ArrayList<String> list = new ArrayList<String>(); int i = 1; for (Question q : qlist) { StringBuilder sb = new StringBuilder(); sb.append((i++) + " : "); if (q.Titulo.equals("")) { if (q.Enunciado.length() > 100) { sb.append(q.Enunciado.subSequence(0, 100).toString()); } else { sb.append(q.Enunciado); } } else { sb.append(q.Titulo); } list.add(sb.toString()); } b.putStringArrayList("list", list); b.putString("title", mUser.QL.Titulo); b.putInt("number_of_questions", mUser.QL.size()); return b; }