You are on page 1of 79

CHAPTER I

INTRODUCTION

Our generations nowadays, in a very fast pace, was becoming more advance
especially when it comes to technology. With just a blink of an eye, countless numbers of
different gadgets were created. A whole new phase of technology that makes our world
more productive, efficient and convenient for living.
Video Communication or video call is one of the new productive software
application which spread out worldwide. Video communication is the process of
communicating by audio and video transmissions through the use of Video enabled
devices such, as android phones. Android phones are now one of the latest phones
developed. Android devices are most commonly used for Video call application. Back in
the 20th century, Video call became popular with the advent of powerful and high-speed
internet connections.
Video communication has been traditionally constrained by high-cost, dedicated
hardware and software requirements. However due to the emergence of widespread and
relatively low-cost broadband internet access and other devices having access to the
internet caused many people, organizations, institutions, and students to utilize video
communication as an effective way to interact with others.
Video communication systems then rapidly evolved and readily available to the
public at a reasonable cost. Thats why peoples attentions are easily caught by those
cheap things that benefits them the most.
1

By year 2014, according to Dave Ryan, with the growing numbers of


subscribers of mobile market, more mobile devices would likely to enter the market with
the video capability. Having this concern, the productivity of mobile devices with video
capability would likely to increase. According to him, video communication have been
very effective using mobile devices one that enjoys working, chatting everywhere, and
work-anywhere lifestyle.
One of the video call applications develop was Skype. The idea of Skype was to
make free voice calls using any devices that can run a video call application all around
the world. Which makes Skype more popular among people around the world.
Wide Area Video communication provides real-time communication and
improved video and audio quality for better use with the capability to perform video call,
voice call, and chat services. However, unlike other applications like Skype, the system
can only perform one to one conversation.
This study was proposed because of the needs and the rapidly evolving of
technology. Since android begin to become popular, the proponents decided to make a
system for android phones that can perform video call, voice call, and chat. Since some
video applications on the web are much more complex, the proponents decided to create
a simple application, user friendly, and free to use application.

Purpose and Description


The Wide Area Video Communication Application intends to provide users with
mobile android devices to have a free and user friendly video call application. Having
this application can help users interact with other users in any location as long as theres a
stable and fast internet connection.

The application offers features that are convenient to the users. One of its features
is that it can perform video call and chat anytime as long as theres a stable internet
connection. The application connects the two users using sessions and token which is
automatically given after registering of accounts. The application also offers file transfer
feature that can transfer file types like .png, .jpeg, rar files, and .txt. File transfer is done
locally.
OBJECTIVES

This study aims to provide:

Usability of Service by designing a mobile application

Cite the challenges and difficulties to implementing the application with its
limitations and its benefits to users.

Provide steps and guidelines on how to use the application.

Provide samples of the tested application output.

Describe how the application works high speed and stable internet connection.

Provide real-time communication using android phones with improved visual and
audio quality.

SCOPE AND LIMITIATION OF THE STUDY

The study is only intended for users having mobile android devices. Mobile
android devices with minimum requirements; Android Jelly Bean version 4.2. The system
can perform one to one conversation; either video call, voice call or chat. It can only be
performed within the Wireless Fidelity (Wi-Fi) range.
3

With regards to performance and the quality output, the system performs well
provided with fast internet connection. The system cannot be performed without internet
connection.
With regards to usability/portability, the system application can be applied to
android phones and Laptop. Communications can be performed through Android phone
to pc or vice versa, and android to android. The system is primarily focused on using
Android to Android communication.
The study is limited to performing a Wireless Area Network (WAN) video
communication. The application cant perform by manually creating a server for sessions;
session from the web is needed to gain session for connecting the two android phones.
The application is only limited to one on one communication.
With regards to File transfer, the application can perform file transfer but only in a
Local Area Network. The file size and type are not yet fully recognized, the application
can only carry .txt, .png, .jpeg file extensions.
SIGNIFICANCE OF THE STUDY

The study is relevant for the following:


Users
The users of the smart phones are the direct beneficiaries of this application. It
will allow them to communicate easily without going to internet cafes just to make video
call. The application also saves budget since the application dont require the user to pay
for the service. The application can be used as long as theres a fast and reliable Wi-Fi
Internet connection.

Researchers
This study serves as major part of the course requirement as it has developed their
skills in terms of self-esteem, time management, practicality, strategic planning and
patience. Hence, they are able to obtain the necessary information on time and reporting
it in the most presentable manner they can. This study can be an effective tool for
reference to know how to make video communication much easier to use and provide
better communication system in a much cost-effective way.

DEFINITION OF TERMS
To facilitate better understanding on the content of the study, these terms are
defined conceptually and operationally.
Android Software Development Kit (Android SDK) provides API libraries and
developer tools necessary to build, test, and debug apps for Android.
Android Native Development Kit (Android NDK) is a toolset that allows you to
implement parts of your app using native-code languages such as C and C++.
Apache Maven is a build automation tool used primarily for Java projects. Maven
addresses two aspects of building software: First, it describes how software is built, and
second, it describes its dependencies.
Cygwin provides native integration of Windows-based applications, data, and
other system resources with applications, software tools, and data of the Unix-like
environment.

Android phones are smart phones that can handle complex codes and software
applications that allows the proponents to apply and implement the system.
Local Area Network (LAN)is a computer network that interconnects computers
within a limited area such as a home, school, computer laboratory, or office building,
using network media. File transfer function in the application can be done locally.
Wide Area Network (WAN)is a network that covers a broad area (i.e., any
telecommunications network that links across metropolitan, regional, national or
international boundaries) using leased telecommunication lines. WAN is applied in the
system by using the applications core features; video call and text messaging.
Wireless Fidelity (Wi-Fi), also spelled Wifi or WiFi, is a local area wireless
technology that allows an electronic device to exchange data or connect to the internet
using 2.4 GHz UHF and 5 GHz SHF radio waves.
Real-Time Communicationis a new integrated communication medium based on
the

upcoming

W3C

standard

WebRTC,

making

use

of

other

components

likeHTML5/JavaScript, the iLBC audio codec, and the VP8 video codec.
Web Real-Time Communication (WebRTC) is an API definition drafted by the
World Wide Web Consortium (W3C) that supports browser-to-browser applications for
voice calling,video chat, and P2P file sharing without plugins.
Skypeis a telecommunications application software that specializes in providing
video chat and voice calls from computers, tablets and mobile devices via the Internet to
other devices or telephones/smartphones.
Personal

Home

Page

(PHP)

Hypertext

Processor

is

a server-side

scripting language designed for web development but also used as a general-purpose
programming language.

My Sequel (MySQL)is (as of March 2014) the world's second most widely
used open-source relational database management system (RDBMS).
JavaScript Object Notation (JSON) is a lightweight data-interchange format. It is
easy for humans to read and write. It is easy for machines to parse and generate. It is
based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd
Edition - December 1999.
Eclipse is

an integrated

development

environment (IDE).

It

contains

base workspace and an extensible plug-in system for customizing the environment.
Written mostly in Java, Eclipse can be used to develop applications.
NetBeans is an integrated development environment (IDE) for developing
primarily with Java, but also with other languages, in particular PHP, C/C++, and
HTML5. It is also an application platform framework for Java desktop applications and
others.
Long Term Evolution (LTE) is a wireless communication of high-speed data for
mobile

phones

and

data

terminals.

It

is

based

on

the GSM/EDGE and UMTS/HSPA network technologies, increasing the capacity and
speed using a different radio interface together with core network improvements.

CHAPTER II

REVIEW OF RELATED LITERATURE

Over the past few years, video communication has been popular since the
development of advance technologies such as smart phones. Video communication
service was first introduced in 1936 by Germanys Reichspost by using public television
stations to call each other and then later on was commercially used in United States
during 1970s. Due to advance technologies developed, made possible by high-speed
internet, video communications has moved out of the realm of science fiction to become
commonplace in our homes, at work, and on mobile devices. Yet we remain some
distance from the goal of video calls being as easy and ubiquitous as phone calls are
today across any network and between all devices (Marthin De Beer, 2012).

Wireless Local Area Network (WAN) Video Call


The Internet lets people connect to the world, and Wireless Fidelity (Wi-Fi)
allows them to live life free from wires. Although there are many brands and models of
wireless routers on the market, they all work on the same principle. Routers convert data
into radio waves that are transmitted, and then received by computers and other devices.
There are five main factors that affect wireless router capabilities, including the distance
between the router and connection points, ISP speed, walls and other interference, the
number of devices online, and the router itself. When buying a wireless router, its

possible to purchase them at physical locations, but eBay can provide buyers a greater
level of choice and convenience (Mwangi 2013).
Video calling over the internet is becoming more and more popular in recent
years. Like Tangoan Android application that allows the user to make voice and video
calls for free. It can also use the application to send instant messages, share photos, play
games, and even listen to music. The quality of video in such applications is a major
contributor to the overall user experience during the call. As received video quality
degrades significantly when the network path used is either under-utilized or overutilized, a method for estimating network bandwidth availability for adapting video bit
rate in video calls is highly desirable (Yair Wiener, 2010).
In connecting two wireless routers, wireless bridge is needed, there are two
routers the primary router which connects to the Internet and the client bridge router
which works in client bridge mode (Craft, 2012).
There are mobile applications that can establish an Audio and Video calls using
wireless LAN, but there are limitations, such as requesting for payments. In the study of
Pardhi and Gaikwad (2010), it aims to present inexpensive audio and video
communication over Wireless Local Area Network (LAN). The system requires personal
computer that with installed application and a wireless router that serves as the
connection of multiple computer.
Video Communications consists of Unicast and Multicast Video Communications.
Unicast case supports multipath video communications using Robust Multipath Source
Routing Protocol (RMPSR). Robust multipath source routing protocol (RMPSR) is a
multipath extension to Dynamic Source Routing (DSR), which utilizes desirable features
of other multipath routing approaches, and applies several new rules to address
requirements of video communication applications. Robust multipath source routing
9

protocol (RMPSR) is a multipath extension to Dynamic Source Routing (DSR), which


utilizes desirable features of other multipath routing approaches, and applies several new
rules to address requirements of video communication applications.(Wei and Zakhor
2010).
According to Shirkar (2012), routing process is nothing but routers control plane.
Router records a routing table listing what route should be used to forward a data packet,
and through which physical interface connection. Router learns your network routes
information either by static configuration or by using dynamically configure routing
protocol. Forwarding process is also known as switching process. Once the router finds
outgoing interface, the packet move between interfaces by switching process. This is
done by process switching, fast switching. Forwarding can be done by using adjacency
tables reside on the route processor or on interface cards that support switching. Process
switching requires the device CPU to be involved for every forwarding decision. Fast
switching still uses the CPU for initially packets and to fill cache table in router. Once
initial packet has been forwarded, the information about how to reach the destination is
stored in a fast-switching caches .when another packet going to the same destination, the
next hop information can be re-used from the cache and so the router processor doesnt
have to look into it, but if the information is not cached the CPU will have to process
entire packets.
Remote working arrangements are becoming increasingly popular; not only do
they allow for more flexibility in telecommuters' lives, connecting to the office remotely
enables employees to work without common office distractions. However, working from
somewhere other than your office can sometimes feel isolating, as you no longer have the
water-cooler moments or spontaneous lunches out with colleagues. This is where video

10

conferencing comes in, as it allows you to have real-time, face-to-face interactions with
your colleagues (Gabriela Warren, 2014).
Video chat on smart phones has come a long way in a relatively short amount of
time, and the tools available for Android have matured from gimmicky to genuinely
useful. Tango has grown exponentially since we last
talked about it. It supports video calls to other Tango users on Android, iPhone Operating
System (iOS), Windows Phone, and Windows desktops (Alan Henry, 2013).The oddlynamed ooVoo is built with video calling in mind from the get-go, and offers free group
video chat with up to 12 people on 3G, 4G, Long Term Evolution (LTE) and Wireless
Fidelity (Wi-Fi) connections, including high-res 1:1 video on Android phones. The sheer
popularity of the ubiquitous Skype messaging platform makes it one of the best choices
for video calling on Android. There's a good chance that the person(s) you'll be calling
already have a Skype account, so you can just fire up the application, and go (Daniel P.,
2014). These are example of video call application on android.

Related Systems
Skype is a telecommunications application software that specializes in providing
video chat and voice calls from computers, tablets and mobile devices via the Internet to
other devices or telephones/smartphones. Users can also sendinstant messages, exchange
files and images, send video messages and create conference calls. Skype is available to
download onto computers running Microsoft Windows, Mac or Linux, as well as
Android, Blackberry, iOS and Windows Phone, smartphones and tablets. Much of the
service is free but users require Skype Credit or a subscription to call landline or mobile
numbers. Skype is based on a freemium model.

11

Skype allows users to communicate by voice using a microphone, video by using


a webcam, and instant messaging over the Internet. Skype-to-Skype calls to other users
are free of charge, while calls to landline telephones and mobile phones (overtraditional
telephone networks) are charged via a debit-based user account system called Skype
Credit. (http://en.wikipedia.org/wiki/Skype)
Spin Video-based Collaboration is built from the ground up for mobile-based,
multi-participant videoconferencing. With Spin, up to 10 people can participate in a video
session from their mobile devices. By leveraging a cloud-based architecture rather than
peer-to-peer (P2P), Spin solves common denominator issues for multi-participant video
chats, providing the highest QoS possible. Video-based collaboration is where Spin truly
distinguishes itself from the competition. Spins proprietary network protocol
differentiates different data streams and sends them through multiple channels for
example, sending animations and drawings through one channel, and audio and video
through another. The result is a high quality of experience (QoE) in both the fidelity of
the communications and the support of simultaneous collaboration activities, such as
watching videos, viewing photos, and annotating documents.
ooVoo is a video chat and instant messaging client developed by ooVoo LLC for
Microsoft Windows, Windows Phone, Mac OS X,Android, iOS and Facebook. It was
released in 2007, and is similar in some respects to Microsoft's Skype. ooVoo allows
registered users to communicate through free instant messaging, voice, and video chat.
ooVoo conferencing software enables high quality video and audio calls with up to twelve
locations simultaneously, high resolution video and desktop sharing, and PC- or Mac-tophone calls to landlines and mobile phones for a fee. With ooVoo's cloud-based servers,

12

users can make the highest quality video calls from any device. ooVoovideo technology
automatically detects and adjusts for connection speed, which means less dropped calls.
Fring is a mobile application that allows you to make mobile calls and send
instant messages (chat) to other fring users and PC-based IM services such as Skype,
Google Talk, MSN Messenger & SIP at no extra cost beyond your existing data plan.
fring calls cost nothing extra because they utilize GPRS, 3G and Wi-Fi mobile Internet
connections.
There are more of these related applications which are commonly used video call
applications for android like Tango messenger, WeChat, StarCall, Lync 2013, FaceTime,
Hangouts, VonageMobile, Line, and etc.

13

CHAPTER III

TECHNICAL BACKGROUND

This chapter provides the technical background in the development of the Wide
Area Video Communication Application. Tools and technology used and applied are
included.
Video call performs audio-video transmission at different locations and distance.
Wide Area Video Communication is an android application which the proponents decided
to build for wider communication within Wi-Fi range of a specific area. The system can
perform Video Call, Voice Call, and Chat.

Technology Used and Applied


The Android Software Development Kit (Android SDK) provides API libraries
and developer tools necessary to build, test, and debug apps for Android. The proponents
used Eclipse to compile and build the program to create the system APK.
The Android Native Development Kit (Android NDK) is a toolset that allows you
to implement parts of your app using native-code languages such as C and C++. The
proponents used Android NDK because some of the codes cant be build using Android
SDK. One reason is because the output of Android NDK is a bunch of codes needed for
Android SDK.

14

Apache Maven is a build automation tool used primarily for Java projects. Maven
addresses two aspects of building software: First, it describes how software is built, and
second, it describes its dependencies.
The Apache Maven is used to build java codes fast and reliable. Apache Maven
has its own package of codes which automatically search for imports or dependencies
from the internet. An example where Apache Maven does the work is building up codes
or imports from the Internet to pom.xml. Pom.xml is used in the system as storage for
imports downloaded by Apache Maven.
Cygwin provides native integration of Windows-based applications, data, and
other system resources with applications, software tools, and data of the Unix-like
environment. Cygwin serves as terminal for building up native codes
or NDK for windows operating system primarily because windows cant build native
codes or NDK like Linux operating system. Cygwin is used to build codes for session and
token generator.
The proponents used Android phones as platform of the software. Android phones
can handle complex codes and software applications that allow the proponents to apply
and implement the system. Laptop is used as a server for sessions.
PHP handles and manages MySQL to gather data and store data to and from
MySQL. PHP is used to build up register function, login function, to call, receive call
function, and all functions involved in data collecting and sending data.
MySQL keeps the data and store them for further use. MySQL is used in the
system as primary storage of data. PHP is needed to handle and manage all data stored in
MySQL.
JSON is used to gather data from MySQL. JSON is used to list all the clients of
the application and display it to android application.
15

Technical Framework

Figure 1: Technical Framework

The illustration shows the connection between Android Application, PHP, JSON,
and MySQL. Android application sends request to PHP web service. Login is an example
for this request wherein android application sends request to PHP web service to know if
theres an existing username and password in the database. The PHP web service then
checks if theres an existing username and password in the database. MySQL then
produce result from the query to PHP web service. Then PHP will pass the data gathered
to JSON, if the username and password does not exist, JSON will display, Username not
found. The process is true to both android devices having the application.

16

CHAPTER IV

METHODOLOGY

This chapter covers the strategy and empirical techniques applied and discussed
during the research of the study.

Requirement Specifications

1. Functional Requirements Functions and components of the proposed system


Analysis
The analysis is the part where the use case diagram, conceptual framework and
flowchart were discussed. Refer to Appendix for illustration.
1.2 Input Requirements
1.2.1 Smart phones and Android Application
The user is required to have an android device with video enabled
capability together with the installed Application.
1.2.2 User Side Android Application
1.2.2.1 Registration
The user is required to have an account by registering in order to
login to the application to use the application services. Upon registering,
the sessions are automatically made.
1.2.2.2 Login

17

The user is require to login in order to use the full functionality of


the application.
1.2.2.3 Sending Request
The user sends request to the desired individual to interact to.
Sending of request requires both users to be connected in one session.
1.2.2.4 File Transfer
The user can send files to desired individual via LAN.
1.3 Process
The application server automatically saves the data into the database for
reference. The server retrieves all the data collected from registering and
automatically gives each account created a unique session id and token.
The server checks for existing accounts upon logging in. The server then
checks if the two users are connected in one session. The server pairs the session
id of the both users for confirmation to perform the action.
The server selects the file to send then direct the file to the recipient for
confirmation to accept the files to be transferred.

1.4 Output Requirements


1.4.1 Server Side of the Application
The server respond to call requests, and file transfer requests.
2. Non-Functional Requirements
2.1 Usability
The system is a user friendly system with friend Graphical User Interface
and easy to use functions.

18

2.2 Platform
The application can run on any android devices with video enabled
capability.

2.3 Availability
The application is available in Play Store in any android devices as long as
theres an internet connection.

2.4 Reliability
The application is compatible to any smart phone and android devices
with android version 4.2 up.

CONCEPTUAL FRAMEWORK

INPUT

PROCESS

OUTPUT

TheSend
serverRequest
handlestothe
make
request
call for video call and chat.
Immediate response to call requests
TheSend
callerRequest
sends request
file transfer
to the recipient for video call andImmediate
chat.
response to file transfers
TheSend
requests
Textwill
Messages
be sent to the receiver.
Receive active calls and text message
The application executes processes involved in requestingReceive
call, sending
file transfers
files and request
text messages.

19

The inputs involved in the study are the following; Sending call requests, sending
files, and sending text messages.
In the process, the server handles all the requests from video call, file transfer and
chat. The application executes processes involved in requesting call, sending files and
text messages. Lastly the specific requests made will be sent to the recipient.
The output would be receiving all the requests; file transfer, video call, and text
messaging.

System Design
Registration and Create Session
USER 1

Session and Token Auto-gen


Register Account

Database

USER 2

Figure 2: Registration and Create Session


The figure shows the Registration process and creating the session. The
application requires user accounts to work. The registered accounts are stored in the
database. Once the account is registered to the database, the session and token generator
automatically generates sessions and tokens to every user accounts registered.

20

Login

Application

USER 1

Login Account

Session and Token Auto-gen


Database

Login Account
USER 2
Application

Figure 3: Login
The figure shows the Login process and how to obtain session. The application
requires users to login before using it. After clicking login button, the application
processes the login request. The database checks the data whether the account already
exists. If the account already exists, the database sends response to the application that
the data exists. The application then executes and confirms the login request.

21

Video Call

Caller Side
Session and
Recipient Side

Database

Caller Side

Recipient Side

Sends Request to Database

Checks for incoming call

Recipient Session
Sessions and Token

Figure 4: System Design

The figure shows the main process of the application. The application always
starts with the caller side when using video call. The caller side sends request to the
database to call the recipient. The database then handles the request from the caller. The
recipient then checks the database if theres an incoming call. Once the recipient receives

22

the call from the caller, the caller then gets the session of the recipient from the database
in the process and finally connecting the two clients.

File Transfer

Sender

Send Files
Router

Receiver

Receive File

Figure 5: File Transfer


The figure shows the process of file transfer in the application. The application
lets the user choose file transfer option manually. The application also only allows the
clients to send files locally. The application also displays the IP address of the two clients.
The application lets the client choose what file types to be sent. The application then
sends the files from the sender to the receiver. During the process, the application gets the
IP address of the receivers phone back to the sender.

Development Plan

The paper followed the Waterfall Methodology of Software Development Life


Cycle (SDLC), one of the oldest and most basic software development methodologies
still adapted by many software development companies while developing software
solutions. SDLC, a linearprocess where a sequential methodology, was followed and the
23

project process was monitored and measured according to the completion of each phase.
This method was adapted since departmentalization and control were allowed, a schedule
which could set deadlines for each stage of development and in which products can
proceed through the development process model.

Figure 6: Waterfall model (SDLC)


Moreover, the SDLC showed a detail step from the beginning of developing
system until the system was completed. All steps were explained in detail so that
thorough understanding on the real concepts of the system is to be realized. From
concept phase, where plans and conceptualizations of the proposed application were
made, all possible requirements were gathered, analyzed the requirements and conducted
studies whether system is feasible or not in the present situation.
Likewise, since smart phones are one of the most used devices that can handle
android applications, there has been rapid growth of smart phones technology in the
market, a proposal was made. The system design was prepared including the Graphical
User Interface (GUI), Database design, and the whole System architecture.
24

The implementation phase or the coding process, information were gathered and
group to analyze. After analysis, the information gathered was converted to machine
language.
The testing phase involves carrying out trial and errors, checking of bugs and the
necessary technologies. The testing phase follows the Software Testing Life Cycle:
Requirements/Design Review
The android phone Operating System version must be Jelly Bean v4.2.2 in order
to use the application.
Test Planning
The plan is to test the application with selected people. The testing will be done
by using two android phones with minimum requirement of OS version Jelly Bean v4.2.2
and a fast and reliable internet connection. The plan also tests the features like video call,
video chat, and file transfer.
Test Designing
The testers need to install the application into their phones to test all the necessary
features and its functions. The user is required to login their account to use the
application. The test procedures include selection of desired person the user wants to call
after logging in and select what feature the user wants to do with that person; either Video
Call, Video Chat, and File Transfer. The expected result should be the successive file
transferring and interaction of the two users.

25

Test Environment Setup


The test will be conducted anywhere as long as the applications are installed in
both two devices and provided with fast and reliable internet connection.
Test Execution
The tester will test the application by going to any specific locations and run the
application to test and detect bugs and errors.
The selected testers tested some of the applications features; video call, video
chat and file transfer. Refer to Chapter V for testing results.
Test Reporting
From the information and data gathered from testing the application, the data
gathered are analyzed in order to detect defects, identify users functional and nonfunctional requirements, software and hardware requirements for obtaining the full
functionality of the application. Refer to Chapter V for sample outputs.

26

CHAPTER V

RECOMMENDATIONS

Based on the results and discussion produced in developing this project, the
following recommendations are clustered according to software requirements, hardware
requirements and system requirements. Project Implementation framework is shown.

System Requirements

The operating system used and recommended to create and run this application is
Windows 7 64 bit operating system. Higher versions are much better.

Hardware Requirements

The project utilizes and recommends having the following hardware


specifications; at least 1GB of Random Access Memory (RAM) or the higher the better,
and an Intel Dual-Core processor.

27

Software Requirements

The Android SDK and Eclipse IDE are one of the most commonly used in
Android development. The application needs the following technologies; Android NDK,
Apache Maven, Cygwin, MySQL, PHP, and JSON.

Wide Area Video Communication Application Implementation Plan


Send File and Receive File
USER

USER

Figure 7: Implementation Plan


The illustration shows the flow of the application and how the processes are
implemented. There are two users involved in the process. The two phones above indicate
the two users devices. In the application, the users are required to register and login to
use the application. The user is directed to the applications main user interface. Refer to
Appendix for images.

28

During the process, call requests are sent to the database; MySQL database. The
receiver side application keeps on checking on the database for some incoming calls.
PHP handles the information of the caller and sends it to the receivers phone. The
application also offers file transfer, file transfer is done locally. Data are sent from the
sender to the receiver by getting the IP address of the recipient.
Testing Results
Video Call- There have been problems concerning the connectivity of the two
users at the beginning trial. Sessions were not properly established. Bunch of
configurations are needed. The trial failed.
The proponents configured all the possible reasons for the problems like
configuring time limits for the session to end, meta data, media mode, etc. All the
configurations needed are found in the OpenTok service. Second attempt was success
after configurations.
The Video Call service can only be used if the two users are connected in one
session.The Video Call service is functional and ready to use anytime. The service needs
internet connection.
Voice Call - Voice call works the first trial of the application. Minor problems like
audio quality is often observed. Voice quality depends on how fast the internet connection
is. Having a fast and reliable internet connection would be the best solution to the
problem. The proponents used OpenTok service for the audio to work and connectivity
between the two users by means of sessions. The service is technically functional and
ready to use anytime provided with fast and reliable internet connection.
Chatting - The first trial was a failure. The configurations were wrong. Minor
configurations must be done. The proponents configured the minor configurations
29

causing the problem. Chatting services needs OpenTokservice for relaying messages. The
service is technically functional and ready to use anytime provided with fast and reliable
internet connection.
File Transfer - The first trial failed. At first the file transferring is fixed. No file
chooser. When sending files, the senders application froze because sending files takes
time. To fix the problem, the code for transferring file was put into Asynctask.

File

transfer is manually established.

Stage of development
The first stage of development of this project, the proponents discussed the
problem about making a video call application in the most simplest and efficient way.
The proponents undergo intensive research on related systems develop to analyze and
create ideas for the development of the system. The proponents start to consult the mentor
for further discussion, feedbacks and comments about the proposed system. The
proponents start to develop the second stage of the application which is gathering of facts
and data about the related application. Then downloading all the necessary technologies
needed for the application to run; Android SDK, Android NDK, Cygwin, Apache Maven,
OpenTok service, JSON, MySQL, Eclipse IDE, netBeans IDE, and PHP. After
downloading all the necessary technologies needed, proceed to making the surface UI for
the application; UI design using adt-bundle (eclipse), database server using MySQL.
Then, establishing the server using session generator.Lastly, coding all the necessary
inputs for some specific functionality of the application like LOGIN, and REGISTER.

30

Gathered Data

The proponents planned the proposed application by gathering all the possible
requirements and analyzing all the requirements needed for the system to be functional.
The fact that theres a rapid growth of smart phone technologies in the market, the
proponents decided to develop the application since video communication applications is
one of the most important means of communication as of today.
The study was conducted in order to provide better means of communications in
the most cost-effective way. This study greatly differentiates the system to the existing
system applications by means of usability and security.
The first stage of development of this project, the proponents discussed the
problem about making a video call application in the most simplest and efficient way.
The proponents undergo intensive research on related systems develop to analyze and
create ideas for the development of the system. The proponents start to consult the mentor
for further discussion, feedbacks and comments about the proposed system. The
proponents start to develop the second stage of the application which is gathering of facts
and data about the related application. The proponents then proceed to the third stage
which is building the project. Then downloading all the necessary technologies needed
for the application to run; Android SDK, Android NDK, Cygwin, Apache Maven,
OpenTok service, JSON, MySQL, Eclipse IDE, netBeans IDE, and PHP. After
downloading all the necessary technologies needed, proceed to making the surface UI for
the application; UI design using adt-bundle (eclipse), database server using MySQL.
Then, establishing the server using session generator.Lastly, coding all the necessary
inputs for some specific functionality of the application like LOGIN, and REGISTER.
31

REFERENCES

Mwangi M., (2013) Factors That Affect a Wireless Routers Capabilities retrieve
from June 16, 2014 http://www.ebay.com/gds/5-Factors-That-Affect-a-Wireless-Router-sCapabilities-/10000000177629356/g.html
Yair Wiener,(2010) A dynamic bandwidth estimation and adaptation algorithm for
real-time

video

calling

retrieve

from

June

16,

2014

http://www.academia.edu/6880773/TREND_A_DYNAMIC_BANDWIDTH_ESTIMATI
ON_AND_ADAPTATION_ALGORITHM_FOR_REAL-TIME_VIDEO_CALLING
Craft, N. (August 31, 2012) How To: Connect Two Wireless Router Wirelessly
(Bridge)

With

Open

Source

Software

retrieve

from

June

16,

2014

http://www.cyberciti.biz/networking/howto-connect-two-wireless-router-wirelesslybridge-with-open-source-software/
Pardhi, R. L., &Gaikwad, V. T. (2010). Voice and Video over Wireless
LAN.International Journal on Computer Science and Engineering (IJCSE), NCICT
retrieve from June 16, 2014 http://www.enggjournals.com/ijcse/doc/009-IJCSESP139.pdf
Wei W. and Zakhor A. (2010). Multipath Unicast and Multicast Video
Communication over Wireless Ad retrieve from June 16, 2014 http://wwwvideo.eecs.berkeley.edu/papers/weiwei/broadnets2004.pdf
Shirkar A., (2012) WAN, Routing and Switching retrieve from June 16, 2014
https://supportforums.cisco.com/community/netpro/networkinfrastructure/routing/blog/2012/10/18/what-happened-when-router-receives-packet
http://en.wikipedia.org/wiki/Skype

32

Bokovza, Aurli. "ooVoo Exands Its Multi-Person, Cross-Platform Video Chat


Service To More Than 200 Android Devices". www.oovoo.com. Retrieved 18 September
2014.
Other References
https://netbeans.org/kb/docs/php/remote-hosting-and-ftpaccount.html#uploadSourcesOnRemoteServer
https://netbeans.org/kb/docs/php/remote-hosting-and-ftp-account.html
http://cpanel.serversfree.com/index
http://www.discussdesk.com/download-login-form-in-PHP-and-mysql.htm
https://netbeans.org/kb/docs/php/quickstart.html
http://stackoverflow.com/questions/24383463/how-to-connect-java-to-a-websitewebhost-database
http://stackoverflow.com/questions/20500442/php-mysql-data-insert-not-working
http://cpanel.serversfree.com/switcher
http://sql14.serversfree.com/phpmyadmin/index.php?
db=u143753839_users&token=ccc406951fe3471041ee12da447051d2&phpMyAdmin=0
69a82f8a45edee2f6cf96071948b5bd330d21a1
http://cpanel.serversfree.com/news/important/id/50033
http://localhost/xampp/OpenTok-PHP-SDK-master/src/OpenTok/
http://www.codeofaninja.com/2013/04/android-http-client.html
33

http://www.tutorialspoint.com/android/android_php_mysql.html
http://fahmirahman.wordpress.com/2011/04/21/connection-between-php-server-andandroid-client-using-http-and-json/
http://www.vogella.com/tutorials/AndroidJSON/article.html
http://mongskiewl.wordpress.com/2013/10/16/sending-json-data-from-android-to-a-phpscript/
http://codeoncloud.blogspot.com/2013/07/android-mysql-php-json-tutorial.html
http://www.androidhive.info/2014/07/android-custom-listview-with-image-and-textusing-volley/
http://developer.android.com/guide/components/services.html
http://www.thepcwizard.in/2012/09/android-creating-custom-listview-for.html
http://androidexample.com/JSON_Parsing_-_Android_Example/index.php?
view=article_discription&aid=71&aaid=95
http://www.androidhive.info/2012/10/android-multilevel-listview-tutorial/
http://www.learn2crack.com/2013/11/listview-from-json-example.html
https://github.com/haoqili/Android-File-Transfer
http://android-er.blogspot.com/2014/02/android-sercerclient-example-server.html
http://android-er.blogspot.com/2014/02/android-sercerclient-example-client.html
http://www.computerworld.com/s/article/9217207/Google_releases_video_chat_source_c
ode
34

http://www.webrtc.org/faq
https://github.com/rhinobird/libjingle-examples
https://www.youtube.com/watch?v=f0NU-E8l_qQ&noredirect=1
https://github.com/lukeweber/webrtc-jingle-client
https://code.google.com/p/v8/wiki/BuildingWithGYP
https://developers.google.com/talk/libjingle/developer_guide
http://www.webrtcworld.com/webrtc-list.aspx
http://tutorialforlinux.com/2013/11/24/how-to-install-android-ndk-on-linux-ubuntu-1310-saucy-easy-guide/
https://www.youtube.com/watch?v=YgNDgHqb764
https://www.youtube.com/watch?v=Rs1Y5-vqCx0
https://www.youtube.com/watch?v=unF0alwZPGA
https://www.youtube.com/results?search_query=how+to+install+android+ndk+in+linux
https://developer.android.com/tools/sdk/ndk/index.html
file:///C:/adt/workspace/opentok-android-sdk-samples/browser_demo.html
https://github.com/opentok/opentok-android-sdk-samples
http://static.opentok.com/opentok/tutorials/connect-session/android/

35

https://www.google.com.ph/?
gfe_rd=cr&ei=yGPKU_uDJOrM8ge124CoCA&gws_rd=ssl#q=OpenTok+Android+SDK
+Samples
https://dashboard.tokbox.com/keys/186106
https://github.com/opentok/opentok-android-sdk-samples
tokvideochat
http://stackoverflow.com/questions/19681558/what-is-the-use-of-pom-xml-file-in-java
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
https://github.com/opentok/Opentok-JavaSDK/blob/master/sample/Archiving/README.md
https://github.com/opentok/Opentok-JavaSDK/blob/master/sample/HelloWorld/README.md
https://github.com/opentok/Opentok-Java-SDK
http://tokbox.com/opentok/libraries/server/java/
https://dashboard.tokbox.com/
http://static.opentok.com/opentok/tutorials/create-token/java/index.html
http://static.opentok.com/opentok/tutorials/connect-session/android/
http://www.vogella.com/tutorials/ApacheMaven/article.html
http://maven.apache.org/run-maven/

36

http://maven.apache.org/guides/mini/guide-configuring-maven.html
http://maven.apache.org/run-maven/index.html
http://maven.apache.org/
http://maven.apache.org/repository-management.html
http://spring.io/guides/gs/gradle/
http://tokbox.com/opentok/libraries/server/java/
http://static.opentok.com/opentok/tutorials/create-token/java/index.html
http://static.opentok.com/opentok/tutorials/connect-session/android/
https://github.com/opentok/Opentok-Java-SDK
https://github.com/opentok/Opentok-JavaSDK/blob/master/sample/HelloWorld/README.md
http://www.vogella.com/tutorials/ApacheMaven/article.html
https://github.com/opentok/Opentok-JavaSDK/blob/master/sample/HelloWorld/README.md
https://github.com/opentok/Opentok-Java-SDK
http://static.opentok.com/opentok/tutorials/connect-session/android/
https://github.com/opentok/Opentok-JavaSDK/blob/master/sample/HelloWorld/README.md
http://tokbox.com/opentok/libraries/server/java/

37

http://static.opentok.com/opentok/tutorials/create-token/java/index.html
https://dashboard.tokbox.com/
http://www.computerworld.com/s/article/9217207/Google_releases_video_chat_source_c
ode
http://www.webrtc.org/faq
https://github.com/rhinobird/libjingle-examples
https://www.youtube.com/watch?v=f0NU-E8l_qQ&noredirect=1
https://github.com/lukeweber/webrtc-jingle-client
https://code.google.com/p/v8/wiki/BuildingWithGYP
https://developers.google.com/talk/libjingle/developer_guide
http://www.webrtcworld.com/webrtc-list.aspx
http://tutorialforlinux.com/2013/11/24/how-to-install-android-ndk-on-linux-ubuntu-1310-saucy-easy-guide/
https://www.youtube.com/watch?v=YgNDgHqb764
https://www.youtube.com/watch?v=Rs1Y5-vqCx0
https://www.youtube.com/watch?v=unF0alwZPGA
https://www.youtube.com/results?search_query=how+to+install+android+ndk+in+linux
https://developer.android.com/tools/sdk/ndk/index.html

38

APPENDICES

RELEVANT SOURCE CODE

Register Function In Android


httpclient=new DefaultHttpClient();
httppost=

new

HttpPost("http://mrsvideocall.bugs3.com/Users.php");

//

make sure the url is correct.


//add your data
nameValuePairs = new ArrayList<NameValuePair>(4);
// Always use the same variable name for posting i.e the android side
variable name and php side variable name should be similar,
nameValuePairs.add(new
BasicNameValuePair("username",et.getText().toString().trim()));
$Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new
BasicNameValuePair("password",pass.getText().toString().trim()));
nameValuePairs.add(new
BasicNameValuePair("email",email.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("respon","Checker"));

39

//

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Execute HTTP <span id="IL_AD9" class="IL_AD">Post Request</span>
response=httpclient.execute(httppost);

<span id="IL_AD12" class="IL_AD">from here</span>....


ResponseHandler<String>responseHandler = new BasicResponseHandler();
final String response = httpclient.execute(httppost, responseHandler);

Register Function InPHP


$userid = $_POST['userid'];
$username = $_POST['username'];
$password = $_POST['password'];
$stat = $_POST['stat'];
$email = $_POST['email'];
$respon = $_POST['respon'];

$API_KEY = "1234567";
$API_SECRET = "**************";
$opentok = new OpenTok($API_KEY, $API_SECRET);

40

$session

$opentok->createSession(array('mediaMode'

=>MediaMode::ROUTED));
$sessionId = $session->getSessionId();

$token = $session->generateToken(array(
'role' => Role::PUBLISHER,
'expireTime' => time() + (30 * 24 * 60 * 60), // in 30 days
'data' => 'name=Eleo'

));
$sql

"INSERT

INTO

UserAccount

(username,

password,

email,

status ,sessionId , token,apikey) VALUES ('" . $username . "', '" .


$password . "','" . $email . "','active' , '" . $sessionId . "' , '" .
$token . "', '" . $API_KEY . "');";
$result = mysql_query($sql);
if (!$result) {
echo 'Failed ';
} else {
echo 'Success ';
}
mysql_close();

41

Login In Android
httpclient=new DefaultHttpClient();
httppost=

new

HttpPost("http://mrsvideocall.bugs3.com/Users.php");

//

make sure the url is correct.


//add your data
nameValuePairs = new ArrayList<NameValuePair>(3);
// Always use the same variable name for posting i.e the android side
variable name and php side variable name should be similar,
nameValuePairs.add(new
BasicNameValuePair("username",et.getText().toString().trim()));

//

$Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new
BasicNameValuePair("password",pass.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("respon","Login"));

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Execute HTTP <span id="IL_AD9" class="IL_AD">Post Request</span>
response=httpclient.execute(httppost);
<span id="IL_AD12" class="IL_AD">from here</span>....
ResponseHandler<String>responseHandler = new BasicResponseHandler();
final String response = httpclient.execute(httppost, responseHandler);

42

final String resss = response;


String sa[] = response.split(" ");
if(sa[0].equalsIgnoreCase("NoSuchUserFound")){
showAlert();
}else{
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(login.this,"Login Success", Toast.LENGTH_SHORT).show();
new

JSONParse(resss).execute();

}
});
}

Login In PHP
$userid = $_POST['userid'];

$username = $_POST['username'];
$password = $_POST['password'];
$stat = $_POST['stat'];
$email = $_POST['email'];
$respon = $_POST['respon'];

43

$sql

"select

user_id

from

UserAccount

where

username

'"

$username . "' and password = '" . $password . "'";


$result = mysql_query($sql);
$rows = mysql_num_rows($result);
$row = mysql_fetch_row($result);
if ($rows == 0) {
echo "NoSuchUserFound ";
} else {
echo $row[0];
}
mysql_close();

List all users except the one who login


Android Jason Parser
private class JSONParse extends AsyncTask<String, String, JSONObject> {
privateProgressDialogpDialog;
@Override
protected void onPreExecute() {

super.onPreExecute();

44

listuserid = (TextView)findViewById(R.id.listuserid);
listusername = (TextView)findViewById(R.id.listusername);
listpassword = (TextView)findViewById(R.id.listpassword);
listemail = (TextView)findViewById(R.id.listemail);
liststatus = (TextView)findViewById(R.id.liststatus);
pDialog = new ProgressDialog(Listing.this);
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}

@Override
protectedJSONObjectdoInBackground(String... args) {
JSONObjectjson = null;
try {
HttpClienthttpclient = new DefaultHttpClient();
String

url

"http://mrsvideocall.bugs3.com/Users.php?format=json&superid="+user_id;
HttpPosthttppost = new HttpPost(url);

45

ResponseHandler<String>responseHandler

new

BasicResponseHandler();

String

responseBody

httpclient.execute(httppost,responseHandler);
// Parse
json = new JSONObject(responseBody);

} catch (final Exception e) {

}
returnjson;
}
@Override
protected void onPostExecute(JSONObjectjson) {
pDialog.dismiss();

try {
// Instantiate a GET HTTP method
try {

JSONArrayjArray = json.getJSONArray("posts");

46

for (int i = 0; i <jArray.length(); i++) {


HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = jArray.getJSONObject(i);
String s = e.getString("post");

JSONObjectjObject = new JSONObject(s);

map.put("user_id", jObject.getString("user_id"));
map.put("username", jObject.getString("username"));
map.put("password", jObject.getString("password"));
map.put("email", jObject.getString("email"));
map.put("status", jObject.getString("status"));
map.put("sessionId", jObject.getString("sessionId"));
map.put("token", jObject.getString("token"));
map.put("apikey", jObject.getString("apikey"));
mylist.add(map);
ListAdapter

adapter

new

SimpleAdapter(Listing.this,

mylist,
R.layout.list_v,
new String[] { "user_id","username", "password",
"email" , "status" , "sessionId", "token" , "apikey"}, new int[] {

47

R.id.listuserid

,R.id.listusername

R.id.listpassword

R.id.listemail,R.id.liststatus,R.id.listsessionId,R.id.listtoken,R.id.li
stapikey});
list.setAdapter(adapter);

} catch (final Exception e) {

}
} catch (final Throwable t) {

}
}
}

PHP list all except the one who log in


$userid = $_POST['userid'];
$username = $_POST['username'];
$password = $_POST['password'];

48

$stat = $_POST['stat'];
$email = $_POST['email'];
$respon = $_POST['respon'];

$format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml';


$sql = "select * from UserAccount where user_id != '". $userid ."'";
$result = mysql_query($sql);
$posts = array();
if (mysql_num_rows($result)) {
while ($post = mysql_fetch_assoc($result)) {
$posts[] = array('post' => $post);

}
}
if ($format == 'json') {
header('Content-type: application/json');
echojson_encode(array('posts' => $posts));
} else {
header('Content-type: text/xml');
echo '';
foreach ($posts as $index => $post) {

49

if (is_array($post)) {
foreach ($post as $key => $value) {
echo '<', $key, '>';
if (is_array($value)) {
foreach ($value as $tag => $val) {
echo '<', $tag, '>', htmlentities($val), '</', $tag, '>';
}
}
echo '</', $key, '>';
}
}
}
echo '';
}

mysql_close();

Android Caller Activity


private class DownloadFilesTask231 extends AsyncTask<Void, Void, Void> {
int wait = 2000;
HttpPosthttppost;

50

HttpResponse response;
HttpClienthttpclient;
List<NameValuePair>nameValuePairs;
String response2;
String sa[];
protected void onPreExecute (){

}
protected Void doInBackground(Void... voids) {
synchronized (this) {
try {
wait(wait);
httpclient=new DefaultHttpClient();
httppost=

new

HttpPost("http://mrsvideocall.bugs3.com/Users.php");

//

make

sure

the

url is correct.
//add your data
nameValuePairs = new ArrayList<NameValuePair>(2);

// Always use the same variable name for posting


i.e the android side variable name and php side variable name should be
similar,

51

nameValuePairs = new ArrayList<NameValuePair>(2);


nameValuePairs.add(new
BasicNameValuePair("userid",user_id));
nameValuePairs.add(new
BasicNameValuePair("respon","Busy1"));
httppost.setEntity(new
UrlEncodedFormEntity(nameValuePairs));
//Execute

HTTP

<span

id="IL_AD9"

class="IL_AD">Post Request</span>
response=httpclient.execute(httppost);
// edited by James from coderzheaven..<span
id="IL_AD12" class="IL_AD">from here</span>....
ResponseHandler<String>responseHandler

new

BasicResponseHandler();
response2

httpclient.execute(httppost,

responseHandler);
} catch (Exception e) {
Log.i("wrong", "wrong");
}
}
return null;
}

52

protected void onPostExecute(Void result) {


soundPool.stop(soundID);

if(response2.equals("No Call")){
new DownloadFilesTask231().execute();
}else if(response2.equals("Call")){
if(type.equals("videocall")){
Intent

in=new

Intent(getApplicationContext(),UIActivity.class);

in.putExtra("userName", username);
in.putExtra("userId", user_id);
in.putExtra("sessionId", sessionId);
in.putExtra("token", token);
in.putExtra("apikey", apikey);

in.putExtra("Id", id);
in.putExtra("name2", username2);
in.putExtra("sessionId2", sessionId2);
in.putExtra("token2", token2);
in.putExtra("apikey2", apikey2);

53

startActivity(in);
}else if (type.equals("videochat")){
Intent

in=new

Intent(getApplicationContext(),MultipartyActivity.class);

in.putExtra("userId", user_id);
in.putExtra("userName", username);
in.putExtra("sessionId", sessionId);
in.putExtra("token", token);
in.putExtra("apikey", apikey);

in.putExtra("Id", id);
in.putExtra("name2", username2);
in.putExtra("sessionId2", sessionId2);
in.putExtra("token2", token2);
in.putExtra("apikey2", apikey2);

startActivity(in);

54

}
alert.dismiss();
finish();
}
}
}

PHP Caller Activity


$userid = $_POST['userid'];

$username = $_POST['username'];
$password = $_POST['password'];
$stat = $_POST['stat'];
$email = $_POST['email'];
$respon = $_POST['respon'];
$result = mysql_query("select `status` from UserAccount where user_id =
'" . $userid . "' and `status` like 'Busy'");
$rows = mysql_num_rows($result);
if ($rows == 0) {
echo "No Call";
} else {

55

echo "Call";
}
mysql_close();
Android call receiver activity
private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {

HttpPosthttppost;
HttpResponse response;
HttpClienthttpclient;
List<NameValuePair>nameValuePairs;
String response2;

HttpPosthttpposta;

HttpResponseresponsea;
HttpClienthttpclienta;
List<NameValuePair>nameValuePairsa;
protected void onPreExecute (){

}
protected Void doInBackground(Void... voids) {

56

synchronized (this) {
try {
httpclient=new DefaultHttpClient();
httppost=

new

HttpPost("http://mrsvideocall.bugs3.com/Users.php");
nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new
BasicNameValuePair("userid",user_id));
nameValuePairs.add(new
BasicNameValuePair("respon","CallerType"));
httppost.setEntity(new
UrlEncodedFormEntity(nameValuePairs));
response=httpclient.execute(httppost);
ResponseHandler<String>responseHandler

new

BasicResponseHandler();
response2

httpclient.execute(httppost,

responseHandler);

httpclienta=new DefaultHttpClient();

httpposta=

new

HttpPost("http://mrsvideocall.bugs3.com/Users.php");
url is correct.

57

//

make

sure

the

//add your data


nameValuePairsa = new ArrayList<NameValuePair>(5);
// Always use the same variable name for posting
i.e the android side variable name and php side variable name should be
similar,
nameValuePairsa.add(new BasicNameValuePair("callername",""));
nameValuePairsa.add(new

BasicNameValuePair("userid",user_id));//

$Edittext_value = $_POST['Edittext_value'];
nameValuePairsa.add(new BasicNameValuePair("callertype",""));
nameValuePairsa.add(new BasicNameValuePair("stat","Busy1"));
nameValuePairsa.add(new BasicNameValuePair("respon","Update"));
httpposta.setEntity(new UrlEncodedFormEntity(nameValuePairsa));
//Execute
class="IL_AD">Post Request</span>
responsea=httpclienta.execute(httpposta);
} catch (Exception e) {
}
}
return null;

}
protected void onPostExecute(Void result){

58

HTTP

<span

id="IL_AD9"

soundPool.stop(soundID);
if(response2.equals("videochat")){
madialog.dismiss();
Intent intent = new Intent(DialogActivity.this,
MultipartyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("userId", user_id);
intent.putExtra("userName", name);
intent.putExtra("sessionId", sessionId);
intent.putExtra("token", token);
intent.putExtra("apikey", apikey);
startActivity(intent);
DialogActivity.this.finish();
}else if(response2.equals("videocall")){
madialog.dismiss();
Intent

intent

new

Intent(DialogActivity.this,

UIActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("userId", user_id);

59

intent.putExtra("userName", name);

intent.putExtra("sessionId", sessionId);
intent.putExtra("token", token);
intent.putExtra("apikey", apikey);

startActivity(intent);
DialogActivity.this.finish();

}
}
}

PHP call receiver


$userid = $_POST['userid'];
$username = $_POST['username'];
$password = $_POST['password'];
$stat = $_POST['stat'];
$email = $_POST['email'];
$respon = $_POST['respon'];

60

$result = mysql_query("select `status` from UserAccount where user_id =


'" . $userid . "' and `status` = 'Busy1'");
$rows = mysql_num_rows($result);
if ($rows == 0) {
echo "No Call";
} else {

echo "Call";
}
mysql_close();

Android Video Call Activity


loadInterface();

if (savedInstanceState == null) {
mFragmentTransaction = getFragmentManager().beginTransaction();
initSubscriberFragment();
initPublisherFragment();
initPublisherStatusFragment();
mFragmentTransaction.commitAllowingStateLoss();
}

61

mNotificationManager

(NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

sessionConnect();
}
///
public void loadInterface() {
setContentView(R.layout.layout_ui_activity);

mLoadingSub = (ProgressBar) findViewById(R.id.loadingSpinner);

mPublisherViewContainer

(RelativeLayout)

(RelativeLayout)

(RelativeLayout)

findViewById(R.id.publisherView);
mSubscriberViewContainer
findViewById(R.id.subscriberView);
mSubscriberAudioOnlyView
findViewById(R.id.audioOnlyView);

// Attach running video views


if (mPublisher != null) {

62

attachPublisherView(mPublisher);
}
// show subscriber status
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (mSubscriber != null) {
attachSubscriberView(mSubscriber);
if (mSubscriberVideoOnly) {
mSubscriber.getView().setVisibility(View.GONE);
setAudioOnlyView(true);
}
}
}
}, 0);
loadFragments();
}
///
public void loadFragments() {
// show subscriber status
mHandler.postDelayed(new Runnable() {

63

@Override
public void run() {
if (mSubscriber != null) {
mSubscriberFragment.showSubscriberWidget(true);
mSubscriberFragment.initSubscriberUI();
}
}
}, 0);
//
private void sessionConnect() {
if (mSession == null) {
mSession = new Session(this, apikey,
sessionId);
mSession.setSessionListener(this);
mSession.setArchiveListener(this);
mSession.setStreamPropertiesListener(this);
mSession.setPublisherListener(this);
mSession.connect(token);
}
}
Android Video Chat Activity

64

mSession = new MySession(this,apikey,sessionId,token);


//
publicMySession(Context context,Stringapikey, String sessionId, String
token) {
super(context, apikey ,sessionId);
this.apikey = apikey;
this.sessionId = sessionId;
this.token = token;
this.mContext = context;
}
//
@Override
protected void onStreamReceived(Stream stream) {
MySubscriber p = new MySubscriber(mContext, stream);

// we can use connection data to obtain each user id


p.setUserId(stream.getConnection().getData());

// Subscribe audio only if we have more than one player


if(mSubscribers.size() != 0) {
p.setSubscribeToVideo(false);

65

}
// Subscribe to this player
this.subscribe(p);
mSubscribers.add(p);
mSubscriberStream.put(stream, p);
mSubscriberConnection.put(stream.getConnection().getConnectionId(), p);
mPagerAdapter.notifyDataSetChanged();

presentText("\n" + p.getName() + " has joined the chat");


}
@Override
protected void onStreamDropped(Stream stream) {
MySubscriber p = mSubscriberStream.get(stream);
if (p != null) {
mSubscribers.remove(p);
mSubscriberStream.remove(stream);
mSubscriberConnection.remove(stream.getConnection().getConnectionId());
mPagerAdapter.notifyDataSetChanged();
presentText("\n" + p.getName() + " has left the chat");
}

USERS MANUAL
66

How to use the Application


GUIDES FOR IT AND NON IT USERS:
STEP 1:
o Click on the application ICON.
STEP 2:
o Register for account by clicking the REGISTER BUTTON

Figure 8: Register Interface


The figure shows the Registration graphical interface of the application
that lets the users Register their desired Account to use the application.

STEP 4:
o After registering, LOGIN the registered account information.

67

Figure 9: Login Interface


The figure shows the Login Graphical User Interface of the application
that lets the user Login their registered account.

STEP 5
o After LOGIN, the user selects who he/she wants to call.

68

Figure 10: Main Interface


The figure shows the Main Graphical User Interface of the application that lets
the users select contacts to call to.

STEP 6
o The user can select what he/she wants to do with the other user.

69

Figure 11: Options


The figure shows the Option Graphical User Interface of the application
that offers the users an option of actions to do.

SAMPLE INPUT AND OUTPUT

70

SAMPLE INPUT
1. LOGIN FUNCTION:

2. REGISTER FUNCTION

1. Options

71

2. File Transfer

3. Selecting File

72

4. Main Interface

OUTPUT USING THE VIDEO CHAT FUNCTION BETWEEN PAIR OF USERS:


USER 1:

73

Figure 12: Video Call (USER 1)


The figure shows the output of successive Video Chat Function of the
application.

USER 2:

74

Figure 13: Video Call (USER 2)


The figure shows the successive output of Video Chat Function of the
Application.

ESTABLISHING THE SERVER


Sample illustration about the Established Server

75

Figure 14: Established Server


The figure shows the information of the established server account.

CURRICULUM VITAE

76

Personal Background
Name

Eleojasmil J. Milagrosa

Address

Cabrillos St. ,Digos City

Birth Date

August 9, 1995

Civil Status

Single

Fathers Name

Leoncio C. Milagrosa

Mothers Name

Elena J. Milagrosa

Age

18 years old

Educational Background
Elementary
School

Congressman Erasmo R Cruz Memorial Central

High School

Panabo Christian School

College

Currently at CorJesu College of Digos City

Course

Bachelor of Science in Information Technology (BSIT)

77

Personal Background
Name

RandelKristoffer P. Sison

Address

1st Crumb St. Digos City

Birth Date

December 3, 1994

Civil Status

Married

Fathers Name

Randy C. Sison

Mothers Name

Cinderella P. Sison

Age

19 years old

Educational Background
Elementary

Digos City Central Elementary School

High School

Holy Cross Academy of Digos City

College

Currently at CorJesu College of Digos City

Course

Bachelor of Science in Information Technology (BSIT)

78

Personal Background
Name

Arvin Chum C. Rabanzo

Address

1st Crumb St.Ravina CompoundDigos City

Birth Date

January 27, 1994

Civil Status

Single

Fathers Name

Ernesto Jose O. Rabanzo

Mothers Name

Eva Rosario R. Pascua

Age

20 years old

Educational Background
Elementary

Digos City Central Elementary School

High School

Holy Cross Academy of Digos City

College

Currently at CorJesu College of Digos City

Course

Bachelor of Science in Information Technology (BSIT)

79

You might also like