Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

24 Istanbul

No description
by

Betül ŞAHİN

on 20 May 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 24 Istanbul

Management of Turkish Team
Management of 24 Istanbul
24 Istanbul

Management of Turkish Team
Requirements
Screenshots
Server Implementation
Tools
Implementation
Tools
ONUR BALCI
ECE ARPACIOĞLU
ENGİN ŞARLAK
İREM UZUNBAZ
BİLAL AYBAR
Project Manager
BETÜL ŞAHİN
UĞUR KINIK
HANDE NUR KÜTÜKÇÜ
UMUR CEM ALTÜRK
ÖMER KALE
We have worked on the project consciously, so we have;
Described workflows
Task sharing
Clear target
Identified common work areas
Provided sharing of information
Accepted the necessity of cooperation
Provided coordination within the team
ONUR BALCI
UĞUR KINIK
UMUR CEM ALTÜRK
ÖMER KALE
BİLAL AYBAR
ENGİN ŞARLAK
İREM UZUNBAZ
ECE ARPACIOĞLU
HANDE NUR KÜTÜKÇÜ
Technical leaders
Technical members
In order to provide task sharing and job tracking;
In order to access quickly;
For video calling, presentation or contact with contractor;
"everyone is a manager" (self-management)
GitHub
web-based hosting service for software development projects
easy source control
Android is used as operating system, because ;
Cross platform
Cheap marketplace
Screenshots
Client-Server Implementation
Requirements
We have 2 main parts;
Client
Put your map file
If you don't have previous DB, import 'config/database.dump.sql'
Have fun :)
Clone repo to your localhost/server
Installation For Server
Request /api/category/all.json

Return all categories.
Response
{
count : 1,
category : [
{
id: 1,
name : 'Eating & Drinking',
tags : [ 4, 6, 7 ],
update_date: '2014-03-21'
}
]
}
Server
Historical (historical,antique)
Art (art)
Sports (sport,stadium)
Other
Aquariam (fish,sea)
Zoo (zoo,animal)
Theme Park (theme park,fun)
Which one of these do you like ?
What kind of place do you want have fun ?
Self making music (karaoke)
Listen music and dance (music,night club,drink)
Drink out (alcohol,drink)
Wine (wine)
Beer (beer)
No matter (alcohol)
What kind of alcohol especially do you prefer ?
Map.php
Category.php
/api/map
Return Istanbul map file
{map_dir}/{map_file} will be given.
For example: map/map-current.zip
/api/category/all.json
Return all categories.
{
count : 1,
category : [
{
id: 1,
name : 'Eating & Drinking',
tags : [ 4, 6, 7 ],
update_date: '2014-03-21'
}
]
}
Question.php
/api/question/all.json
Return all questions.
{
count : 1,
questions : [
{
id: 1,
category : 1,
question : 'Do you want to take the food with you?',
options : [
{
'id' : 1,
'text' : 'Yes'
'tag' : 7 // takeaway
}, {
'id' : 2,
'text' : 'No'
'tag' : 6 // restaurant
}
]
update_date: '2014-03-21'
}
}
PlaceOfInterest.php
/api/poi/all.json
Return all places of interest.
{
count : 1,
pois : [
{
id: "4bc8088f15a7ef3b6b857ada",
name : 'Ayasofya | Hagia Sophia',
lat: 41.008621,
lng: 28.979917,
tags : [24, 42], // historic and museum
address : "Sultan Ahmet Mah. Yerebatan Cad. Sultanahmet, Fatih"
update_date: '2014-03-21'
}
]
}
Fetch.php
Trello
organizes your projects into boards
tells what's being worked on, who's working on
Hangout
Lync
Whatsapp
Rename 'config/config.example.ini' to 'config/config.ini' and do necessary changes
What type of enjoyable activies do you want ?
Tag.php
Venue.java
JSONParser.java
SplashScreen.java
RouteActivity.java
private static final String CREATE_TABLE_QUESTION = "CREATE TABLE IF NOT EXISTS questions ("
+ "id INTEGER PRIMARY KEY,"
+ "categoryId INTEGER NOT NULL,"
+ "question VARCHAR(255) NOT NULL,"
+ "lastUpdateDate DATE NOT NULL" + ");";
public long createQuestion(Question arg)
{
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_CATEGORY_ID, arg.getCategoryId());
values.put(KEY_QUESTION, arg.getQuestion());
values.put(KEY_LAST_UPDATE_DATE, arg.getLastUpdateDate());

return db.insert(TABLE_QUESTION, null, values);
}
Parses JSON string and calls DatabaseHelper to insert into the SQLite database.
Initializes the application; checks if the map and the database needs an update, and starts the location listener.
Handles routing and map rendering.
An AMP Server;
Apache2
MySQL
PHP
Free Tools
More common than iOS and WP
Sync wirelessly, continuously, and to multiple services.
Implementation
Future Work
Future Work
We can add a token mechanism for security purpose
We can add an admin panel for 24 Istanbul -
People who don't have a programming knowledge can administrate system
Questions and tags can be updated without script/sql query
GET intent
RETRIEVE question array FROM intent
RETRIEVE tag array FROM intent
RETRIEVE venue array FROM intent
RETRIEVE question array FROM intent
RETRIEVE number of answered question FROM intent

SELECT random question FROM question array
REMOVE selected question FROM question array
CREATE buttons by option count
// phase 1: The map is downloading.
START download for map

// phase 2: The map is downloading.
WAIT for finish of download

// phase 3: The map is extracting.
unzip map.zip

// phase 4: Last update date is checking.
IF (now - lastUpdate < 24hours) OR internet connection CANNOT be established
phase = 6
END IF

// phase 5: Downloading POIs...
SEND request for updates to server
download JSON files from server
parse JSON files
store data in database

// phase 6: Location data is retrieving.
IF network and GPS is not enabled
SHOW error about "GPS or network is neccessary for retrieving location"
EXIT
END IF

START GPS location listener
START network location listener

OPEN main_activity
Eclipse
Geofabrik
Osmosis
Mapsforge
Graphhopper
Facebook
Option.java
Category.java
Question.java
Download.java
Downloads and unzip the map file.
METHOD parsePOIs(jsonString, database)
INIT jsonObject from jsonString
IF jsonObject has 0 elements
RETURN
END IF

INIT jsonPOIArray from jsonObject
FOR every poiElement in jsonPOIArray
INIT venue from poiElement
IF venue exists in database
IF venue is old
Update venue in database
END
ELSE
Insert venue into database
END IF

INIT jsonTagArray from poiElement
FOR every tagElement in jsonTagArray
INIT venueMeta from tagID, venueID
IF venueMeta exists in database
PRINT "VenueMeta already exists."
ELSE
Insert venueMeta into database
END IF
END FOR
END FOR
END METHOD
Future Work For Server
Future Work For Client
Future Work For Server
Future Work For Client
Capability to integrate different countries
Make navigation more efficient
To update route during movement
API List
Tag.java
VenueMeta.java
DatabaseHelper.java
DB Package
/api/poi/all.json
/api/poi/{unix_date}/updated.json
/api/question/all.json
/api/question/{unix_date}/updated.json
/api/category/all.json
/api/category/{unix_date}/updated.json
/api/map
Permissions
Internet
Write_External_Storage
Network Access
Location Access
Installation For Client
Egit
Client Implementaton
Create istanbul's POIs
Add place into 'foursquare' table
Fetch venues from foursquare
Get area boundaries
Places are added into 'venues' table
Tag is added into 'tags' table
Venues-tag relation is added into 'venue_meta' table
Foursquare category and equivalent tags are given
Tag POIs with proper tags
Start and end points are passed as extra data inside the intent.
Creates Marker on the map
Calculate the path from current location to the destination
Loads map
QuestionActivity.java
Displays questions related to the chosen categories,
Filters nearby places of interest according to the answers given.
3/50
4/50
6/50
7/50
8/50
9/50
11/50
12/50
13/50
14/50
We have 2 main parts;
Client
Put your map file
If you don't have previous DB, import 'config/database.dump.sql'
Have fun :)
Clone repo to your localhost/server
Installation For Server
Server
Map.php
Category.php
/api/map
Return Istanbul map file
{map_dir}/{map_file} will be given.
For example: map/map-current.zip
/api/category/all.json
Return all categories.
{
count : 1,
category : [
{
id: 1,
name : 'Eating & Drinking',
tags : [ 4, 6, 7 ],
update_date: '2014-03-21'
}
]
}
Rename 'config/config.example.ini' to 'config/config.ini' and do necessary changes
Tag.php
Venue.java
private static final String CREATE_TABLE_QUESTION = "CREATE TABLE IF NOT EXISTS questions ("
+ "id INTEGER PRIMARY KEY,"
+ "categoryId INTEGER NOT NULL,"
+ "question VARCHAR(255) NOT NULL,"
+ "lastUpdateDate DATE NOT NULL" + ");";
public long createQuestion(Question arg)
{
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_CATEGORY_ID, arg.getCategoryId());
values.put(KEY_QUESTION, arg.getQuestion());
values.put(KEY_LAST_UPDATE_DATE, arg.getLastUpdateDate());

return db.insert(TABLE_QUESTION, null, values);
}
An AMP Server;
Apache2
MySQL
PHP
We should add a token mechanism for security purpose
We can add an admin panel for 24 Istanbul -
People who don't have a programming knowledge can administrate system
Questions and tags can be updated without script/sql query
Syncing with foursquare can be done automated
Option.java
Category.java
Question.java
Download.java
Downloads and unzip the map file.
ResultActivity.java
Future Work For Server
Future Work For Client
Capability to integrate different countries
Make navigation efficient
To update route during movement
API List
Tag.java
VenueMeta.java
DatabaseHelper.java
Db Package
/api/poi/all.json
/api/poi/{unix_date}/updated.json
/api/question/all.json
/api/question/{unix_date}/updated.json
/api/category/all.json
/api/category/{unix_date}/updated.json
/api/map
Permissions
Internet
Write_External_Storage
Network Access
Location Access
Installation For Client
Places are added into 'venues' table
Tag is added into 'tags' table
Venues-tag relation is added into 'venue_meta' table
Foursquare category and equivalent tags are given
Tag POIs with proper tags
Displays the places of interest that are filtered according to the user's answers.
15/50
16/50
17/50
18/50
19/50
20/50
21/50
22/50
23/50
24/50
25/50
26/50
27/50
28/50
29/50
30/50
31/50
32/50
33/50
34/50
35/50
36/50
37/50
38/50
39/50
40/50
41/50
42/50
43/50
40/50
43/50
44/50
45/50
46/50
47/50
48/50
49/50
MainActivity.java
ResultActivity.java
Categories are selected.
Displays the places of interest that are filtered according to the user's answers.
Retrieves the questions of selected category from database
Full transcript