
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.hh.se/ceres/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.hh.se/ceres/index.php?action=history&amp;feed=atom&amp;title=PA_8001_2015_Practical_3</id>
		<title>PA 8001 2015 Practical 3 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.hh.se/ceres/index.php?action=history&amp;feed=atom&amp;title=PA_8001_2015_Practical_3"/>
		<link rel="alternate" type="text/html" href="https://wiki.hh.se/ceres/index.php?title=PA_8001_2015_Practical_3&amp;action=history"/>
		<updated>2026-05-10T10:07:43Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>https://wiki.hh.se/ceres/index.php?title=PA_8001_2015_Practical_3&amp;diff=5580&amp;oldid=prev</id>
		<title>Ceres: Created page with &quot;== Objectives ==  There are three main objectives for this practical:   * Learn about and use the concept of service in Android   * Learn about and use the concepts related to...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.hh.se/ceres/index.php?title=PA_8001_2015_Practical_3&amp;diff=5580&amp;oldid=prev"/>
				<updated>2015-10-06T07:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Objectives ==  There are three main objectives for this practical:   * Learn about and use the concept of service in Android   * Learn about and use the concepts related to...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Objectives ==&lt;br /&gt;
&lt;br /&gt;
There are three main objectives for this practical: &lt;br /&gt;
&lt;br /&gt;
* Learn about and use the concept of service in Android &lt;br /&gt;
&lt;br /&gt;
* Learn about and use the concepts related to network programming in Android &lt;br /&gt;
&lt;br /&gt;
* Integrated several concepts and techniques learned in this course to implement an Android application &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start with a list of scenarios (use-cases) that the following application should be able to deal with: &lt;br /&gt;
the scenarios should specify what kind of interactions the app should support in which order so as to realize users' requirements. &lt;br /&gt;
Subsequently make an architectural design (preferably, but necessarily, using notations such as UML Class Diagrams an Sequence Diagrams) &lt;br /&gt;
to show how the application should be decomposed into a number of activities and services. &lt;br /&gt;
For each activity design the layout beforehand. &lt;br /&gt;
Then, start programming. &lt;br /&gt;
After you are doing, update the scenarios and design to reflect what you have actually implemented;&lt;br /&gt;
use the scenarios as test-cases and make sure that the app does what it is supposed to. &lt;br /&gt;
&lt;br /&gt;
Submit a single .zip file on blackboard with two folders: the first containing a single pdf reporting on the scenarios, design, test-cases and their outcomes, &lt;br /&gt;
and the other containing the Eclipse project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ESPoodle for Android! ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to implement a simplified version of [http://doodle.com/ Doodle] app for Android.&lt;br /&gt;
The only part of functionality that we adopt in our practical is to:&lt;br /&gt;
&lt;br /&gt;
* Connect to an [[media:doodleServer.zip|ESPoodle server]],&lt;br /&gt;
&lt;br /&gt;
* Specify a new meeting request, its participants and 3 options for its time-slot&lt;br /&gt;
&lt;br /&gt;
* Fetch one of the meeting requests for the participant and choose a preferred time-slot,&lt;br /&gt;
&lt;br /&gt;
* Close a meeting request by selecting one of the time slots if all participants have made their choices, and &lt;br /&gt;
&lt;br /&gt;
* Viewing the closed meetings in which a participant is involved.&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
&lt;br /&gt;
To achieve this, you will be given an IP address of an [[media:doodleServer.zip|ESPoodle server]] implemented and installed on a computer. &lt;br /&gt;
The server listens on port 4444. &lt;br /&gt;
Your app should first allow the user to enter this IP address and a unique ID which is to be used in meeting requests;&lt;br /&gt;
use your HH account login name as the unique ID throughout this practical. &lt;br /&gt;
&lt;br /&gt;
Then the app tries to connect to the server; if unsuccessful it will make three attempts with a 10 second delay in between &lt;br /&gt;
(while providing sufficient information as toast messages). &lt;br /&gt;
If successful, the client will receive the following tag from the server &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Accepted connection from  id +/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where id is the unique identifier (account name) provided by the client. &lt;br /&gt;
Then, the app will provide three possible options:&lt;br /&gt;
&lt;br /&gt;
* to create a new meeting request,  &lt;br /&gt;
&lt;br /&gt;
* to check for open meeting requests, and &lt;br /&gt;
&lt;br /&gt;
* to  check for closed meeting requests.&lt;br /&gt;
&lt;br /&gt;
=== Creating a new request ===&lt;br /&gt;
&lt;br /&gt;
The app shows a layout in which the user can enter a unique meeting Id, a number of time-slots (for simplicity we assume that all meetings take one hour and hence, it suffices to mention the starting time), and identifiers of three participants. &lt;br /&gt;
When the user presses the submit button, &lt;br /&gt;
the client sends the following structure to the server&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;OpenMeeting&amp;gt;&lt;br /&gt;
     &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;Message text = &amp;quot;Please select a time for the coming meeting.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;time = &amp;quot;8:00&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;time = &amp;quot;10:00&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;time = &amp;quot;9:00&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;Participant numberOfParticipant =&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name = &amp;quot;clientParticipantA&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;name = &amp;quot;clientParticipantB&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;name = &amp;quot;clientParticipantC&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Participant&amp;gt;&lt;br /&gt;
 &amp;lt;OpenMeeting/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The serve will reply to the meeting scheduler &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Request to start meeting is accepted/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is shown by a toast message and the app will return to the main menu.&lt;br /&gt;
&lt;br /&gt;
=== Checking for open requests ===&lt;br /&gt;
&lt;br /&gt;
The user may ask whether there has been any meeting request in which the current user is mentioned as a participant. &lt;br /&gt;
In this case, after this option is selected from the main menu, the client &lt;br /&gt;
end open meeting request like&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;CheckOpenMeeting/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The server send all open meetings for the participant one by one like &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;OpenMeeting&amp;gt;&lt;br /&gt;
      &amp;lt;For &amp;quot;+clientParticipant+&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Message text = &amp;quot;Please select a time for the coming meeting.&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;time = &amp;quot;8:00&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;time = &amp;quot;10:00&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;time = &amp;quot;13:00&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;OpenMeeting/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The participant fetches one of the meeting requests for the participant and chooses a preferred time-slot and send&lt;br /&gt;
	&lt;br /&gt;
   &amp;lt;SelectedTime&amp;gt; &lt;br /&gt;
       &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;time = &amp;quot;10:00&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;SelectedTime/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The server will store the selected time immediately and send&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;reply&amp;gt;&lt;br /&gt;
        &amp;lt;SelectedTime&amp;gt; &lt;br /&gt;
             &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;time = &amp;quot;10:00&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;SelectedTime/&amp;gt; &lt;br /&gt;
    &amp;lt;/reply&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Closing meeting requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When this option is selected, the app will first ask the user to fill in the meeting identifier and then will fetch the meetings to which all participants have responded. &lt;br /&gt;
This is done by first sending the following message to the server:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;CheckMeetingRespond&amp;gt;&lt;br /&gt;
     &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;CheckMeetingRespond/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the server will send the name of the participants and the selected times to the meeting scheduler one by one as&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;SelectedTime&amp;gt; &lt;br /&gt;
       &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;name = &amp;quot;ParticipantName&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;time = &amp;quot;10:00&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;SelectedTime/&amp;gt; &lt;br /&gt;
     ...&lt;br /&gt;
and the number of participants who respond for the meeting&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;NumberOfRespond &amp;quot;No&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then user can select one of the time-slots and close the meeting by sending the following message:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;CloseMeeting&amp;gt;&lt;br /&gt;
     &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&amp;lt;SelectedTime time = &amp;quot;10:00&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;CloseMeeting/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checking for closed meeting requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Participants can check closed meetings by &lt;br /&gt;
   &amp;lt;CheckClosedMeeting/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the server will send&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;ClosedMeeting&amp;gt;&lt;br /&gt;
       &amp;lt;MeetingId &amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;SelectedTime time = &amp;quot;10:00&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ClosedMeeting/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[PA 8001 Ed 2015|Back to Embedded Systems Programming]] ==&lt;/div&gt;</summary>
		<author><name>Ceres</name></author>	</entry>

	</feed>