Professional Documents
Culture Documents
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
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
Cite the challenges and difficulties to implementing the application with its
limitations and its benefits to users.
Describe how the application works high speed and stable internet connection.
Provide real-time communication using android phones with improved visual and
audio quality.
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
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
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).
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
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
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.
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
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
17
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
Database
USER 2
20
Login
Application
USER 1
Login Account
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
Recipient Session
Sessions and Token
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
Development Plan
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.
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
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
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.
USER
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
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
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
new
HttpPost("http://mrsvideocall.bugs3.com/Users.php");
//
39
//
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Execute HTTP <span id="IL_AD9" class="IL_AD">Post Request</span>
response=httpclient.execute(httppost);
$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,
41
Login In Android
httpclient=new DefaultHttpClient();
httppost=
new
HttpPost("http://mrsvideocall.bugs3.com/Users.php");
//
//
$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
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
'"
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);
}
returnjson;
}
@Override
protected void onPostExecute(JSONObjectjson) {
pDialog.dismiss();
try {
// Instantiate a GET HTTP method
try {
JSONArrayjArray = json.getJSONArray("posts");
46
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 Throwable t) {
}
}
}
48
$stat = $_POST['stat'];
$email = $_POST['email'];
$respon = $_POST['respon'];
}
}
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();
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);
51
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
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();
}
}
}
$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
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();
}
}
}
60
echo "Call";
}
mysql_close();
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);
mPublisherViewContainer
(RelativeLayout)
(RelativeLayout)
(RelativeLayout)
findViewById(R.id.publisherView);
mSubscriberViewContainer
findViewById(R.id.subscriberView);
mSubscriberAudioOnlyView
findViewById(R.id.audioOnlyView);
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
65
}
// Subscribe to this player
this.subscribe(p);
mSubscribers.add(p);
mSubscriberStream.put(stream, p);
mSubscriberConnection.put(stream.getConnection().getConnectionId(), p);
mPagerAdapter.notifyDataSetChanged();
USERS MANUAL
66
STEP 4:
o After registering, LOGIN the registered account information.
67
STEP 5
o After LOGIN, the user selects who he/she wants to call.
68
STEP 6
o The user can select what he/she wants to do with the other user.
69
70
SAMPLE INPUT
1. LOGIN FUNCTION:
2. REGISTER FUNCTION
1. Options
71
2. File Transfer
3. Selecting File
72
4. Main Interface
73
USER 2:
74
75
CURRICULUM VITAE
76
Personal Background
Name
Eleojasmil J. Milagrosa
Address
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
High School
College
Course
77
Personal Background
Name
RandelKristoffer P. Sison
Address
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
High School
College
Course
78
Personal Background
Name
Address
Birth Date
Civil Status
Single
Fathers Name
Mothers Name
Age
20 years old
Educational Background
Elementary
High School
College
Course
79