monitoring of user experience and interactions for mobile video streaming services-master thesis at...
DESCRIPTION
My master thesis at Communication System, KTH.With the growth of Mobile Internet traffic, specially the video traffic, the mobile operator need to invest more CAPEX and OPEX. But the actual pricing plans are dominated by flat rates, which tends to decrease the ARPU. In order to make the situation more sustainable, one possible solution is utilize the existence infrastructure more effectively, by knowing their usage and the behavior of the users.This master thesis focus on this last point. The author has implemented a monitor program for YouTube on Android that shows it is possible to monitor the user behavior in the mobile devices in background.Furthermore, all the data is saved in RDF format, which make it simple and very easy to be shared.In order to demonstrate the usage of the information obtained, 5 different scenarios are created. They are only few example of possible usage of data.Finally, in this master thesis, details of implementation such as the keyword used or the context information are described in the Appendixes.TRANSCRIPT
i
Monitoring of user experience and interactions for mobile video
streaming services
The first step to explore existing infrastructure more effectively
Jiahao Liu
Master’s thesis at Communication Systems
School of ICT
Stockholm, Sweden June 2011
Supervisor: Pietro Lungaro
Examiner: Zary Segall
ii
iii
Abstract
Mobile data traffic is expected to continue growing at an almost exponential rate in the next
five to ten years. Contributing to this trend are video streaming services, e.g. YouTube and
Netflix, which are currently consuming significant portions of the available bandwidth and are
likely to remain very popular services.
In order to meet future traffic demands, mobile operators can either continue with the current
approach consisting of proportionally increasing the infrastructure deployment, or adopting
some alternative and opportunistic paradigms for content delivery, capable of exploiting the
temporal and geographical traffic variations while optimizing the amount of resources invested
in content delivery.
While the former approach is likely to have only very limited economic feasibility, due to
substantial increases in OPEX and CAPEX, the latter is instead very promising but require
experimental validation and new software tools for performing more informed resource
allocation decisions. A series of initial experimental investigations have been performed within
the COSEM project to assess the feasibility of context-aware content pre-fetching in mobile
networks. The initial results showed that an unprecedented increase in user experience,
together with terminal energy cost reduction and increased network resource utilization can be
achieved with pre-fetching, provided that future content requests can be predicted with some
certain degrees of reliability.
In order to understand to what extent content can be predicted and how to utilize user context
information for increasing the reliability of the predictions, this project proposes an innovative
monitoring approach, in which a software application, running "on the background" of mobile
devices, is designed for collecting information on both the user context and her interactions
with the mobile device and the various running services."
The results show, with one of the methods chosen, for the YouTube application running in
Android System and without any direct interaction, 90.51% of the transition between states
and 95% of the internal states can be monitored. The 9.49% of the transition between states
that cannot be monitored corresponds to showing the keyboard on the screen, which has
minimal importance; the 5% of the non-monitored internal states corresponds to the change on
the settings of the application, which can be monitor with other methods.
Furthermore, in order to improve the universality of the information obtained, making it easily
shared between companies, all the data are saved in RDF format, which contains a uniform
resource identifier (URI) to make each resource unique in the world.
Keywords: Mobile data traffic, Mobile operator, video traffic on Internet, COSEM, YouTube,
Android, Monitor process, Resource Description Framework
iv
v
Acknowledgements
First of all, I want to thanks to my supervisor Pietro Lungaro, who has guided me during all the
process. Without him, this project won’t be possible. Secondly, I want to tanks to my examiner,
who has been reviewing this project in very important moments.
After them, I am very graceful with Cristobal Viedma, my friend and college of office for these 6
months. Thanks to his review, important issues of this project have been fixed.
I want to thanks to my friend Luis Martinez also, who has introduced me into the Communication
System and who has helped me to establish the first contact with my supervisor and my examiner.
For the part of RDF, I want to thanks especially to Wu Dan, who has reviewed the structure of RDF
database and who has given me her point of view.
My friends Paolo Pettinato, Urko Serrano and Thinh Lee, whom are also producing very good
project at the same time with me, were very helpful for very important moment.
Finally, I want to thanks to my family, my parents, my sister and specially my wife LiLiang Cheng
for their understanding and support.
Stockholm, June 2011
Jiahao Liu
vi
Table of contents
Abstract ii
Acknowledgment v
Table of contents vi
List of figures ix
List of tables xi
Glossary xii
1. Introduction 1
1.1 Background ..................................................................................................................... 1
1.1.1 The future tendency of Internet ............................................................................. 1
1.1.2 Main sources of video traffic on Internet ............................................................... 1
1.1.3 Internet video dissection ........................................................................................ 3
1.2 Problem description ......................................................................................................... 4
1.2.1 The actual mobile operator’s situation and future prediction .................................. 4
1.2.2 Possible solutions .................................................................................................. 5
1.3 Aims and goals ................................................................................................................ 6
1.4 Methodology ................................................................................................................... 6
1.5 Limitations ...................................................................................................................... 6
1.6 Project outline ................................................................................................................. 7
2. Problems description 9
3. Market study 11
3.1 Smart phone market ....................................................................................................... 11
3.2 Video sharing services ................................................................................................... 11
4. Software environment 13
4.1 Android System ............................................................................................................. 13
4.1.1 General view ....................................................................................................... 13
4.1.2 Components ........................................................................................................ 14
4.1.2.1 Activity .................................................................................................. 14
4.1.2.2 Service ................................................................................................... 14
4.1.2.3 Intents .................................................................................................... 15
4.1.2.4 Broadcast receiver .................................................................................. 15
4.1.2.5 Content providers ................................................................................... 15
4.1.3 Shared preferences .............................................................................................. 16
4.1.4 Android Manifest file .......................................................................................... 16
4.1.5 LogCats .............................................................................................................. 16
4.1.6 Sending and receiving messages in Android ........................................................ 16
4.2 Analysis of the YouTube application ............................................................................. 17
4.2.1 YouTube application s use cases ......................................................................... 17
4.2.2 YouTube application in detail ............................................................................. 19
4.2.2.1 Overview ............................................................................................... 19
4.2.2.2 Transition between states, general statuses, modes and invocation of
parallel actions........................................................................................ 20
4.2.2.2.1 General rules .............................................................................. 20
4.2.2.2.2 Transition between states............................................................ 20
4.2.2.2.3 Switch general statuses ............................................................... 24
4.2.2.2.4 Choose a mode ........................................................................... 24
vii
4.2.2.2.5 Invocation of parallel actions ...................................................... 24
4.3 Resource Description Framework .................................................................................. 25
5. Software Implementation 27
5.1 Tool utilized for the implementation .............................................................................. 27
5.2 Implementation .............................................................................................................. 27
5.2.1 Interface .............................................................................................................. 27
5.2.2 Application installed in the Android device ......................................................... 28
5.2.3 General overview ................................................................................................ 28
5.2.4 Running the program........................................................................................... 30
5.2.4.1 Starting the monitor process ................................................................... 30
5.2.4.2 On location changed ............................................................................... 30
5.2.4.3 Monitoring the user actions .................................................................... 31
5.2.4.4 Stopping the monitor process ................................................................. 31
5.2.5 The RDF database ............................................................................................... 32
6. Evaluation and analysis 33
6.1 Settings .......................................................................................................................... 33
6.2 Single state evaluation ................................................................................................... 33
6.2.1 Test implementation ............................................................................................ 33
6.2.2 Results and analysis ............................................................................................ 33
6.3 Complex states evaluation ............................................................................................. 34
6.3.1 Introduction ........................................................................................................ 34
6.3.2 Evaluation 1 – Play a video ................................................................................. 35
6.3.3 Evaluation 2 – Play a video extended .................................................................. 35
6.3.4 Evaluation 3 – Record and upload a video ........................................................... 36
6.3.5 Evaluation 4 – Search a video ............................................................................. 36
6.3.6 Evaluation 5 – Upload a video............................................................................. 37
6.3.7 Evaluation 6 – See the information about the user account .................................. 37
6.3.8 Evaluation 7 – See information about a video ...................................................... 38
6.3.9 Evaluation 8 – Rate a video ................................................................................. 38
6.3.10 Evaluation 9 – Read comments about a video .................................................... 39
6.3.11 Evaluation 10 – Set a video as favorite .............................................................. 39
6.3.12 Evaluation 11 – Set a video as “unfavorite” ....................................................... 40
6.3.13 Evaluation 12 – Share a video ........................................................................... 40
6.3.14 Evaluation 13 – Flag a video ............................................................................. 41
6.3.15 Evaluation 14 – Delete a video .......................................................................... 42
6.3.16 Evaluation 15 – Subscribe a channel ................................................................. 42
6.3.17 Evaluation 16 – Unsubscribe a channel ............................................................. 43
6.3.18 Evaluation 17 – Play more than one videos per time .......................................... 43
6.3.19 Evaluation 18 – Change the settings .................................................................. 44
6.3.20 General analysis of all complex evaluations ...................................................... 45
6.3 Conclusion .................................................................................................................... 45
7. Example of usage of the application 47
7.1 Introduction ................................................................................................................... 47
7.2 Scenario 1 - The relation between the data rate and the Quality of Experience ............... 47
7.3 Scenario 2 - Geographical usage and access to a concrete category ................................ 48
7.4 Scenario 3 – Better QoS for a concrete user ................................................................... 49
7.5 Scenario 4 – Probability of usage of YouTube through the day ...................................... 50
7.6 Scenario 5 – Prediction of the favorite videos of the user ............................................... 51
7.7 Conclusion .................................................................................................................... 53
viii
8. Conclusions and discussions 55
8.1 Goals and goals dissection ............................................................................................. 55
8.1.1 Video sharing program’s description and analysis ............................................... 55
8.1.2 User interaction monitoring ................................................................................. 55
8.1.3 Description of possible scenarios ........................................................................ 55
8.2 Contributions ................................................................................................................. 55
8.3 Discussions .................................................................................................................... 56
8.4 Conclusion .................................................................................................................... 56
8.5 Future works .................................................................................................................. 56
8.5.1 New version of YouTube .................................................................................... 56
8.5.2 Other video sharing programs ............................................................................. 56
8.5.3 RDF data analysis ............................................................................................... 57
Bibliography 59
Appendices 63
A Description of the YouTube Application s information 63
B Device information obtained 69
B.1 Device information obtained when the application starts monitoring process................. 69
B.1.1 Software information .......................................................................................... 69
B.1.2 Hardware information......................................................................................... 70
B.1.3 Language and country ........................................................................................ 71
B.1.4 Cell connected information ................................................................................. 71
B.1.5 Data connection .................................................................................................. 71
B.1.6 Mobile network information ............................................................................... 71
B.1.7 SIM – Subscriber Identity Module ...................................................................... 72
B.1.8 Screen information ............................................................................................. 73
B.1.9 General Network information ............................................................................. 74
B.1.10 Wireless network information ........................................................................... 74
B.2 Device state change monitor ......................................................................................... 76
B.2.1 Cell information ................................................................................................. 76
B.3 Additional information related with the device information obtained ............................. 76
B.3.1 Android system API Level Table ........................................................................ 76
C Keywords used to monitor logs 79
C.1. Keywords used to detect the states, general status, modes and parallel actions.............. 79
C.1.1 States .................................................................................................................. 79
C.1.2 General Statuses ................................................................................................. 92
C.1.3 Modes ................................................................................................................ 92
C.1.4 Parallel actions ................................................................................................... 93
C.2 Keywords used to detect internal states ......................................................................... 94
D Specific information obtained through logs 115
E Specification of the device utilized for the evaluation 140
ix
List of figures
1.1.1 Global consumer Internet Traffic. 2010 – 2015 ............................................................... 1
1.1.2.1 Peak period aggregate traffic composition – North America: fixed access ....................... 2
1.1.2.2 North America, fixed access, peak period, top applications in Downstream by Bytes ...... 3
1.1.3 Consumer Internet video. 2010 – 2015 ............................................................................ 3
1.2.1.1 Pricing models in US, UK, Singapore and Australia ........................................................ 4
1.2.1.2 The root challenge for the traditional telecommunication companies ............................... 5
3.1 Smart phone analysis. Quarterly shipment data. Q4 2010 .............................................. 11
4.1.1 Android software stack .................................................................................................. 13
4.2.1 Use cases of YouTube 1.6.20 (E) on Android System ................................................... 18
4.2.2.2.2 General state diagram for YouTube 1.6.20(E) on Android System ...........................22-23
4.3 Semantic web layer cake ............................................................................................... 25
5.2.1 The interface of YouTube monitor ................................................................................ 27
5.2.2 YouTube monitor application installed in Android System ............................................ 28
5.2.3 YouTube monitor program’s general overview ............................................................. 29
5.2.4.1 Starting the monitor process sequence diagram ............................................................. 30
5.2.4.2 On location changed sequence diagram ......................................................................... 30
5.2.4.3 Monitoring the user actions sequence diagram .............................................................. 31
5.2.4.4 Stopping the monitor process sequence diagram ............................................................ 31
6.2.2 Single state evaluation ................................................................................................... 33
6.3.2 Evaluation 1 – Play a video ........................................................................................... 35
6.3.3 Evaluation 2 – Play a video extended ............................................................................ 35
6.3.4 Evaluation 3 – Record and upload a video ..................................................................... 36
6.3.5 Evaluation 4 – Search a video ....................................................................................... 36
6.3.6 Evaluation 5 – Upload a video ....................................................................................... 37
6.3.7 Evaluation 6 – See the information about a user account ............................................... 38
6.3.8 Evaluation 7 – See information about a video ................................................................ 38
6.3.9 Evaluation 8 – Rate a video ........................................................................................... 39
6.3.10 Evaluation 9 – Read comments about a video ................................................................ 39
6.3.11 Evaluation 10 – Set a video as favorite .......................................................................... 40
6.3.12 Evaluation 11 – Set a favorite video as “unfavorite” ...................................................... 40
6.3.13 Evaluation 12 – Share a video ....................................................................................... 41
6.3.14 Evaluation 13 – Flag a video ......................................................................................... 41
6.3.15 Evaluation 14 – Delete a video ...................................................................................... 42
6.3.16 Evaluation 15 – Subscribe a channel ............................................................................. 43
6.3.17 Evaluation 16 – Unsubscribe a channel ......................................................................... 43
6.3.18 Evaluation 17 – Play more than one video per time ....................................................... 44
6.3.19 Evaluation 18 – Change the settings .............................................................................. 45
6.3.20 General analysis of all complex evaluations .................................................................. 45
7.2 Relation between data rate and QoE .............................................................................. 47
7.3 Video played in Kista since 2011.06.23.12.49 to 2011.06.23.12.50 ............................... 48
7.4 Video traffic of a concrete user from 2011.06.23.10.30 to 2011.06.23.11.30 ................. 50
7.5.1 Number of sessions per hour for a concrete user in one month....................................... 51
7.5.2 Probability of starts a session per hour for a specific user .............................................. 51
7.6.1 States where the video played comes from .................................................................... 52
x
7.6.2 States where the video played comes from – Percentages .............................................. 52
xi
List of tables
1.1.3 Consumer Internet video. 2010 – 2015 ............................................................................ 4
7.3 Video played in Kista since 2011.06.23.12.49 to 2011.06.23.12.50 ............................... 48
7.4 Video traffic of a concrete user from 2011.06.23.10.30 to 2011.06.23.11.30 ................. 50
xii
Glossary
Base station In wireless communication system, a base station is a wireless station installed in a
fixed location to communicate with the mobile devices such as mobile phones.
OPEX It stands for Operational Expenditure and it is the ongoing cost of running a product. In the
context of this project, OPEX is the cost for the mobile operators to maintain the existence
infrastructure.
CAPEX It stands for Capital Expenditure and it is the counterpart of OPEX. It is the expenditures
to create future benefits. In the context of this project, CAPEX is the inversion needed to create
infrastructure necessary to maintain the QoS and the QoE.
QoS The Quality of Service measures the capacity of the vendors to offer a concrete service. In the
context of video streaming service, it could be the level of acceptable defects on a service.
QoE The Quality of Experience used in this project refers mainly to the perception of the users
about the experience received with the mobile devices. In contrast with QoS, it is subject to the user
and different user can experiment different QoE in the same situation.
Exabytes It is a unit to measure the computer storage and it is equal to 1.000.000.000.000.000.000
Bytes.
Petabytes It is a unit to measure the computer storage and it is equal to 1.000.000.000.000.000
Bytes
CARG It stands for Compound annual growth rate and it measures the smoothed annualized gain of
an investment over a given time period.
Internet PVR It is one of the categories that Cisco has grouped the Internet video. It is the recorded
live TV content for late view.
Ambient video It is used to group one of the types of videos in Cisco predictions. It contains all the
persistent video streams such as pet cams, home security cams and nanny cams.
Average Revenue per User (ARPU) It is a term used for companies who offers subscriptions to
the users and it measures the revenue generated by one customer over the time, typically each
month or each year.
OMS It is a variant of Android system created for the Chinese market. It stands for Open Mobile
System and it is supported by the Chinese company China Mobile Ltd.
Tapas It is an OS derived by Android system launched by the ex-president of Google in China. It is
modified to support Chinese social networks, Chinese e-books and other services that are not
related with Google.
Device ID (IMEI for GSM phones and MEID for CDMA phones) IMEI stands for International
Mobile Equipment Identify and MEID stands for Mobile Equipment Identifier. Both of them are
usually unique to identify the mobile devices, but not subscribers. For example, IMEI is used to
reduce the effect of mobile phone theft, by stopping the mobile device with a stolen IMEI to access
to network.
xiii
Software fingerprint Generally, a device fingerprint contains compact information about the
hardware and the software. In the case of Android, it collects the software fingerprint which
uniquely identifies the software build.
Android ID It is a 64-bit number randomly generated when the Android devices is booted for the
first time. It should remain constant for the lifetime of the device.
URI Uniform Resource Identifier is a string of characters that enables the unique identification of a
resource on Internet. It could act as URL (Uniform Resource Locator), URN (Uniform Resource
Name) or as both. The URI is frequently used in markup languages such as HTML, XML or XLST
to point to other resources.
URL Uniform Resource Locator is a Uniform Resource Identifier that specifies the location of a
well-known resources and the mechanism to retrieve it. This is possible because the syntax specifies
a schema which could be used to identify the process method of the URL.
xiv
1
Chapter 1 Introduction
In this chapter, first of all, the future tendency of Internet and the main sources of video traffic on
Internet are presented, along with the actual situation of the mobile operators and the problems
that they are facing and possible solutions. Secondly, the aim and goals of this project will be
introduced. In order to achieve those aim and goals, a specific methodology is described. Finally,
the limitation of this project and its structure could be finding.
1.1 Background
1.1.1 The future tendency of Internet
Since Sir Tim Berners-lee invented the web on 1989, the traffic on internet has been growing.
Recently, the forecast published by Cisco shows the future tendency of traffic on Internet [22]. It
predicts that the global IP traffic will continue growing, reaching 966 Exabytes by the end of 2015.
Figure 1.1.1 Global consumer Internet traffic. 2010 – 2015. Source [22]
As the graph shown, the type of data which increase most is Internet video. The study of Cisco
point out that on 2010, the Global Internet video traffic has surpassed global file sharing. It wills
growth from 40 percent of consumer internet traffic in 2010 to reach approximately 62 percent of
global consumer traffic by 2015. That is, on 2015, the video traffic on internet will reach 33,620
PetaBytes per month, which means that the among of video that will across global IP networks
every second in 2015 would need 5 years to be watched.
Due to this huge growth, the following sections are going to focus on the video traffic on Internet.
First of all the main sources of video traffic on Internet is going to be analyzed.
1.1.2 Main sources of video traffic on Internet
Nowadays, with such big amount of data traffic on Internet, it could be hard to know the rank of
most accessed web pages on Internet with accuracy. Thanks to Alexa, a subsidiary company of
Amazon, this information is easily obtained and daily updated.
According to this global rank, YouTube is the thirst most popular web page globally, only behind
Google and Facebook. [19]
Created on February 2005 and acquired by Google Inc. on November 2006 [14], YouTube is a
worldwide service portal where the user can upload, share and watch videos.
2
Based on the official information on the web of YouTube, it is localized in 23 countries across 24
different languages, which make it receives 2 Billions of views a day and 24 hours of videos to be
uploaded to it every minute [32].
With such amount of traffic and such good position in Alexa rank, it seems YouTube is the most
important source of the video traffic on Internet. But Internet is a place where the things can change
very fast, looking at the best one at the present could not be enough, the potential to grow of its
competitors is also important.
In this sense, the “Global internet Phenomena Report: Spring 2011” provided by Sandvine advice
the reader to the rapid growth of Netflix. [26]
Netflix is an American provider of Video-on-demand Company in United States and Canada. It
provides both physical rental service (United States) and internet-based streaming service (United
States and Canada). By the year 2010, it has 19.7 millions of subscribed and a revenue of 2.16
billion. [24]
Figure 1.1.2.1 – Peak period aggregate traffic composition – North America: fixed access. Source
[26]
This graph of Peak period aggregate traffic composition in North America regarding the fixed
access shows the increase of the Real-time entertainment between 2009 (29.5%) and March 2011
(49.2%), which is almost 60%. Furthermore, Sandvine forecasts the Real-Time entertainment
category will represent 55-60% of peak aggregate traffic by the end of 2011.
3
Figure 1.1.2.2 – North America, fixed access, peak period, top applications in Downstream by
Bytes. Source [15]
The reason behind this heavy growth is the domination of Netflix in the video traffic market, which
represents 29.7% of peak downstream traffic in North America, as the figure 1.1.2.2 shows. This
peak downstream traffic makes possible Netflix becomes the largest source of Internet traffic
overall in North America. [26]
Once the two main sources of the actual video traffic on Internet are presented, the future tendency
of Internet video and its components will be analyzed.
1.1.3 Internet video dissection
In the same study provided by Cisco, the forecast of the Internet video between 2010 and 2015 is
also provided, which is extracted to build the graph and the table below [22]
Figure 1.1.3 – Consumer Internet video. 2010 – 2015. Source [22]
4
Consumer
Internet Video
2010 2011 2012 2013 2014 2015 CARG
2010-2015
Short form 697 931 1254 1665 2208 2978 34%
Long form 2936 4984 6932 9255 11980 15879 40%
Internet video
on TV
342 838 1626 2786 4165 5911 77%
Live internet TV 480 777 1185 1754 2477 3417 48%
Ambient video 93 258 521 860 1207 1523 75%
Internet PVR 40 78 134 237 387 581 71%
Mobile video 85 213 493 1028 1933 3333 108%
Total 4672 8079 12146 17583 24357 33620 48%
Table 1.1.3 – Consumer Internet video. 2010 – 2015. Source [22]
Based on such study, the Internet video traffic will have a compound annual growth rate (CAGR) of
48% since 2010 to 2015, which will growth from 4672 PetaBytes on 2010 to 33620 PetaBytes on
2015 (719%). Among them, the one which has the highest CAGR value is the mobile video, which
wills growth from 85 PetaBytes on 2010 to 3333 PetaBytes on 2015. By the end of 2015, the Cisco
study predicts that the mobile video traffic will surpass Internet PVR, Ambient video, short form
and it will be almost the same as live internet to TV.
With such among of traffic within 5 years, are the mobile operators prepared for it? The next
section will analyze the actual situation of the mobile operators and the problems that they are
facing.
1.2 Problem description
1.2.1 The actual mobile operator’s situation and future prediction
Figure 1.2.1.1 - Pricing models in US, UK, Singapore and Australia. Source [18]
The graph above shows the actual pricing models (March 2011) in US, UK, Singapore and
Australia. [18] It groups the price model of those four country in “Per MB”, which means the final
price depending on the traffic used; “< 5GB”(per month), a flat fee with a limitation less than 5GB
of data traffic per month, and “>5GB” (per month), a flat fee with limitation more than 5GB of data
traffic per month.
It is very clear that in all those countries, the flat fee with a limitation more than 5GB is the price
model which dominates the market. This is especially clear in US, where 84% of the user has a
relatively unrestricted price model.
5
The flat fee was introduced to make the mobile data prices more attractive for the users, who can
easily translate their behavior from the computer to mobile devices. It has advantages and
disadvantages. At the same time that the mobile operators are gaining more users, the flat rate could
become a problem because it decreases the Average Revenue per User (ARPU) and increase the
data traffic. This is, by one hand, the incoming of the mobile operators will be decreased and by
another hand, the mobile operators are forced to make more investment in CAPEX and OPEX if
they want to maintain the actual level of QoE and QoS.
Figure 1.2.1.2 – The root challenge for the traditional telecommunication companies. Source [17]
The graph above shows that, once the data traffic exceeds the voice traffic, the actual situation can
greatly influence the revenue of the mobile operators, making the traffic growth not anymore
correlated with revenue growth.
With such big problems, the mobile operators should find solutions to make the situation more
sustainable.
1.2.2 Possible solutions
The easiest solution could be the end of the flat rates.
In June of 2010, AT&T signaled the end of flat-rate data tariffs for iPhone users in United States.
Instead, a model where owners could be up to 2 gigabytes of data per month on standard contracts
will be used. [2]
Also in United States, Verizon Wireless is going to charge new users by how much data they
consume in July 2011, finalizing the end of all-you-can-eat mobile Internet plans. [3]
However, because the contract that the final users have signed has a concrete duration of services,
until it get expires, this solution won’t be effective. Meanwhile better solution should be proposed.
A good solution could act both preventing the rapid growth of traffic cost and increasing the value
or the revenue of the mobile operators [17].
For the first part of the solution, prevent the rapid growth of traffic cost, the mobile operators could
try to manage the resources more efficiently, share infrastructures and making more efficient
deployment. To reach the aim of increase the revenues, the mobile operators could try to exploit
existing infrastructure more effectively and improve the user experience, for example by extending
the battery life of mobile devices [17].
6
1.3 Aims and goals
Because the long time required and wide knowledge needed to finish all the smaller solutions, this
project is going to focus one of them: exploit existing infrastructure more effectively.
Mainly, this solution requires two types of information at the same time: The utilization level of the
existing infrastructures and how they are going to be explored (User behavior)
From the point of view of the mobile operators, the first type of information is not so hard to know
because the infrastructure is under their control. The hardest part to more efficiently exploit the
existing infrastructure is to know the user behavior, which represents a constant destination of data
that is always moving.
Because the preferences and the needs of each person are not equal, this movement could be viewed
as a constant challenge for the mobile operators to drive correctly the traffic to the right
infrastructure when it is needed.
Fortunately, the human behavior is predictable, by knowing the previous actions of a specific user,
her future behavior could be determined with a certain level of probability.
Driven by this idea, the aim of this project is to build a program to explore the possibility to monitor
the user behavior with a video sharing program through a mobile device already on the market. In
order to fulfill this aim, several goals are set:
Describe and analyze the behavior of a video sharing program running in a mobile device
already on the market.
Utilize the tools available to monitor the interaction of the user with the program.
Describe different scenarios where the data obtained could be useful.
1.4 Methodology
In order to fulfill the aims and the goals described in the previous section, this project has been
developed following a specific methodology.
First of all, because the large number of types of platforms and video sharing programs, a market
study should be done. In this market study, a concrete mobile device platform and a concrete video
sharing program should be chosen.
Once it is done, in order to make the results of monitor available for most of the customers and
make it easy sharable, a lecture review has been carried to choose the best data representation
format. After it, the device platform and the video sharing program are analyzed in detail to explore
all the monitoring possibilities and capture as much action as possible.
All those knowledge are utilized in the next step, where a prototype which runs in the chosen
platform has been implemented. Finally, an extent evaluation has been done running the prototype
in order to test the accuracy.
1.5 Limitations
The time constraint (20 weeks) has determined most part of the limitations of this project.
First of all, as the section 3.1 has demonstrated, there are several platforms in the market.
Developing an application on all them could be possible but it requires time. Thus, only the best of
them will be used. Through the study done by Canalys [20], It seems Google based platforms
7
(Android, OMS, and Tapas) dominate the market. Among them, a specific version of Android (2.1)
has been chosen.
In the section 3.2 of the same chapter, YouTube application has been chosen to be monitored. In
this sense, because different version of YouTube application could behave differently, only the
version 1.6.20 (E) has been analyzed and monitored.
There is also a limitation of the monitor process utilized. There could be several ways to monitor an
application on Android. The one utilized is based on Logs generated by the application, which
cannot monitor all the user actions. Other methods could be utilized in combination with this
methods in order to achieve 100% of user actions monitored, but it will requires more time.
Finally, more extend evaluation could be done. At time of writing this project, hundred mobile
devices compatible with Android has been released. [23, 29] Testing the monitor application on all
them by utilizing tools as TestDroid could prove that the monitor application work for all the
Android devices, but it will take long time and a lot of resources.
1.6 Project outline
In the following sections, the author is going to explain the possible problems that this project could
help to answer in the section 2. After it, the first step of the methodology which is market study will
be presented in the section 3. The software environment, both YouTube application and Android
system will be introduced in section 4. Lately, in section 5, the author is going to explain the
functions of YouTube Monitor program implemented, its interface, the general overview, the design
of the database and the internal actions when the user runs the program.
In the section 6, the author has designed a single test and 18 sets of more complex test in order to
evaluate the monitor capacity of the program. The potential and the scenario where this program
can be used are shown as example in section 7. Finally, in section 8, the author is going to do a
review of the goals and objectives proposed, a discussion about the actual state of the program, as
well as the future works. The conclusion, which summarizes the entire project, is also shown in this
section.
8
9
Chapter 2 Problems description
This chapter is going to introduce several set of questions describing the problems that the
researchers could have and this project could help to solve.
In section 1.2.2 the author has point out that the efficiently use of the actual infrastructure could be
part of the solution for the mobile operators to gain more revenue. By knowing the resources
available and the user s behavior, the data traffic could be driven to be present in the right moment
and right place, because the context is shifted on time and place. [4, 5, 6, 7, 8, 9, 10, 13]
However there are still questions that should be answered:
The first and the most general set of questions could be related with how to monitor user
interactions with video. Currently there are several platforms which allow users to watch videos via
streaming, and there are several applications that allow user access to videos on Internet which can
behave in very different ways. The problems are, with such number of different platforms and
applications, how to monitor them? Is there a way to do it which is completely transparent to the
users? In such case, are all the interactions of the user monitored?
The second set of questions is about how to map QoS and QoE. Because video streaming on
Internet represents a long duration and time sensitive traffic, at what data rate the user will watch
completely most of the videos? At what data rate the user will watch less than half of the videos?
The thirst set of questions are about the habits of the users. Regarding the place, the question could
be what percentages of user watch the videos while they are traveling and what percentage of they
watch the video while they stay in the same place for long time. And regarding the time, the
question could be what percentage of they watch the videos always at the same time and what
percentage of they watch the videos at different times.
Once we know the habits of the users, the next set are about the level of prediction of the users. Is it
possible to predict the user behavior in the future? Are the predictions reliable? For a given user, Is
there any place or/and any time this user is more likely to request the videos? What is the possibility
to predict the place and the time of request of next video?
If the set of the questions above are answered, the mobile operators could start pre-fetching the
videos in the base stations where the user usually connects, in the user mobile devices or in both of
them. Then, the next set of questions is for an individual user or for a group of users, what are the
gains? Is she/they experimenting better quality of service and quality of experience? Are the quality
of service and the quality of experience good enough for her/them?
10
11
Chapter 3 Market study
This chapter describes the first step of the methodology utilized, which is market study. It has two
parts: The first one is about the analysis of the smart phone market and the second one is about the
logic behind when a specific application is chosen.
3.1 Smart phone market
Since the introduction of the concept of smart phone with IBM Simon on 1992 [30], the market of
smart phones has been growing with platforms such as Symbian, Palm, Windows, Blackberry,
Apple’s iPhone or Android.
Based on the market study published by Canalys on January of 2011, Google dominates the market
of smart phone shipment on the fourth quarter of 2010 with 32.9% of market share, while the
market share of Nokia and Apple are 30.6% and 16.0% respectively. [21] This study highlights the
shipment of Google phones (Android, OMS and Tapas) in the fourth quarter of 2010 are 33.3
millions, which represents a growth of 615.1% regarding the same period on 2009.
Figure 3.1 – Smart phone analysis. Quarterly shipment data. Q4 2010. Source [21]
For this reason Google based platform has been chosen to implement the video sharing monitor
program and among them, Android system.
3.2 Video sharing services
By the video-sharing services side, the section 1.1.2 has shown that YouTube is the biggest video
traffic source worldwide and Netflix has very good potential to compete with it, both options could
be valid.
When the author started the project, on January 2011, there was not program that enable the
possibility to access the film database of Netflix through Android System. The actual program was
launched on 12th of May, 2011 [25]. This means there were no better options than YouTube. So,
YouTube application for Android system was chosen to be monitored.
12
13
Chapter 4 Software environment
In this chapter the software environment is presented. First, the description of platform chosen and
most part of the components utilized in the implementation are introduced. Lately, the YouTube
application which should be monitored is analyzed, both with use cases and with detailed state
charts. Finally, RDF, the data representation format which the result will be presented is analyzed.
4.1 Android system
4.1.1 General view
Android is a software stack for mobile service that includes an operation system, middleware and
key applications [28]. The development and the release are supported by the Open Handset Alliance,
which is composed by 81 technology and mobile companies, from semiconductor companies,
handset manufacturers to software companies, mobile operators and commercialization companies.
The follow picture shows the Android architecture:
Figure 4.1.1 – Android software stack. Source [20]
The applications which run in Android use Java as main language and XML (eXtensible Markup
Language) to build the user interface. With proper user permission and by using the application
framework, any application running in Android can take advantage of the device hardware, access
location information, run backgrounds services, set notification status bar, etc.
Other important features of Android is every Android application runs in its own process, which
guarantee the isolation from other applications. This is possible using the Android’s own virtual
machine called Dalvik Virtual Machine, which unlike the Java Virtual Machine, is register-based.
14
This feature makes the Android’s Virtual Machine more efficient [16], enable the possibility to run
several Virtual Machines at the same time in the mobile phone.
4.1.2 Components
The android applications are building basically by components; each one represents an entry point
through which the system can enter the application. Each one of them exists by its own and plays an
essential role.
There are four different types of application component: Activities, which is what the user see in the
screen; Services, which runs in the background; Broadcast receivers, which receive the intents and
Content provide, which provide data for the applications. The application built for this thesis is
based on the first three components.
4.1.2.1 Activity
The activity is one of the most important components in Android. It is prepared to be shown to the
user and normally it is related with a user interface file written in XML. The user can specify the
interface using the XML files and show it with the proper Java code.
In the program made for this project, there is only one activity which the user can decide to start the
monitor process, stop it or finish the actual activity.
4.1.2.2 Service
Unlike activities in Android, services run silently in background.
The priority set in Android regarding the services is the services have lower priority than an active
activity but higher than an inactive activity. Because this, it is perfect bind them to the application's
component and make the application continue runs and responses the user's action in the
background.
There are two types of the services: Bounded service and Started service. The main characteristics
of a bounded service are:
• This service will be created when some component bind it.
• Multiple components can bind the service at once.
• When no component is binding a service, this service will be destroyed automatically.
• It is possible to provide a client-server interface.
The main characteristics of a started service are:
• This service will be created when some component start it explicitly.
• The service will run almost indefinitely, even when the component which has started it has
been destroyed. So, it is useful when not result is required.
• To stop this service, a component could use the stop method or the service itself could stop
itself when it considers the goal for which the service has been created has been reached.
It is important to clarify all the started service could be also bound. This is, the combination of both
type is possible: A service can be started first and then bind it or it can be bind first and later be
started.
In the extremely low memory case, the service could be killed. But the system will try to restart it
again as soon as it has enough memory.
15
There are two services running in the code made for this thesis: DeviceStateServices which monitor
the general state of the device and GeneralService, which is responsible of monitor the YouTube
application user’s actions. Both services are started service.
4.1.2.3 Intents
Before explain the broadcast receiver, the intents should be described because basically broadcast
receiver is a class which receive the intents and process it.
The Intents is an abstraction description of operations which are used in Android to perform a
concrete one. [11] It contains two primary attributes: action and data. The action attributes contains
information about the general operation to be performed. There is several actions existence in
Android such as ACTION_VIEW to obtain information or ACTION_DIAL to display the phone
dialer. The coder can also set her own actions. The data attributes contains data which is used to
operate in the operation, which is expressed in URI format.
In addition to the primary field, several secondary attributes such as category or type can be used.
The most practical part of the Intents is they have a secondary field called “extras”. With the
method putExtra(), any basic data type such as Boolean or String could be added to intent and being
exchanged between processes.
In the monitor application, the author has created intents with a unique action in Android System,
which are utilized to send the RDF data to the broadcast receiver to be lately saved in the database.
4.1.2.4 Broadcast receiver
From the point of view of the order of intent processing, there are two types of the broadcast
receivers in Android: Normal broadcast receivers, which run in an undefined order, and ordered
broadcasts, which the order of processing could be controlled with the android:priority attribute of
the matching intent filter.
The broadcast receiver only contains a method called onReceive() and it is only alive when this
method is called. When this method finished, the system considers the receiver to be finished.
The broadcast received is used in the monitor program made for this thesis in order to receive
intents that contain the RDF data to be saved in the database. This makes the code more flexible
because as long as any java class has the variable “context”, which contains the context of the
program, it can send the intent with the RDF data to save it in the database.
4.1.2.5 Content providers
In Android, the persistent data is saved using three types of resources: Shared preferences, SQLite
database and Content Provider.
Shared preference is explained in the section 4.1.3.
SQLite database is the default relational database that comes with Android. By default, the database
is a sandbox. This means its content is only available for the application which has created it. [11]
This can be changed using the Content provider, which enable the content available to be shared.
Once the default SQLite database is turned to Content provider, any application which has proper
permission can add, modify and remove the contents.
Because there is no need to share the content of the monitor program’s data, the SQLite database
where the information is saved, hasn’t been turned into the Content provider.
16
4.1.3 Shared preferences
Shared preference is the way recommended to save the UI state, user preferences and application
settings in Android System.[11] It utilizes the key/value system to save/retrieve data. This is, every
single data will have a key which is unique in the shared preferences. By using this key, the value
saved previously, even the application has been killed and restarted again, will be restored. In case
the value required is not set yet, a default value will be returned.
In the YouTube monitor application, the shared preference is used mainly to save the unique id of
the mobile device and the previous state reached.
4.1.4 Android Manifest file
The Android Manifest file is an XML file presented in the root directory of any Android program
which contains all the essential information about the application. Those information could be the
java package name which serves as a unique identifier for the application, the description of the
components of the application (Activities, Services, Broadcast receivers, contents providers), the
permission required to run the application, the minimum level of API that the application requires,
(See appendix B.3.1) etc. It is unique in the application and it should be present since the beginning
because it indicates the activity of the application which should be run when the application starts.
4.1.5 LogCats
LogCats is the method used on Android based devices to show messages or logs which is similar to
the sentence System.out.print() of Java. To invoke it, the coders can write the print code in any
place of the existence code. It is important to mention that those messages or logs can be captured
and handled by any program running in Android, because it is the base of the program implemented
for this project.
There are 7 types of logs: Verbose, Debug, Information, Warning, Error, Fatal and Silent.
All they have different order of importance and they are sorted by it. The Verbose is the less
important one, and Silent is the most important one. In fact, Silent is so restrictive that nothing will
be displayed.
The general pattern to invoke the logs is using the function Log and then the first character of the
type of the log. It requires at least two arguments: Tag and Message. Tag is used to classified the
log and message is the information which the coder what to display.
In Android, there are three buffers where the logs are stored: Main, which is the default buffer and
where most of the logs are; Events, where all the events-related logs are stored and radio, where all
the radio/telephony related logs are stored.
4.1.6 Sending and receiving messages in Android
Beside the broadcast receiver, the other way to communicate in Android is using Messages and
Handlers. The main difference between the broadcast receiver method and the sending and
receiving message method is, in the second method, the receiver is known forehand, which is set
when the message is sent.
This receiver has to implement the method called handler. The handler is the process which
repeatedly checks the content of the message queue and filters the message which has itself as
receiver. Because of this loop, when the handler is not implemented in the activity, it should be
implemented in another thread.
17
In the program implemented for this thesis, the messages are used to evaluate the transition between
states. Although the main log buffer used for it is the Events, sometime it is not enough. In order to
monitor also the logs from the Main log buffer, expecting some specific log to appears, a special
class WatchDogPack is implemented. Basically, with this class, the application can add and remove
Watchdogs dynamically, when the application is running. If a Watchdog found a log which match
with the characteristics set, it will send a message to the handler then the application could act
depending on the message.
Once the main characteristics of Android System are presented, the author is going to explain how
the specific version of YouTube application in Android System works.
4.2 Analysis of the YouTube application
In this section, first the author is going to show all the case studies and then, explain all the states,
statuses, modes and parallel actions.
The version of YouTube application analyzed is 1.6.20 (E) which runs from the version 2.1 of
Android O.S. or later.
4.2.1. YouTube application use cases
The follow chart shows the use cases of the YouTube application:
18
Figure 4.2.1 – Use cases of YouTube 1.6.20(E) on Android System
The main functions of YouTube application on Android are manage videos, handler a video while it
is playing, manage a channel, manage the user account, get information and change settings.
19
To manage an application, the user can record and upload a video, or upload a video already exists
in the Android device, search for a video, play a video, share a video, set a video as favorite, set a
video as unfavorite, flag a video as inappropriate, rate a video from 1 start to 5 starts or delete a
video which has been uploaded by the user.
While a video is playing, the user can pause the video, play the video, backward/forward a video,
set the quality of the video (HD on/off), change the scroll of the video or see the captions of a video,
if any.
In the YouTube application, any user is at the same time a channel that other users can subscribe. A
user can also decide to stop subscribing a channel in any moment.
YouTube application works with two modes: logged in and logged out. When the user is logged in,
she can perform all the actions that are possible when the user is logged out, and she has also
opportunities to perform other specific actions.
Another function that the YouTube application has is to obtain information. They could be
information about a video, about the user account, about the channel or about a playlist. Other
information that are possible to obtain are the comment from other users about a specific video, the
list of the favorite videos of the user, the list of subscribed channels, the videos of a specific playlist,
the list of the videos uploaded by the user and the list of the categories set by YouTube.
Finally, the user is allowed to change several settings for the YouTube program.
4.2.2. YouTube application in detail
4.2.2.1 Overview
In total, YouTube application has 44 states, 2 general statuses, 2 modes and 2 parallel actions.
The states are composed by each one of the screens shown in the application and the moment when
the application is looking for a video in the server except the state 6, Start searching, which doesn’t
have any screen representation.
The general statuses are Launched and Finished, which indicates if the YouTube application has
been launched or it has been killed by Android System.
At the same time, YouTube application can works in both logged in mode or logged out mode. The
logged out mode are contained inside the logged in mode in sense that all the states of logged out
mode are also reachable from the logged in mode.
Finally, there are two parallels actions. They are actions that the YouTube application creates when
it has to upload a video to the YouTube server. They are necessary because they are running in
background, which enable the possibility for YouTube application to be running at the foreground,
being responsive for the actions of the users.
The first one corresponds to the action when the YouTube application is uploading a video recently
recorded and the second one corresponds to the action when the YouTube application is uploading a
video existence in the mobile device.
In appendix A there is a short description of each one of the states, general statuses, modes, as well
as the parallel actions.
20
4.2.2.2 Transition between states, general statuses, modes and the invocation of parallel
actions
4.2.2.2.1 General rules
In any Android device, the requirement states that the manufacturers must implement at least four
buttons: Home, menu, back and search [12]. The behavior of them should be the same for all the
applications. Basically the home button makes the device shows the home screen, the menu buttons
make appears the menu and it is context dependent, the back buttons make the application go to the
last state and the search buttons open a keyboard where the user can enter any keyword and look for
any information related to that keyword.
If the user presses the buttons and hold down them 1 or 2 seconds, a new action could be performed:
with the home button, the recently used applications (at most 6) will appear; with the menu button,
a keyboard will appears where the user can enter any keyword and make search within the phone.
Finally, with the search button, the voice search will be launched.
The existence of those buttons enables the possibility to the users to come back to the previous state
in any moment (Except the state 6. Start searching) by pressing the physical back button or go to the
home screen (exiting any application) in any moment by using the physical home button.
All the Android system supports the utilization of the touch screen. [28]. This enable the possibility
to implement the virtual buttons or buttons which will appears on the screen according the user
interface implemented. If the user press on the screen where the buttons are, her action will be
captured and the system will act as if the user has press on a physical button.
With the use of touch screen, the user also has the possibility to hold down the finger pressed on the
screen. This could enable the context menu, which displays a list of possible actions. As the
physical buttons, in YouTube application, the virtual buttons are also used both to make the
transition between the states and to trigger an internal state.
4.2.2.2.2 Transition between states
21
[White page left intentionally]
22
23
24
Figure 4.2.2.2.2 – General state diagram for YouTube 1.6.20(E) on Android System. Figure
available on http://www.jiahaoliuliu.com/2011/06/master-thesis-youtube-state-chart.html
In the State chart above, all the possible transition between the states are captured, as well as all the
internal states possible. In order to simplify the chart, some transition between the states is shown
inside the source state.
Also for simplification, the state 1, Main screen, is shown as also final state. This is, when the user
has finished the actions to perform, she can come back to the first state to perform other actions.
The other possibility while the user is performing an action is decided to not continue with such
action planned and come back to the final state. In this sense, the user can both come back to the
first state and press repeatedly on the physical back button, which the user can do in any state or
press on the virtual home button which will appear if the user presses on the physical menu button.
Because the existence of the physical home button, the user can exists the application in any
moment by press on it. In order to make the state chart more understandable, this transition is not
shown in the state diagram.
Another thing to take account is there are two groups of states which are context dependent. The
first group is because they invoke a call to other application, which depending on the applications
installed in the system and the system configuration, could trigger an external application. Because
the existence of the applications for Android is constantly changing, there is no way to know which
application will be triggered when a call is made. This makes impossible to monitor the behavior of
them.
They states of this first group are:
• 2. Start recording video
• 3. Video recording finished
• 17. Upload video
• 43. Share a video
• 44. Flag a video No internal state can be described for them.
The second group is because they are depending on the system configuration. In this group there is
only one state: 5 Showing keyboard. This state depends on the locale configuration of each machine
(The language and the region set on the phone) and also the preference of the manufacturers,
because they have the right to modify it to adapt Android System to their preferences. Due this
flexibility, this state cannot be monitored easily and it is considered as context dependent.
4.2.2.2.3 Switch General statuses
For the generation between the general statuses, because there are only two statuses, launched and
finished, a cycle is used. The YouTube application only can go to the status Launched when it is in
the status Finished, and vice versa.
4.2.2.2.4 Choose a mode
The transition between the two modes, logged in and Logged out, are also cyclic. The user only can
go to the mode Logged in when she is logged out and vice versa.
4.2.2.2.5 Invocation of parallel actions
Finally, to invoke the parallel actions, specific state of YouTube application should be reached. To
invoke the parallel action “Start uploading video recorded”, the state “4. Fill information about a
25
video recorded” should be reached first. Then if the user fulfill all the compulsory data and press on
the “Upload” button, this action will be invoked, running in background, while the YouTube
application goes to the state 1, Main screen.
The invocation of the parallel action “Start uploading video” is almost the same as the action “Start
uploading video recorded”; the unique difference is it should be invoked in the state “18. Fill
information about a video uploaded”.
4.3 Resource Description Framework
Resource Description Framework (RDF) is a simple data model for writing down relations, which
forms part of the semantic web layer cake.
Figure 4.3 - Semantic web layer cake. Source [27]
Designed for knowledge representation, it is the standard model indicated by W3C consortium for
data interchange on the Web [31].
There are two main characteristics which make RDF a good standard model: its simplicity and its
universality.
The first characteristic is because all the knowledge is discomposed into triples: subject, predicate
and object. The subject is the one which do the action, the predicate is the action itself and the
object is the one which receive the action. For example, a simple knowledge could be “John has
mother Susan”. In this case, “John” is the subject, “hasMother” is the predicate and “Susan” is the
object.
This simplicity doesn’t mean RDF is incomplete. One of the advantages of RDF lies on the
invisible links that put the RDF together. Because the RDF data components could be any word, the
object in a RDF data could be also the subject of another RDF data. Thus, one by one, all the RDF
data could be interconnected if there is any relation between them, creating a more complex
structure.
The second characteristic, the universality, is possible by using URIs as global name, which
guarantees no name collision will be produced between RDF knowledge. Because URI is only a
string of characters, infinite URIs could be created based on any URI. This means, by having the
26
control of a URI such as URL, anyone can create an infinite number of URIs for her purpose
without worry about the existence of the same URI created by others.
For example, in this project, all the RDF data contains the URL of the project COSEM which this
project forms part. This is, by knowing that the URL
http://www.wireless.kth.se/research/projects/69-cosem is unique in the world and it is controlled by
COSEM project, concatenating information after this URL and use them as part of RDF data saved
in the database, the universality of the data will be guaranteed.
As directly consequence of the universality, if the same URI is found in the components of different
RDF data, they are considering the same. This consequence is very important because it allows
different parties create different RDF knowledge about the same object without interference
between them and making sure that their data will be easily merged only by according on the URI
utilized. This is the reason of why RDF is highly scalable.
Because of this, RDF is very useful for this project. When the database is created, the monitor
program will create a URI with the information of the mobile device where the program is running
as the root of the RDF structure. This URI is unique in the world and each time this URI is created
on the same mobile device, they will be the same.
Lately, this database could be extracted to be merged into a bigger database. By having this unique
URI, in this bigger database, the monitoring information obtained from different mobile devices can
be merged easily, creating historical monitor information of each mobile device separately by
grouping them by the root of the RDF structure.
27
Chapter 5 Software implementation
The thirst step of the methodology will be presented in this chapter. It starts describing the tools
utilized for the implementation, followed by the description in detail of the implementation. In this
description, the interface and description of the application installed on Android will be presented
first. Secondly a general overview of the flow of the data will be introduced. After it, the internal
data flow will be described supported by several sequence diagrams. Finally, the RDF database
utilized will be described.
5.1 Tool utilized for the implementation
For the implementation of the program, several tools are utilized.
First of all, eclipse was a utilized as the IDE (Integrated development environment) because it is the
unique IDE that works with the plug-in provided by Google to develop Android applications. The
version utilized is 3.6 (Helios). Secondly, the Android SDK was necessary to code for any program
for Android system.
The debug and evaluation process was possible utilizing a read device (HTC Hero, see specification
sin Appendix E) and LogCat viewer in eclipse that comes with Android SDK.
Finally, the use of ADB (Android Debug Bridge) makes possible direct communication with the
device through the terminal.
5.2 Implementation
5.2.1 Interface
Figure 5.2.1 – The interface of YouTube Monitor
The interface of the program has been designed as simple as possible. It contains three buttons:
“Start monitoring”, “Stop monitoring” and “Exit”.
As the names could suggest, the button “Start monitoring” is used to start the monitoring process,
the button “Stop monitoring” is used to stop the monitoring process and the button “Exit” is used to
exit the application.
There are several concepts for the interface that should be clarified:
The monitoring process is a simple process. It only has two states: Started or stopped. This means if
the user has already started the monitoring process, it cannot start it again. Not two monitoring
28
processes will be running in parallel. By other side, if the monitoring process has been stopped,
there is no way to stopped it again.
Because the monitoring process runs in background, even when the user has exited the application,
it will continue running until the user press the “Stop monitoring” button or the background process
has been killed by Android by other reasons.
5.2.2 Application installed in the Android device
Figure 5.2.2 – YouTube monitor application installed in Android 2.1
The Android device has a default application manager, which could be used to check the
application’s status, or uninstall them. The figures below show the YouTube Monitor application
information in the application manager:
As the figure shown, the application uses 292 KB of the space. Notices this is the space used when
no data has been generated. This means the application has recently installed and it hasn’t started
collecting information yet.
The figure also shows the permissions required by the application. It requires the user location
permission, the phone state and identity permission, the network communication permission and the
system log files permission.
The first three permissions are used by the Device state service to obtain the device information and
monitor the user location. The last permission is used by the General Service to monitor the
YouTube user actions.
5.2.3 General Overview
29
Here is the general schema about how the monitor application works:
Figure 5.2.3 – YouTube monitor program’s general overview
Basically the monitor application has one Activity and two services. The activity is used to start and
stop the services, which is shown as interface in the previous section, while the services are used to
obtain the information in background.
There are two different services: the device state service and the general service.
The device state service obtains most of the information about the device at the beginning of the
YouTube monitor program, when the user starts all the services. There is specific information, Cell
id and Cell latitude, which shows the base station that the mobile device is connected, which is
updated when any change of them occurs.
All the possible information that can be obtained is shown in the appendix B. Among them, the
most important information is:
• The phone number
• The software fingerprint
• The android ID
• The device ID They are unique data for any device. In the database they are utilized to make an entrance of RDF
data unique in the world.
The second service is called General Service and it is used to monitor the user actions. It utilizes the
logs generated by the events buffer to identify the actual state of the YouTube Applications. That is,
each time a new event log is generated, the Event Log Handler thread created by General Service
will analyze the event log to see if it contains any keyword that matches with a new state, mode,
general status or parallel action. If the answer is affirmative, the Event Log Handler will notify it to
the YouTube Log handler and the Background log handler, then all they will analyze the logs
corresponding to a specific buffer in order to get and save useful data. All the keywords are shown
in the appendix C.
30
The process of saving database utilizes first a broadcast receiver which receive the intent that could
come from any part of the program and which contains the RDF data to be saved. Then the
broadcast receiver will interacts with the RDF Database adapter in order to save those data.
Because the Intents have a unique identification and it can be sending from any part of the code, it
makes the application very flexible. The code doesn’t have to worry about where to send or any
interactions with the database, it just has to create intent with proper identification and attach the
RDF data on it, then finally sends the intent.
5.2.4 Running the program
5.2.4.1 Starting the monitor process
Figure 5.2.4.1 – Starting the monitor process sequence diagram
As shown in the figure of interface, the monitoring starts when the user press on the button “Start
monitoring”. Then, the YouTube Monitor Activity, which is the interface screen, will create two
services: General Service and device state service.
Once the services are created, they will create several objects and interact with them. General
Service will create the RDF database adapter, the Event log handler filer, the RDF Broadcast
receiver, the YouTube log handler and the Background log handler. After the RDF Broadcast
receiver has been created, the device state service will try to obtain all the information regarding the
actual state of the mobile device and save them in the database by sending RDF intent to the RDF
Broadcast receiver. All the information obtained is shown in the appendix B.
Once the RDF Broadcast receiver receives the Intent, it will extract the information that it contains
and save them in the RDF database by interacting with the RDF Database adapter.
5.2.4.2 On location changed
Figure 5.2.4.2 – on location changed sequence diagram
The figure above shows the sequence diagram when the user location has changed. The device state
service will be always aware about the base station where the Android device is connected. When
31
the user’s device has changed the base station, the Device state service will notice it and then it will
try to obtain the information about the new Base station. Once they are done, this information will
be send to the RDF Broadcast receiver as intent, which will be updated in the RDF database
including the information about when it has been changed.
5.2.4.3 Monitoring the user actions
Figure 5.2.4.3 – Monitoring the user actions sequence diagram
The most important function of the program is monitoring the user actions. Once the Event log
handler is created by the General server, it will starts to capture all the logs from the event buffer
and match each one of them with the keywords.
If the Event Log handler detects that the state, the status or the mode of the YouTube application
has been changed, it will first save the new state, states or mode in the database. Then it will invoke
the methods stateChanged() present both in YouTube Log handler and Background Log handler to
notify them the change made. Once they have noticed the change, all them will start to monitor the
relevant data and the possible internal states.
5.2.4.4 Stopping the monitor process
Figure 5.2.4.4 – Stopping the monitor process sequence diagram
As shown in the figure above, if the user wishes to stop the monitor program, she can press on the
“Stop monitoring” button and stop the processes. This button will call first the General Service to
start stopping processes running in background and then call the Device state service to stop such
service.
Once the General Service received the command to stop the service, it will stop all the processes
that it has started: Event Log handler, YouTube log handler, Background log handler, RDF
Broadcast receiver and the RDF database adapter. Finally, it will stop itself.
32
5.2.5 The RDF Database
The design of the database is one of the most important tasks for the software engineer. Because it
means the interaction with a physical support, it is the part of the program which consume more
time. Due to the YouTube monitor program runs in background, it should be transparent to the user.
With this idea on mind, the author has designed a very simple database.
The monitor program uses the default SQLite database which comes with Android. It has just one
table with four columns, which correspond to Id, Subject, Predicate and Object of RDF data
representation. The data type of id is a number, and the rest are String.
It is important to clarify that all the RDF data saved in any database is unique in the world because
it concatenate several information. First of all, the URL of COSEM project which this project forms
part, secondly a unique ID generated by several information unique about the mobile devices,
which are the device ID, the phone number if any, the software fingerprint and the Android ID and
finally, the time stamp when the user action is performed to differentiate the same actions
performed on different time.
In order to have the data well organized, the concept of configuration and session has been
introduced.
When the YouTube Monitor application starts, the device state service creates an extra RDF data
which contains a unique timestamp. The mission of this RDF data is creating a new configuration
and links it with the mobile object. All the configuration of the device will be directly or indirectly
under this RDF data.
The concept of session is utilized by the service which monitors the user actions. The aim of it is to
classify better the data generated by grouping all the monitor data under a session.
A session is considered started when the YouTube application has reached the status Launched.
And it is considered closed when the YouTube application has reached the status Finished, in other
words, when the YouTube application has been killed by Android.
In order to make the RDF database more understandable, an example of it has been generated.
Because it is a huge image, it cannot be shown correctly in this project. Rather, it is hosted in
www.jiahaoliuliu.com (http://www.jiahaoliuliu.com/2011/07/master-thesis-example-of-rdf-
database_9279.html)
33
Chapter 6 Evaluation and analysis
This chapter presents the evaluation and its later analysis. It starts describing the general settings
utilized, followed by the single state evaluation. After it, 18 sets of evaluation will be described
along with their respective results and a general analysis. Finally, this chapter will end with a
conclusion about the results obtained.
6.1 Settings
The follow tests have done in a mobile phone (HTC Hero) which runs Android 2.1 and YouTube
1.6.20(E) for Android. The specification of the mobile phone is presented in appendix E.
All the evaluations generate a huge database which contains all the information. Because of this, the
results won t be shown in details. Instead, the results will be grouped by: Transition between States,
transition between general statuses, transition between modes, invocation of parallel actions,
Internal states and Information obtained. Notice is an evaluation doesn’t generate any group of
results, it will be shown as 0%.
6.2 Single state evaluation
6.2.1 Test implementation
In this single state evaluation, the YouTube application will be consider as a simple program which
independently of the previous states, the log generated by the new state / general status/ modes /
parallel actions only depends on the new state reached.
By knowing all the states, general status, modes and parallel actions, internal states and possible
information that the logs generated could contain, and knowing all the states where this state /
general status / modes / parallel actions can come from, this evaluation try to split all the actions
that a user can perform into small and single transitions between two states, general status, modes
and parallel actions and test them.
In other words, this evaluation has been done examining every one of the states, general status,
modes and parallel actions. For each one of them, the author has made the mobile phone reaches it
from all the possible states, general status, modes and then examine if the monitoring of this
transition is possible for the YouTube monitor program.
6.2.2 Results and analysis
Figure 6.2.2 – Single state evaluation
As the result shows, almost all the user actions can be monitor examining the logs. There are two
groups of states that the monitor application cannot know. The first group is the external states,
which only has as member the state 5, Showing keyboard, which shows a keyboard on the screen.
34
There are two reasons why this state is not monitored. The first one is because the logs generated
are too generic, leading a big confusion. For example, in any moment the user can hold the menu
button to invoke the keyboard, which look for the information for the whole device, not only in
YouTube. In this case, there is no difference between the logs generated by both states, so, from the
point of view of the logs, they are the same.
The second reason is because this state is highly region configuration dependent. Different regions
can have implemented different keyboard to adapt to the type of character to enter. Because the
time constraint of this project, it is much better focus on the more important features than look for
the keyboard of all the regions of the world.
The second groups of states that cannot be monitor belong to all the internal states that the YouTube
application reaches in the Setting screen, which represents 5 percent of the Internal states. This is
because the YouTube application saves the user preferences directly to the internal memory of the
device and not generates any log. Then, it is impossible to detect those internal states watching only
the logs.
6.3 Complex states evaluation
6.3.1 Introduction
Once the single states evaluation is done, more complex evaluations should be done. Due to the
nature of the applications, it is impossible to evaluate all the possibilities because for each cycle in
the state chart, new actions of the user could be performed. In order to have finite number of
evaluations, the author has design a set of 18 tests by consulting the use case chart, which evaluates
most of the actions performed by the user.
The use cases which are not evaluated belong to the type “Get information” which is:
See all the categories
See the videos belong to a category
See the subscriptions updates
See all the videos recommended
See all the most viewed videos
See all the most discussed videos
See all the top rated videos
Because all they have been tested in the single state evaluation, there is no need to do it again.
There are also several things to take into account:
The author assumes that the YouTube application is not working in “Logged in” mode. That
is, when the user starts the tests, the user hasn t logged in previously or, if she has logged in
previously, she has logged out before finish the application.
At the end of all the evaluations, the user will go back to the main screen because it is
considered as the final state. After it the user will finish the YouTube application by click on the
physical home button
The set of evaluation are done by following each one of the actions in the description, one after
another. For each one of the actions, the author examines if the action and its corresponding data
generated are captured or not by the YouTube monitor program.
Once all the actions are done, the author groups the results obtained (detected or not detected) by
Transition between states, General statuses, modes, parallel actions, internal states and information
35
obtained. All in the transition between states, general statuses, modes, the invocation of parallel
actions and the internal states are shown in the graph 4.2.2.2. All the possible information that could
be obtained is shown in the Appendix D.
6.3.2 Evaluation 1 - Play a video
This is the first of several tests done. In this test, the user is going to do the follow actions:
1. Launch the YouTube application
2. Select one of the video shown in the main screen to play it
3. Once the video has finished, she will come back to the main screen
4. Finish the YouTube application
Figure 6.3.2 – Evaluation 1 – Play a video
In this evaluation, there are 5 transitions between states, 2 switches between general statuses and 18
types of information are obtained. All they detected correctly.
6.3.3 Evaluation 2 - Play a video extended
This is an extension of the evaluation1. In this evaluation, when the user is playing the video, she
will perform several actions while the video is playing. The actions are:
1. Launch the YouTube application
2. Select one of the video shown in the main screen to play it
3. When the video has been played 10 seconds, the user forwards the video.
4. After 10 seconds, the user pause the video
5. The user plays the video again.
6. After 10 seconds, the user backwards the video
7. After 10 seconds, the user changes the quality of the video (HD off)
8. After 10 seconds, the user change restores the original quality of the video (HD on)
9. After 10 seconds, the user scrolls the video to the second 10.
10. After 10 seconds, the user enables the captions for the video
11. Once the video has finished, she will come back to the main screen
12. Finish the YouTube application
36
Figure 6.3.3 – Evaluation 2 – Play a video extended
In this evaluation, there are 5 transitions between states, 2 switches between general statuses, 8
internal states and 18 types of information. All they detected correctly.
6.3.4 Evaluation 3 – Record and upload a video
In this evaluation the user is going to record a video with camera and upload the video recorded.
Note the process of record video (step 3) is device dependent. It depends on the application of video
recording that each device has. Because of this, this process is not described. The actions are:
1. Launch the YouTube application
2. Click on the “Camera” button in the top-right corner
3. Record a video and click on “Done”
4. Fulfill all the information
5. Click on the button “Upload”. The YouTube application will go to the main screen automatically
6. Finish the YouTube application
Figure 6.3.4 – Evaluation 3 – Record and upload a video
In this evaluation, there are 4 transitions between states, 2 switch between general statuses, 1
parallel action and 3 types of information. All they detected correctly.
6.3.5 Evaluation 4 – Search a video
In this evaluation the user is going to search the videos by keyword. The result could be empty or
not depending on the keyword chosen and the videos in the YouTube server
1. Launch the YouTube application
2. Click on the “Search” button in the top-right corner
3. Enter a keyword or select one used for previous search. The YouTube application will show the
result screen
4. Come back to the main screen by clicking on the “Back” button
5. Finish the YouTube application
37
Figure 6.3.5 – Evaluation 4 – Search a video
In this evaluation, there are 4 transitions between states, 2 switches between general statuses and 9
types of information. Except the state 5, Showing keyboard, the rest could be detected. This is
because the state 5, Showing keyboard is context dependent and the logs that it generates are the
same as if the user holds down the physical menu button, which could lead confusion. Then it is not
detected in the monitor program.
6.3.6 Evaluation 5 – Upload a video
The user is allowed to upload any video existence in her device. Note the process of chose a video
(Step 4) is context dependent. As the evaluation 3, it depends on the application of video browser
that each device has. Because of this, this step is not described. The actions are:
1. Launch the YouTube application
2. Click on the menu button
3. Choose the option “Upload”
4. Pick any program and choose a video to upload.
5. Fulfill all the information
6. Click on the button “Upload”. The YouTube application will go to the main screen automatically
7. Finish the YouTube application
Figure 6.3.6 – Evaluation 5 – Upload a video
In this evaluation, there are 3 transitions between states, 2 switch between general statuses, 1
parallel action and 2 types of information. All they detected correctly.
6.3.7 Evaluation 6 – See the information about the user account
In this evaluation, the user is going logged in into her account and then logged out.
1. Launch the YouTube application
2. Click on the menu button and select “My account”
3. Enter the YouTube user name and the password
4. Once the user has enter her account, scroll down to see all the information
5. Click on the menu button and select “Logout”. The YouTube application will go directly to the
Main screen
6. Finish the YouTube application
38
Figure 6.2.7 – Evaluation 6 – See the information about the user account
In this evaluation, there are 2 transitions between states, 2 switches between general statuses, 2
modes and 3 types of information. All they detected correctly.
6.3.8 Evaluation 7 - See information about a video
In this evaluation, the user is going to see the detailed information about a specific video in the
main screen. The actions are:
1. Launch the YouTube application
2. Select the information about one of the videos shown in the main screen
3. Go back to the main screen
4. Finish the YouTube application
Figure 6.3.8 – Evaluation 7 – See information about a video
In this evaluation, there are 2 transitions between states, 2 switches between general statuses and 7
types of information. All they detected correctly.
6.3.9 Evaluation 8 – Rate a video
In this evaluation, the user is going to rate a video in the information screen. The actions are:
1. Launch the YouTube application
2. Select the information about one of the videos shown in the main screen
3. Click on the “Rate” virtual button in the screen.
4. A new screen will appear asking for YouTube account. Enter the user name and the password
5. Select one of the five starts
6. Go back to the main screen
7. Finish the YouTube application
39
Figure 6.3.9 – Evaluation 8 – Rate a video
In this evaluation, there are 2 transitions between states, 2 switch between general statuses, 1 mode,
1 internal state and 9 types of information. All they detected correctly.
6.3.10 Evaluation 9 - Read comments about a video
In this evaluation, the user is going to read the comments about a specific video in the main screen.
The actions are:
1. Launch the YouTube application
2. Select the information about one of the videos shown in the main screen
3. Click on the comment virtual button in the screen to see the comments relatives to the video.
4. Go back to the information screen
5. Go back to the main screen
6. Finish the YouTube application
Figure 6.3.10 – Evaluation 9 – Read comments about a video
In this evaluation, there are 4 transitions between states, 2 switches between general statuses and 7
types of information. All they detected correctly.
6.3.11 Evaluation 10 – Set a video as favorite
In this evaluation, the user is going to set a video as favorite in the information screen. The actions
are:
1. Launch the YouTube application
2. Select the information about one of the videos shown in the main screen
3. Click on the “favorite” virtual button in the screen.
4. A new screen will appear asking for YouTube account. Enter the user name and the password
5. Go back to the main screen
6. Finish the YouTube application
40
Figure 6.3.11 – Evaluation 10 – Set a video as favorite
In this evaluation, there are 2 transitions between states, 2 switch between general statuses, 1 mode,
1 internal state and 7 types of information. All they detected correctly.
6.3.12 Evaluation 11 – Set a favorite video as “unfavorite”
Once the user can enter her account, she can see the videos she set as favorite.
1. Launch the YouTube application
2. Click on the menu button and select “My account”
3. Enter the YouTube user name and the password
4. Once the user has enter her account, click on “View all favorites” to see only favorite videos
5. Click on the information virtual button in the right side of any video
6. Click on the “Unfavorite” virtual button
7. Click on the back button to come back to the favorite videos list
8. Click on the back button to come back to the account information
9. Go back to the main screen by pressing the back button
10. Finish the YouTube application
Figure 6.3.12 – Evaluation 11 – Set a favorite video as “unfavorite”
In this evaluation, there are 6 transitions between states, 2 switch between general statuses, 1 mode,
1 internal state and 15 types of information. All they detected correctly.
6.3.13 Evaluation 12 – Share a video
In this evaluation, the user is going to share a video in the information screen. Note that the actions
between the step 4 and 5 are context independent. This is because the YouTube application has give
the control to an external program, which is totally depending on the applications installed in the
device.
The actions are:
1. Launch the YouTube application
41
2. Select the information about one of the videos shown in the main screen
3. Click on the “Share” virtual button in the screen.
4. A new screen will appears with a list of external programs that the user can pick. Pick one of
them.
5. Once the video is shared, come back to the information screen
6. Go back to the main screen by pressing the back button.
7. Finish the YouTube application
Figure 6.3.13 – Evaluation 12 – Share a video
In this evaluation, there are 4 transitions between states, 2 switches between general statues and 7
types of information. All they detected correctly.
6.3.14 Evaluation 13 – Flag a video
In this evaluation, the user is going to flag a video as inappropriate in the information screen. Note
that what the YouTube application does is call an external program to open a hyperlink (step 4).
Because the application which will response to this call is now know forehand, it is not possible to
know why the user consider the video as inappropriate because it is not possible to know which
reason has the user selected.
The actions are:
1. Launch the YouTube application
2. Select the information about one of the videos shown in the main screen
3. Click on the “flag” virtual button in the screen.
4. A list of possible reason will appears. Select one of them and click on the “Flag this video”
virtual button.
5. Once the video is flagged, come back to the information screen
6. Go back to the main screen by pressing the back button.
7. Finish the YouTube application
42
Figure 6.3.14 – Evaluation 13 – Flag a video
In this evaluation, there are 4 transitions between states, 2 switches between general statuses and 8
types of information. All they detected correctly.
6.3.15 Evaluation 14 – Delete a video
For all the videos that this user has uploaded, they can be removed from the YouTube applications.
To do this:
1. Launch the YouTube application
2. Click on the menu button and select “My account”
3. Enter the YouTube user name and the password
4. Once the user has enter her account, click on “View all my videos” to see only the videos
uploaded by the user
5. Press the finger on the screen and hold down the finger for 1 or 2 seconds. A context menu will
appears.
6. Click on the option “Delete”. Once the video is removed, the screen will be refreshed.
7. Click on the back button to come back to the account information
8. Click on the back button to come back to the main screen
9. Finish the YouTube application
Figure 6.3.15 – Evaluation 14 – Delete a video
In this evaluation, there are 4 transitions between states, 2 switches between general statuses, 2
modes, 1 internal state and 10 types of information. All they detected correctly.
6.3.16 Evaluation 15 – Subscribe a channel
In this evaluation, the user is going to subscribe a concrete channel. The actions are:
1. Launch the YouTube application
2. Select the information about one of the videos shown in the main screen
3. Click on the button on the right side of the video image. The YouTube application will show the
channel (the user) which this video belongs
4. Click on “Subscribe” to subscribe the channel
5. Go back to the information screen by clicking on the “back” button
6. Click on the “back” button to come back to the main screen
7. Finish the YouTube application
43
Figure 6.3.16 – Evaluation 15 – Subscribe a channel
In this evaluation, there are 2 transitions between states, 2 switches between general statuses, 1
mode, 1 internal state and 13 types of information is obtained. All they detected correctly.
6.3.17 Evaluation 16 – unsubscribe a channel
The user can unsubscribe any channel subscribed before in any moment. To do it:
1. Launch the YouTube application
2. Click on the menu button and select “My account”
3. Enter the YouTube user name and the password
4. Once the user has enter her account, click on “View all subscriptions” to see the channels that she
has subscribed before
5. Select anyone of the channels on the list.
6. Click on the “Unsubscribe” button in the top-left corner.
7. Come back to the list of subscribed channels by clicking on the “back” menu
8. Click on the back button to come back to the account information
9. Come back to the main screen by clicking on the “back” menu
10. Finish the YouTube application
Figure 6.3.17 – Evaluation 16 – Unsubscribe a channel
In this evaluation, there are 6 transitions between states, 2 switches between general statuses, 1
mode, 1 internal state and 9 types of information is obtained. All they detected correctly.
6.3.18 Evaluation 17 – Play more than one videos per time
Normally the user only can play one videos per time. The unique moment when the user can play
several videos per time, one after the previous one, is using playlists. To do it:
1. Launch the YouTube application
2. Click on the menu button and select “My account”
44
3. Enter the YouTube user name and the password
4. Once the user has enter her account, click on “View all playlists” to see the playlists that the user
has
5. Select anyone of the playlists which has more than one video
6. Click on the “Play All” button in the top-left corner. The YouTube application will starts to play
all the videos
7. Once all the videos has finished, come back to the play list screen by clicking on the “back”
menu
8. Click on the back button to come back to the account information
9. Come back to the main screen by clicking on the “back” menu
10. Finish the YouTube application
Figure 6.3.18 – Evaluation 17 – Play more than one video per time
In this evaluation, there are 8 transitions between states, 2 switches between general statuses, 2
modes and 21 types of information is obtained. All they detected correctly.
6.3.19 Evaluation 18 – Change the settings
The YouTube application allows users to change several parameters in settings screen. To do it:
In this evaluation, the user is going to set a video as favorite in the information screen. The actions
are:
1. Launch the YouTube application
2. Click on “menu” button and select “Settings”
3. In the settings screen, uncheck “High quality video on mobile” option
4. Click on “Captions font size” and select “Extra large” option.
5. Click on “Clear search history” to clear search history
6. Click on “Terms of Service” to read the terms of service.
7. Go back to the settings screen by clicking on the “back” button
8. Click “back” button to go back to the main screen
9. Finish the YouTube application
45
Figure 6.3.19 – Evaluation 18 – Change the settings
In this evaluation, there are 2 transitions between states, 2 switches between general statuses, 5
internal states and 1 types of information is obtained. The internal states are not detected because no
logs are generated.
6.3.20 General analysis of all complex evaluations
Figure 6.3.20 – General analysis of all complex evaluations
Summarizing all the evaluation done, transition between states has been tested 68 times, general
statuses 36 times, modes 11 times, parallel actions 2 times, internal states 14 times and 167 times
the information obtained.
There are also some states that cannot be detected. The 1.45% of the transition between states not
detected belongs to the state 5, showing keyboard. The reason, which has been explained before,
was because it is too generic and it is highly region dependent.
The 26.32% of the internal states not detected corresponds to all the internal states of Settings. The
reason is it doesn t generate any logs, make them impossible to be detected only watching the logs.
6.3 Conclusion
All the tests went good. In the YouTube application, there are 44 states, 2 general statuses, 2 modes
and 2 parallel actions. Only one of the states, 5 Showing keyboard, cannot be detected. Since the
function of this state is only show the keyboard on the screen and it’s propose, searching a video, is
correctly monitored, it is not really important to know when the keyboards are shown in the screen.
46
For the internal states, all them, except the internal states related with the Settings are detected,
which represents more than 95% of the internal states detected.
The internal states related with the settings, which are related to the quality of the video, the size of
the captions, the search cache and the terms of service, are not so important and won t influence to
the main functions of the YouTube application. If in the future they become very important, new
methods of monitoring could be implemented in order to monitor them.
Finally, all the possible information in the logs is obtained correctly. This will give to the monitor
application a lot of information. However, this information is not complete, because the logs only
indicate some property of the object that the logs are related. To have more information, all the data
obtained should be analyzed.
47
Chapter 7 Example of usage of the application
In order to describe better the utilization of the data obtained and highlight the importance of the
correct monitor use behavior, this chapter will present several scenarios where the data could be
utilized.
7.1 Introduction
Once the data is collected, it could be used locally or be collected in a bigger database. Locally, the
application could be used as a Content Provider, providing other applications information and
preferences of the user. By collecting the data in a bigger database, thirst parties can use the data to
give better services.
To illustrate better the use of the data by the third parties, here is some scenario where the
information collected could be useful.
It is important to clarify that all the data obtained for the scenarios are fictitious. Not studies has
been done to generate those data, thus, they are only example of use of information obtained by the
YouTube Monitor program..
7.2 Scenario 1 – The relation between the data rate and the Quality of Experience
Because the main finality of the YouTube application is watch the video, which is real-time service,
the time used to feed the buffer is absolutely essential.
In the graph below there is an example of the relation between the data rate and the quality of
experience.
Figure 7.2 – Relation between data rate and QoE
In the X-axis, it shows the data rate that a device could have. The unit is Mega bits per second
(Mbps) and it goes from 0.1 Mbps to 20 Mbps. This data could be obtained easily through the
device. In the Y-axis it shows the percentage of the users who has finish watching completely a
video. This data is calculate by using the video Id to obtain the total length of the video and using
the time when the user has started watching the video and the time when she stops the video.
With this graph, the quality of experience could be easily measured.
48
7.3 Scenario 2 - Geographical usage and access to a concrete category
All the videos on YouTube are classified into one of the 15 categories: Cars & Vehicles, Comedy,
Education, Entertainment, Film & animation, Gaming, Howto & style, Music, News & Politics,
Nonprofits & Activism, People & Blogs, Pets & animals, Science & technology, Sport and Travel
& events. Since the id of the videos played by the user is known, with YouTube API, it is very easy
to see the category of the videos played by such user.
At the same time, the identification and the latitude of the base station that the user is connected is
also collected and updated if any change occurs. Because this identification is unique for a given
operator, with that data, it is possible to retrieve the geographical information by accessing a global
database.
Combining that information, a thirst party can obtain the information about the preferences of the
users in a concrete region.
Figure 7.3 – Video played in Kista since 2011.06.23.12.49 to 2011.06.23.12.50. Image captured
from Google Maps
Video Id Time Category
8XXQeov980Y 2011.06.23.12.49 Howto & Style
rllsDOwdmfA 2011.06.23.12.55 Science & Technology
JOD0099UCj8 2011.06.23.12.52 Science & Technology
izlXF2Acn2Y 2011.06.23.12.52 Science & Technology
TooxpzYQb3s 2011.06.23.12.50 Science & Technology
7wwoasfEqPc 2011.06.23.12.50 Howto & Style
Table 7.3 – Video played in Kista since 2011.06.23.12.49 to 2011.06.23.12.50
49
A visual example is shown above. In this example, for a technology company concentrated place
like Kista, Stockholm (Sweden), the people could prefer the video that comes from the category
“Science & technology”, instead of “Pets & Animals”.
In order to improve the QoE, the base stations could be more intelligent by having an internal
memory with them. If the videos from a specific category are repeatedly played for a concrete
region, the base station from that region could save the most viewed videos of such category into
the internal memory. When another user requests that kind of video, the base station requested
could have that video already saved in the internal memory. Hence, the traffic generated will be just
between the base station and the final user, the server doesn’t have to be involved. This could lead a
big amount of bandwidth save depending on the behavior of the user, make the base stations more
efficient.
7.4 Scenario 3 - Better QoS for a concrete user.
Beside the macro usage of the information obtained, they can be used also to offer better QoS and
QoE to a concrete user.
For instance, a particular user can be monitored and the mobile operators can obtain information
about the base stations that this particular user usually connects. Because all the RDF data saved in
the database contains a ID which is unique in the world, the data analysis process could be totally
user oriented: Based on the Base station that this user normally connects and based on the category
of the video that this user normally watch, the mobile operators can charge a set of videos belong to
the most common categories that this user has watched in the internal memory of the Base stations
where this user normal connects.
The finality of all them is based on the historical information of a specific user, predicts a concrete
user behavior and her preferences, have the information that this user could requests already saved
before the user request them, hence, offer a better QoS and QoE.
Here is a visual example of the video consumption of a specific user:
50
Figure 7.4 – Video traffic of a concrete user from 2011.06.23.10.30 to 2011.06.23.11.30. Image
captured in the web page of SL (www.sl.se)
In this example, the user 1 goes from Professorslingan, Stockholm (Sweden) to Kista, Stockholm
(Sweden). While this user is traveling with the public transport, she has watched 5 videos.
Video Id Time Category
Y85Rd5E61V4 2011.06.23.10.30 Science & Technology
6C-xDCCqJng 2011.06.23.10.40 Education
LESROkpWvFA 2011.06.23.11.05 Howto & Style
4bkiGVqqX_U 2011.06.23.11.25 Howto & Style
Ya7IhijXYUQ 2011.06.23.11.30 Science & Technology
Table 7.4 – Video traffic of a concrete user from 2011.06.23.10.30 to 2011.06.23.11.30.
As the previous case, if the user behavior doesn’t change, the most part of the communication will
be just between this user and the base station where this user is connected, and then a better QoS
and QoE could be achieved.
7.5 Scenario 4 – Probability of usage of YouTube through the day
Another important way to improve the QoE and QoS is using the concept of session to know when
the user normally watches the videos. A session is considering starts when the user starts the
YouTube application after the last session has been finished. And a session is consider finished
when the Android system decide to kill the YouTube application.
An example of the data collected is shown in the below graph
51
Figure 7.5.1 – Number of sessions per hour for a concrete user in one month
For this particular user, the data collected in a specific month shows that there are four peaks hours
when this user starts a session: between 8 and 9; at 12 o’clock, at 19 o’clock and at 21 o’clock.
Having this data, the graph of the probability of access to YouTube application could be calculated:
Figure 7.5.2 – Probability of starts a session per hour for a specific user
The peak hours shows in this graph matches with the pick graph showed in the previous graph.
When it is 21 o’clock, it is the hour with highest probability for this user to starts a session
(11.24%), followed by 9.47% when it is 19 o’clock. Another important peak is between 7 and 8
o’clock of the morning, when this user goes to work (7.69% and 8.87%, respectively).
This graph can be constantly updated by analyzing the data that this user generates, making sure
that the graph will be always accurate.
By knowing the probability for a concrete user to starts a session, and also the category of the
videos that this user normally plays, it will be easier for the mobile operators to pre-fetch the videos
that this user could require in nearly future in the base station that this user normally connects.
7.6 Scenario 5 – Prediction of the favorite videos of the user
In the YouTube application analyzed, there are a total of 44 states. The user can play video from 29
of them. Therefore, for a concrete user, there could be a ranking of the states where the user
normally goes to play a video.
For example, the number of video played for a concrete user in one month could be:
52
Figure 7.6.1 – States where the videos played come from
Based on that information, a percentage graph could be created and constantly updated with new
information of the user behavior.
Figure 7.6.2 – States where the videos played come from – Percentages
53
Using those graphs, specific behavior of the user could be monitor. For example, observing those
graphs, it seems that for a concrete month, this user prefer the videos which come from the state
“Show a category – Science & Technology” and the videos which come from the state “Show a
category – Howto & Style” instead of the videos that come from the state “Show a category – Cars
& Vehicle” and the state “Show a category – Pets & Animals”.
By knowing this information, the top video played from a concrete state could be pre-fetched inside
of the mobile device of the user. Then, when the user wants to watch such video, because it is
already in the mobile device, no data connection will be generated.
7.7 Conclusion
The information obtained about the user behavior could be useful to better explore the existing
infrastructure more effectively. The scenario shown in this section is only few example of its usage.
Because an extensive information about the context and the user behavior are collected, new way of
exploit this information could be created depending on the need of each case.
54
55
Chapter 8 – Conclusions and discussions
According to the aims and goals presented in the chapter 1, this chapter will start with the
dissection of them. Secondly, the contribution of the author as well as the discussion of the result
obtained will be described. Finally, it will finish with the conclusions and the future works.
8.1 Aim and goals dissection
The aim of this project is to build a program to explore the possibility to monitor the user behavior
with a video sharing program through a mobile device already on the market. In order to fulfill this
aim, several goals are set. They are dissecting one by one.
8.1.1 Video sharing program’s description and analysis
The first goal is describe and analyze the behavior of a video sharing program running in a mobile
device already on the market. In this case, the YouTube program which runs in Android system is
described and analyzed in section 4.2.
The description and analysis includes the YouTube application’s use cases and the description of
the transition between the states, general statuses, modes and invocation of parallel actions.
Furthermore, in Appendix A, the detail description of each one of the 44 states, 2 general statuses, 2
modes and 2 parallel actions are presented.
8.1.2 User interaction monitoring
The second goal is the utilization of the tools available to monitor the interaction of the user with
the program
For this goal, a program which runs in Android system is created. The specification of this program
is described in the section 3, software implementation. Beside this specification of the
implementation, the device information obtained, the keywords used to monitor logs and the
specific information obtained through logs are described in the Appendices B, C and D respectively.
After the program is created, a set of evaluation has been done in order to test its accuracy, which is
described in section 6. The results shows, although the program cannot monitor completely the
interaction of the user with the YouTube program, most of the transitions between states (90.51%),
most of the internal states (95%) and all the transitions between general statuses, modes, parallel
actions, as well as all the possible information shown with the logs are correctly monitored
8.1.3 Description of possible scenarios
The thirst and the last goal are to describe different scenarios where the data obtained could be
useful. For this purpose, 5 scenarios were designed in the section 7. They show the potential of the
information obtained if several data are combined.
8.2 Contributions
With this project, the author has contributed in demonstration of the possibility to create a monitor
program which runs silently in the background and which captures most of the user actions utilizing
the devices already on the market. This set the base for a new wave of monitoring user actions
programs, which is the key to explore the existence infrastructure more effectively.
The author has also contributed in designing scenarios where this tool can be used to improve the
QoE and QoS.
56
8.3 Discussion
Although the good results obtained in the evaluation, there are several points that the author want to
comment about the evaluation.
First of all, the number of device tested, in this case is only 1. In this sense, theoretically, all the
YouTube application of a concrete version installed in a concrete version of Android System should
have the same behavior, which is independent to the hardware which they are running. It could be
better to prove this by running the evaluation in several mobile devices with different hardware to
demonstrate this.
Secondly, the evaluations done are about the accuracy of the monitor program. For a monitor
program, the transparency is also important. The user shouldn’t experiment delays when the
monitor program is running in the background. To measure it, a big number of tests on most of the
mobile devices in the market should be done. Because the constraint of time, this wasn’t possible.
8.4 Conclusion
To correctly monitor the user actions could play a very important role for the mobile operators in
order to implement a smarter, faster and convergent network. In this project, the author has chosen
Android system and YouTube to show the possibility to implement a monitor program which is
totally transparence to the user.
This is possible by capturing the logs that the YouTube application generates. In this sense, the
monitor program plays as a detective, who by collecting all the glue that the YouTube application
has left, try to figure out what the user have done.
As the evaluation has shown, most of the user actions can be monitored.
All those data are collected in the local RDF database, which can be shared easily on Internet
because they have identifiers which make them unique in the world.
Once this possibility is demonstrated, better monitoring tools can be build which are more efficient
and more complete. With the data they collect, all the questions in the section 2 can be answered,
improving the actual situation of the mobile operators.
8.5 Future works
8.5.1 New version of YouTube
At the time we are producing this project, a new version of YouTube can be downloaded in the
Android Market. The newest version is 2.1.6 and it only runs in the phones with Android 2.2 or
later. It has been downloaded between 50.000 and 100.000 times, which represents a big number of
users. The engineers whom have designed it have built everything from the ground. [1] There are
also changed in the way the new YouTube program produces logs, which make harder to monitor
the user actions. In the future, the viability of continue using this method on new versions of
YouTube should be studied.
8.5.2 Other video sharing applications
Another big source of video traffic on Internet, Netflix, has launched a program which enables the
access to its movie database through Android. [25]. This could mean a new revolution of video
traffic on Internet. Because of this, in a close future, the function of this program could be also
studied.
With those programs, it seems the tendency of the market is each web-sharing service offer her own
programs that the user only can watch videos on their portal. Because there are video-sharing
57
services others than YouTube and Netflix, in order to cover more users and have more complete
data, other video sharing application should be also studied and monitored.
8.5.3 RDF data analysis
As the author has explained in the section of implementation, the YouTube monitor program only
utilized the logs generated to capture the states of YouTube application. Those logs are depending
on the actual state which the YouTube application is and the information that the coder’s of
YouTube application want to be known.
Because of this, they aren’t complete as it should be. The logs can be utilized to detect the main
characteristics of the states and the transition of the states, but some detail information which could
be essential is not obtained.
This issue is especially severe when the user is using context menu in the video list. This is, in a
video list, the user selects one of the elements and keeps holding down the finger on the screen,
then a new menu called context menu will appear. Although all the options that the user chooses in
the context menu can be detected, there is no way to know which element in the video list the user
has selected.
This is why the data should be analyzed once captured. The analysis could link past states with the
actual state, discovering hidden relations and making the information more complete.
58
59
Bibliography [1] Doronichev, Andrey, December 2010, YouTube 2.1 App Now. Available on Android [online],
Google Mobile Blog. Available from: http://googlemobile.blogspot.com/2010/12/youtube-21-app-
now-available-on-android.html [Accessed 21 June 2011]
[2] Halliday, Josh and Arthur, Charles, August 2010, Mobile operators signal end of flat-rate data
traffic as app use grows [online], The guardian. Available from:
http://www.guardian.co.uk/technology/blog/2010/aug/23/net-neutrality-mobilephones[Accessed 21
June 2011]
[3] Kang, Cecilia, June 2011, Verizon wireless to start charging by bits, end flat-rate plans [online],
The Washington post. Available from: http://www.washingtonpost.com/blogs/post-
tech/post/verizon-wireless-starts-charging-by-bits-end-of-flat-rate-
plans/2011/06/21/AGH1eTeH_blog.html [Accessed 21 June 2011]
[4] Pietro Lungaro, Cristobal Viedma, Zary Segall and Pavan Kumar, “An Experimental
Framework to Investigate Context-aware Schemes for Content Delivery”, in Proceedings of
VTC2011-Fall in San Francisco.
[5] Pietro Lungaro and Zary Segall, “Application-centric Content Delivery Schemes for Future
Wireless Networks”, in Proceedings of PIMRC 2011, Toronto.
[6] Pietro Lungaro, Zary Segall and Jens Zander, “ContextShift: a Model for Efficient Delivery of
Content in Mobile Networks”, in Proceeding of Wireless Communication & Networking
Conference (WCNC10), Sydney, April 2010
[7] Pietro Lungaro, Zary Segall and Jens Zander, “Predictive and Context-based Multimedia
Content Delivery in Future Cellular Networks”, in Proceeding of the Vehicular Technology
Conference (VTC10), Taipei, May 2010
[8] Pietro Lungaro, Zary Segall and Jens Zander, “Context-aware RRM for Opportunistic Content
Delivery in Cellular Networks”, in Proceedings of the 3rd
international conference on
Communication Theory, Reliability and Quality of Service (CTRQ10), Athens, June 2010
[9] Pietro Lungaro, Zary Segall and Jens Zander, “ActiveCast – a Network and User Aware Mobile
Content Delivery System”, In Proceedings of the 2nd International Conference on Ubiquitous and
Future Networks (ICUFN10), Jeju Island, Korea, June 2010
[10] Luis Martinez, Pietro Lungaro and Zary Segall, “Novel QoE-centric Resource Management
Schemes for Future Cellular Systems”, in Proceedings of 10th Scandinavian Workshop on Wireless
Ad-hocNetworks (ADHOC 11).
[11] Meier, Reto, “Professional Android 2 Application development”, Wiley Publishing, Inc, 2010.
[12] Nickinson, Phil, July 2010, Know your buttons [online], Android Central. Available from:
http://www.androidcentral.com/know-your-buttons [Accessed 22 June 2011]
[13] Pavan Kumar, Pietro Lungaro, Vikrant Nandakumar and Zary Segall, “A Novel Experimental
Framework to Investigate Context-aware Solutions for Opportunistic M2M Content Delivery”, in
Proceedings of 10th
Scandinavian Workshop on Wireless Ad-hoc Networks (ADHOC 11).
60
[14] Reuters, November 2006, Google closes $A2b YouTube deal [online], The Age. Available
from: http://www.theage.com.au/news/Busness/Google-closes-A2b-YouTube-
deal/2006/11/14/1163266548827.html [Accessed 22 June 2011]
[15] Schnfeld, Erick, May 2011, Netflix now the largest single source of Internet Traffic in North
America [online], Techcrunch. Available from: http://techcrunch.com/2011/05/17/netflix-largest-
internet-traffic/ [Accessed 22 June 2011]
[16] Yuhe Shi, David Gregg, Andrew Beatty, M. Anton Erti, Virtual Machine Showndown: Stack
Versus Registers, University of Dublin, Trinity College and Institut für Computersprachen TU
Wien, 11-12 June 2005. Available from: http://www.usenix.org/events/vee05/full_papers/p153-
yunhe.pdf [Accessed 22 June 2011]
[17] Zander, Jens. From "Walled Gardens" into the "Telecom Chaos” Operator Challenges in
Future Mobile Broadband Systems, Royal technique university, Sweden, 2010
[18] Various, Seizing the opportunity in Mobile Broadband – A global perspective, Acision
Innovation Assured, February 2011.
[19] Various, Alexa top sites. The top 500 sites on the web [online], Alexa Inc. Available from:
http://www.alexa.com/topsites [Accessed 21 June 2011]
[20] Various, April 2009, What is Android? [online], Android Developers. Available from:
http://developer.android.com/guide/basics/what-is-android.html [Accessed 21 June 2011]
[21] Various, 2011, Google's Android becomes the world's leading smart phone platform [online]
Canalys. Available from: http://www.canalys.com/pr/2011/r2011013.html [Accessed 21 June 2011].
[22] Various, June 2011, Cisco Visual Network Index: Forecast and methodology, 2010 – 2015
[online], Cisco Systems, Inc. Available from:
http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/white_paper_c11
-481360_ns827_Networking_Solutions_White_Paper.html [Accessed 22 June 2011]
[23] Various, Google phone gallery [online], Google Inc. Available from:
http://www.google.com/phone/#manufacturer=all&category=all&carrier=all&country=all&reset_fil
ters=1 [Accessed 21 June 2011]
[24] Various, October 2010, Netflix Announces Q3 2010 Financial results [online], Netflix.
Available from: http://netflix.mediaroom.com/index.php?s=43&item=373 [Accessed 21 June 2011]
[25] Various, May 2011, Netflix launch on Android [online], The Netflix blog. Available from:
http://blog.netflix.com/2011/05/normal-0-false-false-false-en-us-x-none.html [Accessed 21 June
2011]
[26] Various, May 2011, Sandvine’s Spring 2011 Global Internet phenomena report reveals new
Internet trends [online], Sandvine. Available from:
http://www.sandvine.com/news/pr_detail.asp?ID=312 [Accessed 21 June 2011]
[27] Various, February 2011, Resource Description Framework [online], W3C Semantic web.
Available from: http://www.w3.org/RDF/ [Accessed 20 June 2011]
61
[28] Various, Android (Operating system) [online], Wikipedia. Available from:
http://en.wikipedia.org/wiki/Android_(operating_system) [Accessed 21 June 2011]
[29] Various, Comparison of Android devices [online], Wikipedia. Available from:
http://en.wikipedia.org/wiki/Comparison_of_Android_devices. [Accessed 21 June 2011]
[30] Various, IBM Simon [online], Wikipedia, Available from:
http://en.wikipedia.org/wiki/IBM_Simon. [Accessed 21 June 2011]
[31] Various, Semantic Web Stack [online], Wikipedia. Available from:
http://en.wikipedia.org/wiki/Semantic_Web_Stack [Available from 21 June 2011]
[32] Various, Key YouTube stats @ 5 years [online], YouTube. Available from:
https://sites.google.com/a/pressatgoogle.com/youtube5year/home/5-year-metrics. [Accessed 21
June 2011]
62
63
Appendix A
Description of the YouTube Application
In this appendix a short description of each one of the states will be given, as well as descriptions
about the general status, modes and parallels actions.
State 1. Main screen
This is the screen which is shown when the user enters the application when she starts the
application. If the user has logged in the application before she goes to this state, or before the
application has finished, it is going to show 5 different groups of videos: Subscriptions updates
videos, recommended videos, most viewed videos, most discussed videos and top rated videos.
Each one of the group will show the 3 top videos as a video list. Otherwise, if the status of the user
is logged out, only the last three group of video will be shown.
State 2. Start recording video
If the user press on the record button in the main screen, the application will invoke an external
application in order to record the video. This external application depends on the application
installed in the devices, so it is context dependent.
State 3. Video recording finished
When the user has finished recording video, this state will be reached. In this state, the user will be
asked if she is satisfied with the video recorded or not. If not, the user will have another opportunity
to record another video. If yes, the user will go to the state 4. This state is also context dependent,
State 4. Fill information about a video recorded
The video has been recorded and saved in the device in the previous states. Now, the user is asked
to fill a form with the basic information about the video. It is important to say that the user doesn’t
have to log in the application to upload the video. The application used the account information
existence in the phone to do it.
Once the user has fulfilled all the compulsory information, she can upload the video. The process of
uploading video is completely parallel to the YouTube application.
State 5. Showing keyboard
This is the state which shows the virtual keyboard in the screen with the history of keywords, if any.
This state depends on the locale configuration in the device, will show different keyboards.
State 6. Start searching
If the user has enter any keyword or selected any keyword used before, the YouTube application
will starts searching all the videos that could be related with the keyword and show them in the
screen in the state 7.
State 7. Search result Empty/Ok
The YouTube application is showing the result found in the database. The application could show
an empty screen if no video related found, or a video list if any video is found. By default, they are
time independent. If the user wishes, she can use the time filter to filtering the videos by time.
State 8. Subscriptions updates
This is the state which is only reachable if the user has logged in. In this state, the YouTube
application shows all the new videos belong to all the channels that the user has subscribed.
64
No video will be shown if the user hasn’t subscribed to any channel.
State 9. More recommended
As the state 8, this state is only reachable if the user has logged in. It shows a video list with the
videos that YouTube thinks the user will like. The analysis is done by sending all the video played
by the user periodically to the YouTube datacenter.
State 10. Most viewed
This is one of the states that the Application can go even when the user is not logged in. Depending
on the locale configuration of the device, it will display the most viewed videos on that region /
country.
State 11. Most discussed
This state is also reachable if the user hasn’t logged in. The most discussed videos are the user that
has been most commented in YouTube database. In this case, the videos are also classified
depending on the locale configuration of the device.
State 12. Top rated
As most viewed and most discussed, this state is also user independent. Both in the server and in the
mobile application, the user is offered the opportunity to rate a video. This screen shows the videos
which have been best rated by a particular region / country.
State 13. Play video
If the user has selected any video to be played, this state will be reached. In this state, a video buffer
is going to be loaded, independently if the user has started playing video o no. As all the video
streaming applications, there is no need to fulfill the buffer to play a video.
In this state, the user can perform the actions that normally can be performed in a video reproducer
such as pause the video, continue play the video, see the caption or changing the position where the
video should be played from. All the possibilities are show in the state diagram in the section
4.2.2.2.2 as internal state.
Normally the YouTube program only plays one video per time, but more than one video could be
played, one after another, by using the “play all” option in the playlist (State 24).
State 14. Video playing finished
Once the video playing has been finished, this state will be reached. If the user has chosen to play
more than one video from the playlist state, only when all the video playing has been finished,
YouTube program will arrive to this state.
In this screen, beside the normal options of a video list, the user can also decide to play the last
video played again.
State 15. Read comments
If the user wishes to read any comment of a video, she should use the “comments” option appears
both in some screens and in some context menus, if any. Notices in this version of YouTube
application, there is not possibility to publish directly the comments from the Android device, just
read them.
State 16. Show information
If the user is interested in any video, she can see more information about a concrete video. The
information shown is:
• Title
65
• Screen cast
• Number of rate starts
• Number of rates made
• Number of views
• The channel (the user who has uploaded the video)
• The date when the video has been uploaded
• Description
• Category
• Tags
• URL
Beside that information, a video list with videos related with the video which the information is
shown will also appear.
State 17. Upload video
If the user decides to upload any video existing in the device, she must go to this state. This state is
context dependent because the YouTube application calls an external video browser application to
choose the video to upload.
State 18. Fill information about a video uploaded
Once the video is chosen, the user can enter all the information about the video. As the state 4, fill
information about a video recorded, the user doesn’t need to be logged in to reach this state. The
mobile device itself will read the account information set in the device and let the user choose the
proper one.
Once the video is selected and all the compulsory information filled, the user can start uploading the
video. As the state 4, the process of uploading video is parallel to the YouTube application.
State 19. My account
Only when the user has logged in, she can reach to this state. The information shown in this state is:
• The nick of the user (Channel name)
• The number of the videos which has been set as favorite by the user
• The number of channels subscribed
• The number of video uploaded
• The number of channel viewed
• The number of the subscribers
• The user image
• A list of favorite videos
• A list of main channel subscribed
• The user’s playlists
• The video that the user has been uploaded.
In this state, because there are a set of favorite videos and a set of video uploaded by the user, the
context menu can be displayed by press on any of those videos and hold down the finger.
In this case, the context menu has some special options. For any favorite video, it offers the
possibility to “unfavorite” it. For the video uploaded by the user, it offers the possibility to delete it
from the user video uploader’s list.
This is the unique state in the YouTube application where the user can log out.
State 20. Favorite videos
66
This state shows all the videos that has been set as favorite by the user as a video list. At begging, a
list of video will be shown. If the user scrolls down, more video will be loaded.
State 21. My subscriptions
This state shows all the channels that the user has subscribed. In YouTube, all the users are
considered as a channel. This means anyone can subscribe to any user and follow all the videos that
this user uploads.
Like the state 20, these videos are shown in a videos list.
State 22. Show a subscribed / an unsubscribed channel
Show the information relative to a channel. This channel could be a subscribed channel or an
unsubscribed channel. The information displayed for a concrete channel is:
• Channel’s title
• Number of times that the channels has been viewed
• Number of subscribers of a channel
• The image of the channel
• All the videos relative to a channel.
As curiosity, the difference between a channel subscribed and an unsubscribed channel is not so
clear. It is very easy to select a video from a subscribed channel, and then see the channel of that
video. Then a subscribed channel will become to an unsubscribed channel because the screen show
us the possibility to subscribe that channel again.
State 23. My playlist
This state shows all the playlist that has been created before. It is important to say that in this
version of YouTube application, the user cannot modify anything about a playlist. What the user
can do is just read information about it and plays the videos in it.
State 24. Show a playlist
Show all the video contained in a concrete playlist. Other information is also shown. They are:
• Title of the playlist
• The number of the videos
• The sum of the length of all the videos
• A picture of the playlist
• All the videos in the video list format.
This is the unique moment in the application when the user can play more than one video per time,
one after another. This is possible using the “Play all” button shown in the screen.
State 25. My videos
It shows all the videos that have been uploaded to the YouTube server, as well as all the videos that
has been failed to upload.
State 26. Categories
It shows all the possible categories that the videos of YouTube has been grouped, which matches to
the categories in the server.
States 27 - 41. Show a category
There are 15 different categories which can be chosen from the state 26. Each one of the categories
is considered an independent state. The categories are:
• 27. Cars & Vehicles
67
• 28. Comedy
• 29. Education
• 30. Entertainment
• 31. Film & Animation
• 32. Gaming
• 33. Howto & Style
• 34. Music
• 35. News & Politics
• 36. Nonprofits & Activism
• 37. People & Blogs
• 38. Pets and Animals
• 39. Science & Technology
• 40. Sport
• 41. Travel & Events
All they are presented as a video list. The unique difference between them is the type of the videos
shown in such video list.
State 42. Settings
It contains all the settings that the user can set. They are:
• High quality video on mobile checked
• High quality video on mobile unchecked
• Caption font size
• Clear search history
The user also can read the terms of service or see which version of YouTube application is running.
State 43. Share a video
If the user wishes to share a concrete video, she can use this state. This invokes a call to all the
compatible applications installed in the device which has the share function and show them in the
screen as a list. Then the user just has to choose one of them.
State 44. Flag a video
This state is reached when the user consider a video as inappropriate. There are several reasons
behind, which could be:
• Sexual content
• Violent or repulsive contents
• Hateful or abusive contents
• Harmful dangerous acts
• Child abuse
• Spam
• Infringes my rights.
Entering this state makes the Android device opens a browser that shows the YouTube flag web
page instead of an internal state.
General note about the states
Notice there is several states which has the same number. They are the state 7. Search result
Empty/Ok and 22. Show a subscribed / an unsubscribed channel. Since the monitor application is
driven from the log buffer and those states are exactly the same from the log buffer point of view,
there won’t be any difference when the search result is empty or not, or when the channel shown
has been subscribed by the user before.
68
General status 1. Launched
This is the general status of YouTube if the application has been launched. In this general status, the
user can interact with YouTube program.
General status 2. Finished
If the user has exits the YouTube program and the Android System decide to kill it, YouTube
program will be consider as finished. No interaction can be performed in this general status.
Mode 1. Logged in
Some states such as “My account” and some internal states such as “Set a video as favorite” require
the user to be logged to be reached. Once this mode has been activated, until the user has logged out
explicitly, the YouTube program will remain in this mode, even after the YouTube application has
been killed.
All the actions that the user can perform when she in the Logged out mode can be performed in the
Logged in mode.
Mode 2. Logged out
In this mode, YouTube program will show a subset of the states that can be reached with Logged in
mode. All the actions that are not related with the user account can be performed in this mode.
Parallel action 1. Start uploading a video recorded
After the user has recorded a video and fill all the compulsory information, this action can be
started. This is a parallel action, which means at the same time that the video is being uploading, the
YouTube program can be used by the user to interact with her.
Parallel action 2. Start uploading a video
These actions will be started if the user has chosen an existing video in her mobile device and she
has filled all the compulsory information about such video. As the parallel action 1, the user can
continue interact with the YouTube program while the mobile device is uploading the video.
69
Appendix B
Device information obtained
B.1 Device information obtained when the application starts monitoring process
This Appendix shows all the states /information that the YouTube Monitor application can get from
the Android phones
B.1.1 Software information
The general information that comes with Android
Property Source Comments API
Board Android.os.Bui
ld
The name of the underlying board, like “GoldFish” 1
Brand Android.os.Bui
ld
The brand (e.g. carrier) the software is customized for, if
any
1
CPU_ABI Android.os.Bui
ld
The name of the instructions set (CPU type + ABI
conventions) of native code
4
Device Android.os.Bui
ld
The name of the industrial design 1
Display Android.os.Bui
ld
A build ID string meant for displaying to the user 3
FingerPrin
t
Android.os.Bui
ld
A string that uniquely identifies this build 1
Host Android.os.Bui
ld
? 1
ID Android.os.Bui
ld
Either a changeList number, or a label like “M4-rc20” 1
Manufactu
rer
Android.os.Bui
ld
The manufacturer of the product/hardware 4
Model Android.os.Bui
ld
The end-user-visible name for the product 1
Product Android.os.Bui
ld
The name of the overall product 1
Tags Android.os.Bui
ld
Comma-separated tags describing the build, like
“unsigned, debug”
1
Time Android.os.Bui
ld
? 1
70
Property Source Comments API
Type Android.os.Bui
ld
The type of build, like “user” or “eng” 1
User Android.os.Bui
ld
The type of the user. 1
Codename android.os.Buil
d.VERSION
The current development codename, or the string “REL”
if this is a release build
4
Increment
al
android.os.Buil
d.VERSION
The internal value used by the underlying source control
to represent this build. E.g. a perforce change list number
or a git has
1
Release android.os.Buil
d.VERSION
The user-visible version string. E.g. “1.0” or “3.4b5” 1
SDK android.os.Buil
d.VERSION
The user-visible SDK version of the framework in its raw
String representation
1
SDK_INT android.os.Buil
d.VERSION
The user-visible SDK version of the framework. Its
possible values are defined in Build.VERSION_CODES.
See the table of Versions in the annex
4
Android_I
D
android.privide
r.Settings.Secu
re
It is a 64-bit number randomly generated when the
Android devices is booted for the first time. It should
remain constant for the lifetime of the device
3
B.1.2 Hardware information
Property Source Comments API
Phone
Type
android.telepho
ny.TelephoyM
anager
The type of the phone. It could be CDMA, GSM or
NONE
1
Device Id android.telepho
ny.TelephoyM
anager
The unique hardware identification of the device. IMEI
for GSM or MEID for CDMA
1
Software
version
android.telepho
ny.TelephoyM
anager
The software version of the phone. For example, the
IMEI/SV version for GSM phones.
1
71
Property Source Comments API
Phone
Number
android.telepho
ny.TelephoyM
anager
The phone number of the device. It could be null if the
user haven’t enter the phone number.
1
B.1.3 Language and country
Property Source Comments API
Locale java.util.Locale The combination of language, country and variant. The
ISO format for language is two lower letters and the ISO
format for country is two upper letters. See annex II for
the table of Locale.
1
Country java.util.Locale The country code for locale. If the country hasn’t been
set, it will return “”.
1
Language java.util.Locale The language code for locale. If the language haven’t
been set, it will return “”
1
B.1.4 Cell connected information
Property Source Comments API
Cell
Location
Cid
android.telepho
ny.TelephoyM
anager
The id of the cell which the device is connected. Return -1
if it is unknown
1
Cell
Location
Lac
android.telepho
ny.TelephoyM
anager
The location area code of the cell which the device is
connected. Return -1 if it is unknown.
1
B.1.5 Data connection
Property Source Comments API
Data
activity
android.telepho
ny.TelephoyM
anager
Show the actual data activity of the device. It could be:
DATA_ACTIVITY_IN, DATA_ACTIVITY_OUT,
DATA_ACTIVITY_INOUT or
DATA_ACTIVITY_NONE
1
Data state android.telepho
ny.TelephoyM
anager
Show if the actual data state of the device. It could be:
DATA_CONNECTED, DATA_CONNECTING,
DATA_DISCONNECTED, DATA_SUSPENDED
1
B.1.6 Mobile network information
72
Property Source Comments API
Network
country
android.telepho
ny.TelephoyM
anager
The connected network country ISO code. It called MCC:
Mobile Country Code. Unreliable in CDMA connection
1
Network
Operator
Id
android.telepho
ny.TelephoyM
anager
The connected network operator ID. It shows MCC
(Mobile Country Code) and MNC (Mobile Network
Code). Unreliable in CDMA connection
1
Network
Operator
name
android.telepho
ny.TelephoyM
anager
The alphanumeric name of the operator id 1
Network
Type
android.telepho
ny.TelephoyM
anager
The radio technology used for the connection. It could be:
NETWORK_TYPE_1xRTT,
NETWORK_TYPE_CDMA,
NETWORK_TYPE_EDGE,
NETWORK_TYPE_EVDO_0,
NETWORK_TYPE_EVDO_A,
NETWORK_TYPE_GPRS,
NETWORK_TYPE_HSDPA,
NETWORK_TYPE_HSPA,
NETWORK_TYPE_HSUPA,
NETWORK_TYPE_UMTS or
NETWORK_TYPE_UNKNOWN
1
Subscriber
ID
android.telepho
ny.TelephoyM
anager
The unique subscriber ID. For example, IMSI for GSM 1
Is Network
Roaming
android.telepho
ny.TelephoyM
anager
Confirm if the device is actually Roaming or not 1
B.1.7 SIM - Subscriber Identity Module
This information will be obtained only when the type of the mobile phone is GSM. The information
regarding the SIM is available when the SIM state is ready.
73
Property Source Comments API
SIM State android.telepho
ny.TelephoyM
anager
The actual state of the SIM. Only available when the type
of the phone is GSM. It could be:
SIM_STATE_ABSENT,
SIM_STATE_NETWORK_LOCKED,
SIM_STATE_PIN_REQUIRED,
SIM_STATE_PUK_REQUIRED,
SIM_STATE_UNKNOWN, SIM_STATE_READY.
1
SIM
Country
android.telepho
ny.TelephoyM
anager
The ISO code of the SIM card. Only available if the type
of the phone is GSM and the state of the phone is ready.
1
SIM
Operator
id
android.telepho
ny.TelephoyM
anager
The id of the operator of the SIM card. Only available if
the type of the phone is GSM and the state of the phone is
ready.
1
SIM
Operator
name
android.telepho
ny.TelephoyM
anager
The name of the operator of the SIM card. Only available
if the type of the phone is GSM and the state of the phone
is ready.
1
SIM Serial
Number
android.telepho
ny.TelephoyM
anager
The serial number of the SIM card. Only available if the
type of the phone is GSM and the state of the phone is
ready.
1
B.1.8 Screen information
Note: Since the service doesn’t know the screen information, this information will be shown in next
version
Property Source Comments API
Orientatio
n
android.view.D
isplay
The actual orientation of the screen. 0 if it is vertical and
1 if it is on Horizontal
1
Pixel
format
android.view.D
isplay
The pixel format of the screen. See Annex III for more
information
1
Refresh
rate
android.view.D
isplay
The refresh rate in frames per second (fps) 1
Density android.util.Di
splayMetrics
He scaling factor for the Density Independent Pixel unit,
where one DIP is one pixel on an approximately 160 dpi
screen.
1
Density
DPI
android.util.Di
splayMetrics
The screen density, in Dots Per Inch. It could be:
DENSITY_LOW, DENSITY_MEDIUM or
DENSITY_HIGH
4
74
Property Source Comments API
Height
Pixels
android.util.Di
splayMetrics
The absolute height of the display in pixels 1
Width
Pixels
android.util.Di
splayMetrics
The absolute width of the display in pixels 1
Scaled
Density
android.util.Di
splayMetrics
The scaling factor for fonts displayed on the display 1
X DPI android.util.Di
splayMetrics
The exact physical pixels per inch of the screen in the X
dimensions
1
Y DPI android.util.Di
splayMetrics
The exact physical pixels per inch of the screen in the Y
dimensions
1
B.1.9 General network information
Property Source Comments API
Network
Type
android.net.Net
workInfo
The type of the connection does the connection below. It
could be Mobile or Wi-Fi
1
State android.net.Net
workInfo
The actual state of the connection. See annex IV for more
information
1
Detailed
State
android.net.Net
workInfo
The detailed state of the actual connection. See annex IV
for more information
1
B.1.10 Wireless network information
Information about the wireless connection
Property Source Comments API
Wi-Fi
enabled
android.net.wif
i.WifiManager
If the wifi is enabled or not. 1
75
Property Source Comments API
Wifi State android.net.wif
i.WifiManager
The current wifi state. It could be:
WIFI_STATE_DISABLED,
WIFI_STATE_DISABLING, WIFI_STATE_ENABLED,
WIFI_STATE_ENABLING.
WIFI_STATE_UNKNOWN.
1
BSSID android.net.wif
i.WifiInfo.
The basic service set identifier of the current access point.
If no access point connected, it will return null
1
SSID android.net.wif
i.WifiInfo.
The service set identifier (SSID). It will be null if the
device is not connected to any network
1
Hidden
SSID
android.net.wif
i.WifiInfo.
Specify if the access point does or not broadcast its SSID. 1
Network
Id
android.net.wif
i.WifiInfo.
The unique small integer ID that the configured network
has. It is used to identify the network when performing
operations on the supplicant. It will be -1 if there is the
device is not connected to any network
1
IP Address android.net.wif
i.WifiInfo.
Get the IP address of the Access Point 1
Link
Speed
android.net.wif
i.WifiInfo.
The current link speed (Maximum) 1
Link
Speed unit
android.net.wif
i.WifiInfo.
The unit of the current link speed. 1
Rssi android.net.wif
i.WifiInfo.
The received signal strength indicator. 1
Supplicant
State
android.net.wif
i.WifiInfo.
The detailed state of the supplicant’s negotiation with an
access point. See Annex IV for more information
1
76
Property Source Comments API
Detailed
state of a
supplicant
state
android.net.wif
i.WifiInfo.
Map a supplicant state into a fine-grained network
connectivity state. See Annex IV for more information
1
Wlan
MAC
android.net.wif
i.WifiManager
The Wifi MAC address of the device, if any. 1
B.2 Device state change monitor
States of the mobile phone monitored
B.2.1 Cell information
Property Source Comments API
Cell
Location
Cid
android.teleph
ony.PhoneStat
eListener
Any change on the Id of the cell which the device is
connected will be reported
1
Cell
Location
Lac
android.teleph
ony.PhoneStat
eListener
Any change on the Local area code of the cell which the
device is connected will be reported
1
B.3 Additional information related with the device information obtained
B.3.1 Android System API Level Table
Platform Version Codename API Level
Android 3.1 HONEYCOMB 12
Android 3.0 HONEYCOMB 11
Android 2.3.4 GINGERBREAD_MR1 10
Android 2.3.3 GINGERBREAD_MR1 10
Android 2.3 GINGERBREAD_MR1 9
Android 2.2 FROYO 8
Android 2.1 ECLAIR_MR1 7
Android 2.0.1 ECLAIR_0_1 6
Android 2.0 ECLAIR 5
Android 1.6 DONUT 4
Android 1.5 CUR_DEVELOPMENT 3
77
Platform Version Codename API Level
Android 1.1 BASE_1_1 2
Android 1.0 BASE 1
78
79
Appendix C
Keywords used to monitor logs
C.1 Keywords used to detect the states, general status, modes and parallel actions
General note:
Some state/Status could have more than one raw. That’s because more than one type of logs are generated.
Also in one raw it could contains more than one keyword.
C.1.1 States
# State Buffer Tag Keyword Example
1 Main
Screen
Events am_on_resume_
called
com.google.android
.youtube.HomeActi
vity
05-16 19:44:01.366 I/am_on_resume_called( 9121):
com.google.android.youtube.HomeActivity
2 Start
recording
video
Events am_on_resume_
called
com.android.camer
a.ServiceEntry
05-16 19:46:59.606 I/am_on_resume_called( 9314):
com.android.camera.ServiceEntry
3 Video
recording
finished
Events am_on_paused_
called
com.android.camer
a.ServiceEntry
06-04 16:46:37.932 I/am_on_paused_called( 6351):
com.android.camera.ServiceEntry
4 Fill
informatio
n about a
video
recorded
Events am_on_resume_
called
com.google.android
.apps.uploader.clien
ts.youtube.YouTub
eSettingsActivity
(See note 1)
05-16 20:35:59.106 I/am_on_resume_called( 9850):
com.google.android.apps.uploader.clients.youtube.YouTubeSettingsActivit
y
80
# State Buffer Tag Keyword Example
5 Showing
keyboard
- - (See note 2) Not detected
6 Start
Searching
Events am_create_activi
ty
com.google.android
.youtube/.VideoList
Activity
android.intent.actio
n.SEARCH
05-16 19:48:04.176 I/am_create_activity( 98):
[1152811448,92,com.google.android.youtube/.VideoListActivity,android.in
tent.action.SEARCH,,,268435456]
7 Search
Result
Empty/Ok
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 19:48:04.536 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/vi
deos?
&q=
&v=
05-16 19:48:04.376: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/videos?format=2%2C3%2C9&max-
results=9&q=rabbit&safeSearch=strict&start-index=1&v=2].
8 Subscripti
on updates
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 19:53:52.056 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/us
ers/default/newsubscr
iptionvideos
&v=
05-16 19:53:52.016: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/newsubscriptionvideos?
format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&v=2].
81
# State Buffer Tag Keyword Example
9 More
recommen
ded
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 19:55:08.566 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/us
ers/default/recommen
dations
&v=
05-16 19:55:08.546: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/recommendations?form
at=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&v=2&video_id=7f8y4SR9mjU%2CImUTvk8LBmA%2CSEBLt6K
d9EY%2CDCicNdhcoZw%2CficwZQYmRLE%2CR6CvzUDsOFQ%2CLb
OOPKBg0iA%2Cl1ZCccf78Ck%2CBYhxBwMY-5c].
10 Most
viewed
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 19:56:24.686 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed
&v=
05-16 19:56:24.646: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed?for
mat=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
11 Most
discussed
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 19:57:42.136 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
82
# State Buffer Tag Keyword Example
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_discussed
&v=
05-16 19:57:42.126: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_discussed?f
ormat=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
12 Top rated Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 19:58:28.066 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
top_rated
&v=
05-16 19:58:28.056: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/top_rated?format=
2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
13 Play video Events am_on_resume_
called
com.google.android
.youtube.PlayerActi
vity
05-16 19:59:11.996 I/am_on_resume_called( 9121):
com.google.android.youtube.PlayerActivity
14 Video
playing
finished
Main PlayerDriver handleStop 06-01 18:53:16.458: INFO/PlayerDriver(2892): PlayerDriver::handleStop
15 Read
comments
Events am_on_resume_
called
com.google.android
.youtube.Comment
sActivity
05-16 19:59:59.446 I/am_on_resume_called( 9121):
com.google.android.youtube.CommentsActivity
16 Show
informatio
n
Events am_on_resume_
called
com.google.android
.youtube.VideoDet
ailActivity
05-16 19:59:33.296 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoDetailsActivity
83
# State Buffer Tag Keyword Example
17 Upload
Video
Events am_on_resume_
called
(am_restart_acti
vity
com.android.intern
al.app.ChooserActi
vity (See note 3)
05-16 20:01:32.476 I/am_on_resume_called( 9121):
com.android.internal.app.ChooserActivity
18 Fill
informatio
n about a
video
uploaded
Events am_on_resume_
called
com.google.apps.u
ploader.clients.yout
ube.YouTubeSettin
gsActivity (See
note 1)
05-16 21:22:41.651 I/am_on_resume_called(10336):
com.google.android.apps.uploader.clients.youtube.YouTubeSettingsActivit
y
19 My
account
Events am_on_resume_
called
com.google.android
.youtube.MyAccou
ntActivity
05-16 20:04:05.686 I/am_on_resume_called( 9121):
com.google.android.youtube.MyAccountActivity
20 Favorite
videos
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:04:25.556 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
main YouTube url=[http://gdata.yout
ube.com/feeds/api/us
ers/default/favorites
&v=
05-16 20:04:07.026: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/favorites?max-
results=9&safeSearch=strict&start-index=1&v=2].
21 My
subscriptio
ns
Events am_on_resume_
called
com.google.android
.youtube.FeedInfoL
istActivity
05-16 20:05:33.246 I/am_on_resume_called( 9121):
com.google.android.youtube.FeedInfoListActivity
Main YouTube url=[gdata.youtube.c
om/feeds/api/users/de
fault/subscriptions
05-16 20:04:07.116: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/subscriptions?v=2].
84
# State Buffer Tag Keyword Example
22 Show a
subscribed
/an
unsubscrib
ed channel
Events am_on_resume_
called
com.google.android
.youtube.ChannelA
ctivity
05-16 20:06:19.486 I/am_on_resume_called( 9121):
com.google.android.youtube.ChannelActivity
23 My
playlist
Events am_on_resume_
called
com.google.android
.youtube.FeedInfoL
istActivity
05-16 20:07:53.156 I/am_on_resume_called( 9121):
com.google.android.youtube.FeedInfoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/us
ers/default/playlists
05-16 20:09:27.126: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/playlists?v=2].
24 Show a
playlist
Events am_on_resume_
called
com.google.android
.youtube.PlaylistAc
tivity
05-16 20:10:26.706 I/am_on_resume_called( 9121):
com.google.android.youtube.PlaylistActivity
25 My videos Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:10:43.086 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/us
ers/default/uploads
&v=
05-16 20:10:43.076: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/uploads?max-
results=9&start-index=1&v=2].
26 Categories Events am_on_resume_
called
com.google.android
.youtube.Categories
Activity
05-16 20:11:11.586 I/am_on_resume_called( 9121):
com.google.android.youtube.CategoriesActivity
85
# State Buffer Tag Keyword Example
27 Show a
category
(Cars &
Vehicles)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:11:23.086 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Autos
&v=
05-16 20:11:23.076: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Aut
os?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
28 Show a
category
(Comedy)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:11:47.826 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Comed
y
&v=
05-16 20:11:47.816: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Co
medy?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
29 Show a
category
(Education
)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:14:27.406 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Educat
ion
&v=
05-16 20:14:27.386: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Edu
cation?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
86
# State Buffer Tag Keyword Example
30 Show a
category
(Entertain
ment)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:15:29.576 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Enterta
inment
&v=
05-16 20:15:29.566: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ent
ertainment?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
31 Show a
category
(Film &
Animation
)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:15:53.726 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Film
&v=
05-16 20:15:53.706: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Fil
m?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
32 Show a
category
(Gaming)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:16:32.766 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Games
&v=
05-16 20:16:32.756: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ga
mes?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
87
# State Buffer Tag Keyword Example
33 Show a
category
(Howto &
Style)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:16:52.516 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Howto
&v=
05-16 20:16:52.506: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ho
wto?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
34 Show a
category
(Music)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:17:12.056 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Music
&v=
05-16 20:17:12.036: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Mu
sic?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
35 Show a
category
(News &
Politics)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:17:37.006 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_News
&v=
05-16 20:17:36.986: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ne
ws?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
88
# State Buffer Tag Keyword Example
36 Show a
category
(Nonprofit
s &
Activism)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
06-09 15:42:20.901 I/am_on_resume_called( 412):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Nonpr
ofits
&v=
06-09 15:42:20.881: INFO/YouTube(412): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/US/most_viewed_Non
profit?format=2%2C3%2C9&max-results=9&safeSearch=moderate&start-
index=1&time=this_week&v=2].
37 Show a
category
(People &
Blogs)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:18:05.766 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_People
&v=
05-16 20:18:05.746: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Peo
ple?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
38 Show a
category
(Pets &
Animas)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:18:25.966 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Anima
ls
&v=
05-16 20:18:25.956: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ani
mals?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
89
# State Buffer Tag Keyword Example
39 Show a
category
(Science &
Technolog
y)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:18:51.846 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Tech
&v=
05-16 20:18:51.826: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Tec
h?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
40 Show a
category
(Sport)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:19:17.186 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Sports
&v=
05-16 20:19:17.166: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Spo
rts?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
41 Show a
category
(Travel &
Events)
Events am_on_resume_
called
com.google.android
.youtube.VideoList
Activity
05-16 20:19:47.376 I/am_on_resume_called( 9121):
com.google.android.youtube.VideoListActivity
Main YouTube url=[http://gdata.yout
ube.com/feeds/api/sta
ndardfeeds/
most_viewed_Travel
&v=
05-16 20:19:47.356: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Tra
vel?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
90
# State Buffer Tag Keyword Example
42 Settings Events am_on_resume_
called
com.google.android
.youtube.SettingsA
ctivity
05-16 20:20:25.996 I/am_on_resume_called( 9121):
com.google.android.youtube.SettingsActivity
43 Share a
video
Events menu_item_sele
cted
Share 05-19 14:55:10.846 I/menu_item_selected( 4427): [1,Share]
43 Share a
video
Events am_on_resume_
called
(am_restart_acti
vity)
com.android.intern
al.app.ChooserActi
vity
05-19 14:55:12.946 I/am_on_resume_called( 4427):
com.android.internal.app.ChooserActivity
44 Flag a
video
Events am_new_intent com.android.brows
er.BrowserActivity
http://m.youtube.co
m/flag
05-16 20:21:12.636 I/am_new_intent( 98):
[1153878800,84,com.android.browser/.BrowserActivity,android.intent.acti
on.VIEW,,http://m.youtube.com/flag?v=Cr5M8dbhYfs,4194304]
44 Flag a
video
Events am_create_activi
ty
com.android.brows
er/.browseractivity
http://m.youtube.co
m/flag
05-22 19:27:58.636: DEBUG/EventLog(12435): 522 192757
i/am_create_activity(125):[1151534240,69,com.android.browser/.browsera
ctivity,android.intent.action.view,,http://m.youtube.com/flag?v=t3nnf9jkvy
y,0]
Note 1
In this case, the states “Fill information about a video recorded” and “Fill information about a video uploaded” have the log:
“I/am_on_resume_called(00000): com.google.android.apps.uploader.clients.youtube.YouTubeSettingsActivity
”.
This is because the activity behind them is the same: YouTubeSettingsActivity, which has been reutilized in both states. The unique way to
differentiate them is recording and using the previous state. If the previous state is the state 3, recording finished, and then the actual state is the state 4.
Fill information about a video recorded; if the previous state is the state 17. Upload video, the actual state is 18. Fill information about a video
uploaded.
91
Note 2:
The state 5, Showing keyboard, displays the keyboard on the screen and the previous keywords searched. This keyboard depends on the locale
configuration of the mobile, which make it not easy recognizable.
After several test, it is not easily recognize this state. The all the locale configuration should be studied, as well as all the modifications done the
manufacturers. Since this state is not important (It just check if the keyboard is shown in the screen or not), it is not recognized in the code.
Note 3:
To share a video, The user can both holding the finger pressed on the screen and choose the option “Share” in the context menu or pressing the button
“Share” appears in the screen.
In the first case, the action is easily identifiable, because the log ”I/menu_item_selected(00000): [1,Share]” will appears and this log is unique.
In the second case the log which will generate are the same as if the user tries to upload a video: “I/am_on_resume_called(00000):
com.android.internal.app.ChooserActivity”. What the Android System do is call all the compatible applications in the device and show them in the
screen. In this way, the user can pick any of those applications and continue. Because they are context dependent (depending on the applications
installed in each phone), there is no way to know which application will appear in the chosen list forehand. That’s why the keyword watched
corresponds to the actions of pick application.
Fortunately the states “Upload videos” and “Share a video” are called from different states when no context menu is used. “Share a video” is called
from the states:
• 13. Play Video
• 14. Video Playing Finished
• 16. Show information
Upload videos is called from the states:
• 1. Main screen
• 7. Search result Empty/Ok
• 8. Subscription updates
• 9. More recommended
• 10. Most viewed
• 11. Most discussed
• 12. Top rated
• 15. Read comments
• 19. My account
92
• 20. Favorite videos
• 21. My subscriptions
• 22. Show a subscribed / an subscribed channel
• 23. My playlist
• 24. Show a playlist
• 25. My videos
• 36. Categories
• 27-41. Show a category
So, like the note 1, the previous state is recorded always and consulted when the keyword com.android.internal.app.ChooserActivity appears.
C.1.2 General statuses
Status Buffer Tag Keyword Example
Launche
d
Events am_proc_
bound
com.google.andro
id.youtube
05-16 19:43:59.416 I/am_proc_bound( 98): [9121,com.google.android.youtube]
Finished Events am_proc_
died
com.google.andro
id.youtube
05-16 20:28:00.286 I/am_proc_died( 98): [9657,com.google.android.youtube]
Finished Main ActivityM
anager
Force removing
process
com.google.com.a
ndroid.youtube
05-26 19:00:35.353: DEBUG/ActivityManager(119): Force removing process
ProcessRecord{44cb5fd8 10205:com.google.android.youtube/10004}
(com.google.android.youtube/10004)
C.1.3 Modes
Mode Buffer Tag Keyword Example
Logged
in
Events am_create
_activity
com.google.andro
id.youtube.action.
LOGIN
05-16 19:44:01.336 I/am_create_activity( 98):
[1154025272,92,com.google.android.youtube/.login.GlsLoginActivity,com.google.androi
d.youtube.action.LOGIN,,,0]
93
Mode Buffer Tag Keyword Example
Logged
in
Main YouTube user is logged in 05-23 17:50:51.707: INFO/YouTube(2533): widget: user is logged in
Logged
out
Events am_create
_activity
com.google.andro
id.youtube.action.
LOGOUT
05-16 20:23:45.106 I/am_create_activity( 98):
[1155144880,92,com.google.android.youtube/.login.GlsLoginActivity,com.google.androi
d.youtube.action.LOGOUT,,,0]
C.1.4 Parallel actions
Action Buffer Tag Keyword Example
Start
uploadin
g video
recorded
Events am_create
_service
com.google.andro
id.apps.uploader/.
UploadService
com.google.andro
id.apps.uploader.a
ction.UPLOAD
(See note 1)
05-16 20:45:34.856 I/am_create_service( 98):
[1152474112,com.google.android.apps.uploader/.UploadService,act=com.google.android.
apps.uploader.action.UPLOAD,9850]
Start
uploadin
g video
Events am_create
_service
com.google.andro
id.apps.uploader/.
UploadService
com.google.andro
id.apps.uploader.a
ction.UPLOAD
(See note 1)
05-16 21:26:38.911 I/am_create_service( 98):
[1154546520,com.google.android.apps.uploader/.UploadService,act=com.google.android.
apps.uploader.action.UPLOAD,10336]
Note 1
As the case described in note 1 of the appendix C.1.1, an activity has been reutilized, which cause the parallel actions have the same event logs. The
solution is the same: by recording the previous state, the actual parallel action is detected.
94
C.2 Keyword used to detect internal states
This table is going to show the internal states that one state could be. They can be detected by using the main log buffer. The unique cases when the
event logs are needed are when the user is trying to see the captions (16. Play video and 17.Video playing finished).
# State Internal
State
Buffer Tag Keyword Example
1 Main
screen
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:28:44.331: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/9w_5rXpfXpA/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:28:20.631: DEBUG/YouTube(4609): My account request
successful, type ADD_FAVORITE
7 Search
result
Empty/Ok
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:29:19.151: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/uxTDK1S5qJ0/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:29:38.521: DEBUG/YouTube(4609): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/videos?
&q=
05-28 21:36:18.440: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/videos?format=2%2C3%2C9&max-
results=9&q=hold+it+against+me&safeSearch=strict&start-
index=1&time=this_month&v=2].
95
# State Internal
State
Buffer Tag Keyword Example
8 Subscripti
ons
updates
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:30:32.991: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/QvrSeVdyiAQ/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:30:51.161: DEBUG/YouTube(4609): My account request
successful, type ADD_FAVORITE
9 More
recommen
ded
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:31:25.351: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/l7AUa8k4w50/ratings?client
=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:31:43.261: DEBUG/YouTube(4609): My account request
successful, type ADD_FAVORITE
10 Most
viewed
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:32:16.801: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/8fRaSV9uNDg/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:32:39.581: DEBUG/YouTube(4609): My account request
successful, type ADD_FAVORITE
96
# State Internal
State
Buffer Tag Keyword Example
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed
05-28 21:37:12.590: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed?form
at=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
11 Most
discussed
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:33:34.891: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/8Y0ZzXKyWzM/ratings?cli
ent=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:33:50.731: DEBUG/YouTube(4609): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_discussed
05-28 21:37:53.220: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_discussed?fo
rmat=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
12 Top rated Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:34:47.331: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/y63IVluVGnA/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:35:38.461: DEBUG/YouTube(4829): My account request
successful, type ADD_FAVORITE
97
# State Internal
State
Buffer Tag Keyword Example
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
top_rated
05-28 21:38:31.620: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/top_rated?format=
2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
13 Play video Play
video
[Video
paused]
Main AudioPoli
cyService
startOutput 06-01 18:14:42.128: INFO/AudioPolicyService(1362): startOutput(): before
lock
Pause
video
[Video
playing]
Main PlayerDriver handlePause 04-29 17:34:52.903: INFO/PlayerDriver(77): PlayerDriver::handlePause
Scroll
video
(See note
1)
Main PlayerDriver buffering
percentage not
normal
06-01 21:59:41.358: INFO/PlayerDriver(2892): buffering percentage=57
06-01 21:59:41.758: INFO/PlayerDriver(2892): buffering percentage=42
06-01 21:59:41.978: INFO/PlayerDriver(2892): buffering percentage=29
06-01 21:59:42.238: INFO/PlayerDriver(2892): buffering percentage=23
06-01 21:59:42.498: INFO/PlayerDriver(2892): buffering percentage=24
06-01 21:59:42.778: INFO/PlayerDriver(2892): buffering percentage=25
06-01 21:59:43.088: INFO/PlayerDriver(2892): buffering percentage=26 Forward
video
(See note
1)
Main PlayerDriver buffering
percentage not
normal
Backwar
d Video
(See note
1)
Main PlayerDriver buffering
percentage not
normal
98
# State Internal
State
Buffer Tag Keyword Example
HD on
[HD off]
(See note
2)
Main YouTube PlayerActivity.pla
y
06-01 20:21:36.708: INFO/YouTube(4579): PlayerActivity.play
http://v4.lscache6.googlevideo.com/videoplayback?app=youtube_gdata&clien
t=mvapp-android-
htc&devKey=ATEU_r3RX2afGwq_gCqiS2UO88HsQjpE1a8d1GxQnGDm&
el=videos&expire=1309544431&id=249dc032de54e834&ip=0.0.0.0&ipbits=
0&itag=17&key=yta1&signature=94378869C34672B91C9EB557072347A7
B0A45B0A.D00327F6D5A84910E8442A528A6C3FA0C6650B3D&sparams
=id,itag,uaopt,ip,ipbits,expire&uaopt=no-save at 62902
HD off
[HD on]
(See note
2)
Main YouTube PlayerActivity.pla
y
Show
captions
Events menu_item_
selected
Captions 05-28 20:45:25.580 I/menu_item_selected(10066): [0,Captions]
Video
rated
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/videos/
ratings
05-25 13:36:59.531: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/zwd5faVtfEI/ratings?client=m
vapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:37:33.141: DEBUG/YouTube(4829): My account request
successful, type ADD_FAVORITE
Video
Playing
finished
[Video
left]
Main YouTube PlayerActivity.pla
y
at 0
06-01 20:26:56.828: INFO/YouTube(4579): PlayerActivity.play
http://v22.lscache1.googlevideo.com/videoplayback?app=youtube_gdata&clie
nt=mvapp-android-
htc&devKey=ATEU_r3RX2afGwq_gCqiS2UO88HsQjpE1a8d1GxQnGDm&
el=videos&expire=1309544431&id=249dc032de54e834&ip=0.0.0.0&ipbits=
0&itag=18&key=yta1&signature=ECEC543A2C43EF504BFBDBE4CE65A5
E7BA49EB93.E508232E738CF6EC5E98E90FAEAE1DAA02E80C03&spar
ams=id,itag,uaopt,ip,ipbits,expire&uaopt=no-save at 0
99
# State Internal
State
Buffer Tag Keyword Example
14 Video
playing
finished
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:39:10.471: INFO/YouTube(4829): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/zbGJz-
Mhqr4/ratings?client=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:39:27.421: DEBUG/YouTube(4829): My account request
successful, type ADD_FAVORITE
Show
captions
Events menu_item_
selected
Captions 05-28 20:49:21.970 I/menu_item_selected(10066): [0,Captions]
16 Show
informatio
n
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:41:44.061: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/RPH7LXPZFBo/ratings?clie
nt=mvapp-android-htc].
Video set
as
favorite
[Unfavor
ite video]
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:41:57.851: DEBUG/YouTube(4829): My account request
successful, type ADD_FAVORITE
Video set
as
unfavorit
e[favorite
video]
Main YouTube My account
request successful
REMOVE_FAVO
RITE
05-25 13:42:31.001: DEBUG/YouTube(4829): My account request
successful, type REMOVE_FAVORITE
100
# State Internal
State
Buffer Tag Keyword Example
19 My
account
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:45:59.941: INFO/YouTube(4829): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/icDh-
Tj669Q/ratings?client=mvapp-android-htc].
Video set
as
favorite
[Unfavor
ite video]
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:47:34.921: DEBUG/YouTube(4829): My account request
successful, type ADD_FAVORITE
Video set
as
unfavorit
e[favorite
video]
Main YouTube My account
request successful
REMOVE_FAVO
RITE
05-25 13:46:21.321: DEBUG/YouTube(4829): My account request
successful, type REMOVE_FAVORITE
Video
deleted
Main YouTube My account
request successful
DELETE_MY_VI
DEO
05-25 13:48:04.411: DEBUG/YouTube(4829): My account request
successful, type DELETE_MY_VIDEO
20 Favorite
videos
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:52:08.621: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/PHCw4FxCPro/ratings?clie
nt=mvapp-android-htc].
Video set
as
unfavorit
e
Main YouTube My account
request successful
REMOVE_FAVO
RITE
05-25 13:49:54.181: DEBUG/YouTube(4829): My account request
successful, type REMOVE_FAVORITE
101
# State Internal
State
Buffer Tag Keyword Example
22 Show a
subscribed
/ an
unsubscrib
ed channel
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 13:53:06.211: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/TCrCbq2TQiQ/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 13:53:25.321: DEBUG/YouTube(4829): My account request
successful, type ADD_FAVORITE
Subscrib
e a
channel
Main YouTube My account
request successful
SUBSCRIBE_TO
_CHANNEL
05-25 13:53:44.591: DEBUG/YouTube(4829): My account request
successful, type SUBSCRIBE_TO_CHANNEL
Unsubscr
ibe a
channel
Main YouTube My account
request successful
UNSUBSCRIBE_
FROM_CHANNE
L
05-25 13:59:55.061: DEBUG/YouTube(4978): My account request
successful, type UNSUBSCRIBE_FROM_CHANNEL
24 Show a
playlist
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:02:07.671: INFO/YouTube(4978): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/KyJtsxKIS2k/ratings?client
=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:02:24.461: DEBUG/YouTube(4978): My account request
successful, type ADD_FAVORITE
102
# State Internal
State
Buffer Tag Keyword Example
25 My videos Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:08:08.611: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/n_4bE2dYZy8/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:09:45.391: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Video
deleted
Main YouTube My account
request successful
DELETE_MY_VI
DEO
05-25 14:18:44.501: DEBUG/YouTube(5143): My account request
successful, type DELETE_MY_VIDEO
27 Show a
category
(Cars &
vehicles)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:27:13.231: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/47ItSdBqggA/ratings?client
=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:27:37.831: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
103
# State Internal
State
Buffer Tag Keyword Example
Time
filter
Main YouTube url=[http://gdata.
youtube.com/feed
s/api/standardfee
ds/
most_viewed_Au
tos
&v=
05-28 21:39:27.470: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_A
utos?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
28 Show a
category
(Comedy)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:28:17.921: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/uC1VlSO4HXw/ratings?clie
nt=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:28:36.701: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Co
medy
&v=
05-28 21:40:02.770: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Co
medy?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
29 Show a
category
(Education
)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:29:14.481: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/QdTQqUGdiBE/ratings?clie
nt=mvapp-android-htc].
104
# State Internal
State
Buffer Tag Keyword Example
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:29:28.941: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Edu
cation
&v=
05-28 21:40:36.020: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Edu
cation?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
30 Show a
category
(Entertain
ment)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:30:16.271: INFO/YouTube(5143): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/R-
pWP2M449c/ratings?client=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:30:31.081: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Ent
ertainment
&v=
05-28 21:41:29.840: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ente
rtainment?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
105
# State Internal
State
Buffer Tag Keyword Example
31 Show a
category
(Film &
Animation
)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:31:21.791: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/nb67EDkRF04/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:31:52.181: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Fil
m
&v=
05-28 21:41:58.130: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Film
?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
32 Show a
category
(Gaming)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:32:31.911: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/2m5HbpsOIG8/ratings?clien
t=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:32:49.321: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
106
# State Internal
State
Buffer Tag Keyword Example
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Ga
mes
&v=
05-28 21:42:31.020: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ga
mes?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
33 Show a
category
(Howto &
Style)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:33:29.891: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/4ZkJKtctoKE/ratings?client
=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:33:44.011: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Ho
wto
&v=
05-28 21:43:02.450: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ho
wto?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
34 Show a
category
(Music)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:34:25.671: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/C2FBDr9_jxo/ratings?client
=mvapp-android-htc].
107
# State Internal
State
Buffer Tag Keyword Example
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:34:40.631: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Mu
sic
&v=
05-28 21:43:40.940: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Mus
ic?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
35 Show a
category
(News &
Politics)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:36:18.241: INFO/YouTube(5143): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/IIZjQ-
BK76Y/ratings?client=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:36:31.941: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Ne
ws
&v=
05-28 21:44:12.260: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_New
s?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
108
# State Internal
State
Buffer Tag Keyword Example
36 Show a
category
(Nonprofit
s &
Activism)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-28 21:45:20.341: INFO/YouTube(10066): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/VRq6K_eMRPg/ratings?clie
nt=mvapp-android-htc.
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-28 21:45:26.392: DEBUG/YouTube(10066): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Non
profits
&v=
05-28 21:45:27.230: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/US/most_viewed_Non
profit?format=2%2C3%2C9&max-results=9&safeSearch=moderate&start-
index=1&time=this_month&v=2].
37 Show a
category
(People &
Blogs)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:37:15.851: INFO/YouTube(5143): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/v-
6OYcZaKgg/ratings?client=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:37:37.801: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
109
# State Internal
State
Buffer Tag Keyword Example
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Peo
ple
&v=
05-28 21:44:41.490: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Peo
ple?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
38 Show a
category
(Pets &
Animals)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:38:24.741: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/6aky1mAdDF8/ratings?clie
nt=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:38:44.551: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Ani
mals
&v=
05-28 21:45:07.380: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Ani
mals?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
39 Show a
category
(Science &
Technolog
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:39:27.311: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/njxP4t1WS4U/ratings?client
=mvapp-android-htc].
110
# State Internal
State
Buffer Tag Keyword Example
y) Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:39:43.111: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Tec
h
&v=
05-28 21:46:30.120: DEBUG/YouTube(10066): Trying store file for
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Tec
h?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
40 Show a
category
(Sport)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:40:37.381: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/RjaDV7WHUmg/ratings?cli
ent=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:40:51.141: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Spo
rts
&v=
05-28 21:47:01.420: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Spor
ts?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
111
# State Internal
State
Buffer Tag Keyword Example
41 Show a
category
(Travel &
Events)
Video
rated
Main YouTube url=[http://gdata.
youtube.com/fee
ds/api/videos/
ratings
05-25 14:41:33.201: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/frB865UXBtE/ratings?client
=mvapp-android-htc].
Video set
as
favorite
Main YouTube My account
request successful
ADD_FAVORIT
E
05-25 14:41:52.951: DEBUG/YouTube(5143): My account request
successful, type ADD_FAVORITE
Time
filter
Main YouTube url=[http://gdata.y
outube.com/feeds/
api/standardfeeds/
most_viewed_Tra
vel
&v=
05-28 21:47:28.790: INFO/YouTube(10066): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewed_Trav
el?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_month&v=2].
42 Settings
(See
note3)
High
quality
video on
mobile
checked
[High
quality
video on
mobile
unchecke
d]
- - - No log generated
112
# State Internal
State
Buffer Tag Keyword Example
Hight
quality
video on
a mobile
unchecke
d [High
quality
video on
mobile
checked]
- - - No log generated
Captions
font size
set
- - - No log generated
Search
history
cleaned
- - - No log generated
Term of
service
read
- - - No log generated
General note:
There are several states which has “Time filter” as internal state. This internal state causes a reloading of the state. From the point of view of the logs, it
is exactly the same if the user enters to the states again.
The states which has “Time filter ” as internal state are:
• 7. Search result Empty/Ok
• 10. Most viewed
• 11. Most discussed
113
• 12. Top rated
• 27-41. Show a category
Note 1:
The three internal states belong to Play video: Scroll video, Backward video and Forward video produce the same effect: Change the position of the
point that is going to reproduce.
The most important thing is when the video is paused, no matter where is the point where is going to reproduce (play), no special log will be generated.
The unique way to know if the user is playing from a non-continue point is monitor the buffering percentage.
The buffering percentage indicates the percentage of video streaming saved in the buffer. It goes from 1 (1%) to 100 (100%). Here is an example:
06-01 22:01:31.908: INFO/PlayerDriver(2892): buffering percentage=89
When the video is playing normally, it could increase 0, 1 or 2, but never more than 2 or even decrease. If it happens, we are sure that the scroll has
been changed.
Note 2:
The internal states related to the quality of the video (HD on, HD off) when the user is playing a video, cause the program to create a new player and
load a complete different video.
Note 3:
All the changed of Settings is saved inside the file using the Shared preference option that Android offers. That’s why it does not generate any log.
114
115
Appendix D
Specific information obtained through logs
The below tables show all the possible data that can get from the logs. They are classified by states from 1 to 44, modes and parallel’s actions. (General
status don’t generate useful data from the logs)
1. Main screen
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOLOADE
DID/default.jpg].
04-28 21:10:15.009: DEBUG/YouTube(12364): Trying store file for
url=[http://i.ytimg.com/vi/cfUO8l8mnG4/default.jpg].
Video
Rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:28:44.331: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/9w_5rXpfXpA/ratings?
client=mvapp-android-htc]. Video
rated
Main YouTube Client client=CLIENT
2. Start recording video
This state is context dependent.
3. Video recording finished
This state is context dependent.
4. Fill information about a video recorded
116
Main/
Internal
State
Buffer Tag Data Format Example
Main Main MediaUpl
oader
Account Id Got authToken for
ACCOUNT ID
04-29 19:15:57.481: DEBUG/MediaUploader(21368): Got authToken
5. Showing keyboard
Context dependent
6. Start searching
No relevant information generated
7. Search result Empty/Ok
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Format format=FORMAT 05-29 17:52:35.139: DEBUG/YouTube(24698): Trying store file for
url=[http://gdata.youtube.com/feeds/api/videos?format=2%2C3%2C9
&max-results=9&q=hold+it+against+me&safeSearch=strict&start-
index=1&time=this_month&v=2].
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Keyword q=KEYWORD
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
117
Main/
Internal
State
Buffer Tag Data Format Example
Main (see
note 1)
Main YouTube Time time=TIME
Main Main YouTube V v=V
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-27 19:47:39.748: INFO/YouTube(3752): Requesting using MASF
url=[http://i.ytimg.com/vi/CD2LRROpph0/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:29:19.151: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/uxTDK1S5qJ0/ratings?
client=mvapp-android-htc].
Video
rated
Main YouTube Client client=CLIENT
Note: When the user is looking for a video for the first time, the time will be consider “All time”. In that case, the data format won’t appear. If after the
user has finished searching, she uses the “Time filter” option to filter the time, then the time field will appear.
8. Subscriptions updates
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Format format=FORMAT 05-16 19:53:52.016: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/newsubscriptionv
ideos?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&v=2].
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Keyword q=KEYWORD
118
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube V v=V
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-27 19:18:19.077: DEBUG/YouTube(3530): Trying store file for
url=[http://i.ytimg.com/vi/AloBQyjEI0A/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:30:32.991: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/QvrSeVdyiAQ/ratings?
client=mvapp-android-htc].
Video
rated
Main YouTube Client client=CLIENT
9. More recommended
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Format format=FORMAT 05-16 19:55:08.546: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/recommendations
?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-Main Main YouTube max-results max-result=MAX-
RESULT
119
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
index=1&v=2&video_id=7f8y4SR9mjU%2CImUTvk8LBmA%2CSE
BLt6Kd9EY%2CDCicNdhcoZw%2CficwZQYmRLE%2CR6CvzUDs
OFQ%2CLbOOPKBg0iA%2Cl1ZCccf78Ck%2CBYhxBwMY-5c]. Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube V v=V
Main Main YouTube Played
videos id
video_id=PLAYEDVI
DEOSID
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-29 19:35:28.347: INFO/YouTube(21116): Requesting using MASF
url=[http://i.ytimg.com/vi/JKGu2n6914M/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:31:25.351: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/l7AUa8k4w50/ratings?
client=mvapp-android-htc]. Video
rated
Main YouTube Client client=CLIENT
10. Most viewed
120
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube LOCALE gdata.youtube.com/fee
ds/api/standardfeeds/L
OCALE/most_viewed
05-16 19:56:24.646: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewe
d?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2]. Main Main YouTube Format format=FORMAT
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube Time time=TIME
Main Main YouTube V v=V
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-28 19:18:06.081: INFO/YouTube(12364): Requesting using MASF
url=[http://i.ytimg.com/vi/rEc1mLhN284/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:32:16.801: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/8fRaSV9uNDg/ratings?
client=mvapp-android-htc].
Video
rated
Main YouTube Client client=CLIENT
121
11. Most discussed
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Locale gdata.youtube.com/fee
ds/api/standarfeeds/L
OCALE/most_discuss
ed
05-16 19:57:42.126: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_discus
sed?format=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2].
Main Main YouTube Format format=FORMAT
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube Time time=TIME
Main Main YouTube V v=V
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-27 19:14:47.137: INFO/YouTube(2900): Requesting using MASF
url=[http://i.ytimg.com/vi/lVoIi1fDt58/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:33:34.891: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/8Y0ZzXKyWzM/rating
122
Main/
Internal
State
Buffer Tag Data Format Example
Video
rated
Main YouTube Client client=CLIENT s?client=mvapp-android-htc] .
12. Top rated
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Locale gdata.youtube.com/fee
ds/api/standarfeeds/L
OCALE/top_rated
05-16 19:58:28.056: INFO/YouTube(9121): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/top_rated?f
ormat=2%2C3%2C9&max-results=9&safeSearch=strict&start-
index=1&time=this_week&v=2]. Main Main YouTube Format format=FORMAT
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube Time time=TIME
Main Main YouTube V v=V
123
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-27 19:29:19.995: DEBUG/YouTube(3752): Trying store file for
url=[http://i.ytimg.com/vi/WUt1TZ7T53A/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:34:47.331: INFO/YouTube(4609): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/y63IVluVGnA/ratings?
client=mvapp-android-htc].
Video
rated
Main YouTube Client client=CLIENT
13. Play video
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube App app=APP 06-05 14:28:03.116: INFO/YouTube(14466): PlayerActivity.play
http://v7.lscache8.googlevideo.com/videoplayback?app=youtube_gdata
&client=mvapp-android-
htc&devKey=ATEU_r3RX2afGqq_gCqiS2UO88HsQjpE1a8d1GxQn
GDm&el=videos&expire=1309868881&id=cfab3da43d708418&ip=0.
0.0.0&ipbits=0&itag=18&key=yta1&signature=3F145C2B23C4E9ED
92D37321AA5869627225B1C4.DBADC8686DBEE87183C7C803D5
99D231C36C51C7&sparams=id,itag,uaopt,ip,ipbits,expire&uaopt=no-
save at 0
Main Main YouTube Client client=CLIENT
Main Main YouTube DevKey devKey=DEVKEY
Main Main YouTube Element el=ELEMENT
Main Main YouTube Date expire expire=DATEEXPIR
E
Main Main YouTube id id=ID
124
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube IP ip=IP
Main Main YouTube IPbits ipbits=IPBITS
Main Main YouTube Itag itag=ITAG
Main Main YouTube key key=KEY
Main Main YouTube Signature singature=SIGNATU
RE
Main Main YouTube SParameters sparams=SPARAMET
ERS
Main Main YouTube UAOption uaopt=UAOPTION
Main Main YouTube Video
starting time
(ms)
at
VIDEOSTARTINGTI
ME
Main
(See note
1)
Main PlayerDriv
er
Buffering
percentage
buffering percentage =
BUFFERINGLEVEL
04-29 14:29:09.564: INFO/PlayerDriver(77): buffering
percentage=100
Main Main YouTube Id of the
video
related
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-29 14:27:56.094: INFO/YouTube(17527): Requesting using MASF
url=[http://i.ytimg.com/vi/SrJTatTlY-g/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:36:59.531: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/zwd5faVtfEI/ratings?cl
125
Main/
Internal
State
Buffer Tag Data Format Example
Video
rated
Main YouTube Client client=CLIENT ient=mvapp-android-htc].
Note 1:
There are two different types of logs that display the information about buffering. The first one shows the buffering level more or less each 10 seconds
and the second one shows per each level of buffering (from 1% to 100%). Here come the examples:
...
04-29 14:28:40.154: INFO/PlayerDriver(77): buffering (74)
04-29 14:28:40.594: INFO/PlayerDriver(77): buffering percentage=75
04-29 14:28:41.554: INFO/PlayerDriver(77): buffering percentage=76
04-29 14:28:41.704: INFO/PlayerDriver(77): buffering percentage=77
04-29 14:28:43.314: INFO/PlayerDriver(77): buffering percentage=77
04-29 14:28:43.794: INFO/PlayerDriver(77): buffering percentage=78
04-29 14:28:44.834: INFO/PlayerDriver(77): buffering percentage=79
04-29 14:28:45.954: INFO/PlayerDriver(77): buffering percentage=80
04-29 14:28:47.214: INFO/PlayerDriver(77): buffering percentage=81
04-29 14:28:48.234: INFO/PlayerDriver(77): buffering percentage=82
04-29 14:28:49.134: INFO/PlayerDriver(77): buffering percentage=83
04-29 14:28:50.315: INFO/PlayerDriver(77): buffering percentage=83
04-29 14:28:50.315: INFO/PlayerDriver(77): buffering (83)
...
The first log corresponds to the log of first type. It shows that at 14:28:40.154 of 29 of April, the buffering level is 74%. Then there come logs of the
second type, which shows the exact moment when the buffering level has increase. Finally, the log of first type appears again, which shows that at
14:28:50.315 of 29 of April, the buffering level is 83%.
Because the first type of the logs is redundant, the database will save just information offered by the logs of second type.
126
14. Video playing finished
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
06-07 13:00:29.673: INFO/YouTube(11916): Requesting using MASF
url=[http://i.ytimg.com/vi/9Ngh7LIn5qw/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:39:10.471: INFO/YouTube(4829): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/zbGJz-
Mhqr4/ratings?client=mvapp-android-htc] .
Video
rated
Main YouTube Client client=CLIENT
15. Read comments
Not relevant data generated in this state
16. Show information
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Video id url=[http://qdata.youtu
be.com/fedds/api/vide
os/VIDEOID/related
04-28 22:12:12.969: INFO/YouTube(12364): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/videos/rVHLme7LtYs/related?
client=mvapp-android-htc&format=2%2C3%2C9&max-
results=6&start-index=1]. Main Main YouTube Client client=CLIENT
Main Main YouTube Format format=FORMAT
127
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-28 22:12:14.719: INFO/YouTube(12364): Requesting using MASF
url=[http://i.ytimg.com/vi/9Hk_jLWH_WQ/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:41:44.061: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/RPH7LXPZFBo/rating
s?client=mvapp-android-htc].
Video
rated
Main YouTube Client client=CLIENT
Video set
as
unfavorit
e
[Favorite
video]
Main YouTube User name url=[http://gdata.youtu
be.com/feeds/api/users
/USERNAME/favorite
s
05-25 13:42:30.341: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/users/pablomunyoz/favorites/v
jVQa1PpcFNccnRzPqX-
SNux2tQXoXogtKmAoJGQap4?client=mvapp-android-htc].
128
Main/
Internal
State
Buffer Tag Data Format Example
Video set
as
unfavorit
e
[Favorite
video]
Main YouTube Client client=CLIENT
17. Upload video
This state is context dependent.
18. Fill information about a video uploaded
Main/
Internal
State
Buffer Tag Data Format Example
Main Main MediaUpl
oader
Account Id Got authToken for
ACCOUNT ID
04-28 20:20:40.656: DEBUG/MediaUploader(12915): Got authToken
19. My account
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
05-28 13:49:18.048: DEBUG/YouTube(711): Trying store file for
url=[http://i.ytimg.com/vi/y63IVluVGnA/default.jpg].
129
Main/
Internal
State
Buffer Tag Data Format Example
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:45:59.941: INFO/YouTube(4829): Requesting using direct
connection url=[http://gdata.youtube.com/feeds/api/videos/icDh-
Tj669Q/ratings?client=mvapp-android-htc].
Video
rated
Main YouTube Client client=CLIENT
Video
rated (See
note 1)
Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
05-28 14:16:55.188: DEBUG/YouTube(1370): Trying store file for
url=[http://i.ytimg.com/vi/aC-KOYQsIvU/default.jpg].
Video set
as
unfavorit
e
[Favorite
video]
Main YouTube User name url=[http://gdata.youtu
be.com/feeds/api/users
/USERNAME/favorite
s
05-25 13:46:20.711: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/users/pablomunyoz/favorites/v
jVQa1PpcFNccnRzPqX-SKqqI1TfrSg5Bbp0ZZEJ0Wo?client=mvapp-
android-htc].
Video set
as
unfavorit
e
[Favorite
video]
Main YouTube Client client=CLIENT
130
Main/
Internal
State
Buffer Tag Data Format Example
Video set
as
unfavorit
e
[Favorite
video]
(See note
2)
Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
05-27 13:23:43.108: INFO/YouTube(24156): Requesting using MASF
url=[http://i.ytimg.com/vi/_6krXiXFe5o/default.jpg].
Video
deleted
Main YouTube User name url=[http://gdata.youtu
be.com/feeds/api/users
/USERNAME/uploads
05-25 13:48:03.811: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/users/pablomunyoz/uploads/cJ
l1Ms7Ou1Q?client=mvapp-android-htc].
Video
deleted
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/users
/username/uploads/VI
DEOID
Video
deleted
Main YouTube Client client=CLIENT
video
deleted
(See note
3)
Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
05-28 14:35:01.248: INFO/YouTube(1370): Requesting using MASF
url=[http://i.ytimg.com/vi/vDmhuNve7TM/default.jpg].
Note 1: The unique way to invoke this internal state is select a video from “My videos”, holding the finger pressed on the screen and select the option
“Favorite” from the context menu. This cause the YouTube application interacts again with the server in order to update the data. This action could
trigger the requesting of new data.
131
Note 2: When a video is set as unfavorite, it should be removed from the list of the favorite videos. Then the screen should be updated.
Note 3: When a video is deleted, it should be removed from the list of “My videos”. Then the screen should be updated.
20. Favorite videos
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube max-results max-result=MAX-
RESULT
04-28 13:56:26.979: INFO/YouTube(8676): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/favorites?max-
results=9&safeSearch=strict&start-index=1&v=2]. Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube V v=V
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-28 13:56:28.969: DEBUG/YouTube(8676): Trying store file for
url=[http://i.ytimg.com/vi/9duD_mf8-T8/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:52:08.621: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/PHCw4FxCPro/ratings
?client=mvapp-android-htc]. Video
rated
Main YouTube Client client=CLIENT
132
Main/
Internal
State
Buffer Tag Data Format Example
Video set
as
unfavorit
e
Main YouTube User name url=[http://gdata.youtu
be.com/feeds/api/users
/USERNAME/favorite
s
05-25 13:49:53.521: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/users/pablomunyoz/favorites/v
jVQa1PpcFNccnRzPqX-SMWXgRH3sC59UB-rleK7-
1I?client=mvapp-android-htc]. Video set
as
unfavorit
e
Main YouTube Client client=CLIENT
Video set
as
unfavorit
e
Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
21. My subscriptions
Not relevant data generated in this state
22. Show a subscribed/ an unsubscribed channel
Main/
Internal
State
Buffer Tag Data Format Example
Main (see
note 1)
Main YouTube Channel id url=[http://gdata.youtu
be.com/feeds/api/users
/CHANNELID/upload
s
05-28 14:53:40.718: DEBUG/YouTube(1370): Trying store file for
url=[http://gdata.youtube.com/feeds/api/users/Antonpup/uploads?max-
results=9&start-index=1&v=2].
133
Main/
Internal
State
Buffer Tag Data Format Example
Main (see
note 1)
Main YouTube max-results max-result=MAX-
RESULT
Main (see
note 1)
Main YouTube Start index start-index=START-
INDEX
Main (see
note 1)
Main YouTube V v=V
Main Main Main YouTube Id of the video shown
in the screen
04-28 14:16:38.104: DEBUG/YouTube(8676): Trying store file for
url=[http://i.ytimg.com/vi/N9oxmRT2YWw/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 13:53:06.211: INFO/YouTube(4829): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/TCrCbq2TQiQ/ratings?
client=mvapp-android-htc]. Video
rated
Main YouTube Client client=CLIENT
Unsubscr
ibe a
channel
Main YouTube User name url=[http://gdata.youtu
be.com/feeds/api/users
/USERNAME
04-28 20:34:57.340: INFO/YouTube(12364): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/users/pablomunyoz/subscriptio
ns/6ko_zSB7WmHOyDqfKizbxVLIFycHy8PZZBz2v9GMmxI?client
=mvapp-android-htc]. Unsubscr
ibe a
channel
Main YouTube Client client=CLIENT
Subscribe
a channel
Main YouTube Channel id Subscribe to channel
CHANNELID
04-28 20:31:41.330: DEBUG/YouTube(12364): Subscribe to channel
ya99ya1
134
Note 1: It generated two types of main logs for each channel. For example, it generated those main logs for the channel “Antonpup”:
05-28 14:53:40.678: DEBUG/YouTube(1370): Trying store file for url=[http://gdata.youtube.com/feeds/api/users/Antonpup?v=2].
05-28 14:53:40.718: DEBUG/YouTube(1370): Trying store file for url=[http://gdata.youtube.com/feeds/api/users/Antonpup/uploads?max-
results=9&start-index=1&v=2].
The second one is utilized to obtain information.
23. My playlist
Not relevant information generated in this state.
24. Show a playlist
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Playlist Id url=[http://gdata.youtu
be.com/feeds/api/playl
ists/PLAYLISTID
04-28 14:12:54.864: INFO/YouTube(8676): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/playlists/037BB0C6722C73A
E].
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-28 14:12:57.174: DEBUG/YouTube(8676): Trying store file for
url=[http://i.ytimg.com/vi/OYecfV3ubP8/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 14:02:07.671: INFO/YouTube(4978): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/KyJtsxKIS2k/ratings?cl
ient=mvapp-android-htc]. Video
rated
Main YouTube Client client=CLIENT
25. My videos
135
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube max-results max-result=MAX-
RESULT
04-28 13:58:16.796: INFO/YouTube(8676): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/users/default/uploads?max-
results=9&start-index=1&v=2]. Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube V v=V
Main Main Main YouTube Id of the video shown
in the screen
04-28 13:58:18.706: DEBUG/YouTube(8676): Trying store file for
url=[http://i.ytimg.com/vi/gJEAN1FFBao/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 14:08:08.611: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/n_4bE2dYZy8/ratings?
client=mvapp-android-htc]. Video
rated
Main YouTube Client client=CLIENT
Video
deleted
Main YouTube User name url=[http://gdata.youtu
be.com/feeds/api/users
/USERNAME/uploads
05-27 13:52:02.938: INFO/YouTube(24572): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/users/pablomunyoz/uploads/_6
krXiXFe5o?client=mvapp-android-htc]. Video
deleted
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/users
/username/uploads/VI
DEOID
Video
deleted
Main YouTube Client client=CLIENT
136
Main/
Internal
State
Buffer Tag Data Format Example
video
deleted
(See note
1)
Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
05-27 13:52:06.378: DEBUG/YouTube(24572): Trying store file for
url=[http://i.ytimg.com/vi/wCL5rTQ_PJk/default.jpg].
Note 1: When a video is deleted, it should be removed from the list of “My videos”. Then the screen should be updated.
26. Categories
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Locale hl=LOCALE 05-28 16:04:47.218: DEBUG/YouTube(5067): Trying store file for
url=[http://gdata.youtube.com/schemas/2007/categories.cat?hl=en-
HK].
27-41. Show a category
The state 27 to 41 show the video classified by different category. Both the data charged and the internal states are the same. For simplicity, in this
document is going to show the examples for the category “Comedy”.
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube Locale url=[http://gdata.youtu
be.com/feeds/api/stand
ardfeeds/LOCALE
04-28 14:18:03.334: INFO/YouTube(8676): Requesting using MASF
url=[http://gdata.youtube.com/feeds/api/standardfeeds/HK/most_viewe
d_Comedy?format=2%2C3%2C9&max-
results=9&safeSearch=strict&start-index=1&time=this_week&v=2]. Main Main YouTube Format format=FORMAT
137
Main/
Internal
State
Buffer Tag Data Format Example
Main Main YouTube max-results max-result=MAX-
RESULT
Main Main YouTube Safe search safeSearch=SAFESE
ARCH
Main Main YouTube Start index start-index=START-
INDEX
Main Main YouTube Time time=TIME
Main Main YouTube V v=V
Main Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
04-28 14:18:06.084: DEBUG/YouTube(8676): Trying store file for
url=[http://i.ytimg.com/vi/cGNy-3JHOM8/default.jpg].
Video
rated
Main YouTube Video id url=[http://gdata.youtu
be.com/feeds/api/vide
os/VIDEOID/ratings
05-25 14:27:13.231: INFO/YouTube(5143): Requesting using direct
connection
url=[http://gdata.youtube.com/feeds/api/videos/47ItSdBqggA/ratings?c
lient=mvapp-android-htc] . Video
rated
Main YouTube Client client=CLIENT
42. Settings
No log generated in this state.
43. Share a video
This state is context dependent.
138
44. Flag a video
Main/
Internal
State
Buffer Tag Data Format Example
Main Events am_new_i
ntent
Video id http://m.youtube.com/
falg?v=VIDEOID
05-16 20:21:12.636 I/am_new_intent( 98):
[1153878800,84,com.android.browser/.BrowserActivity,android.intent.
action.VIEW,,http://m.youtube.com/flag?v=Cr5M8dbhYfs,4194304]
Modes
Logged in
Buffer Tag Data Format Example
Main YouTube Id of the
video
shown in
the screen
url=[http://i.ytimg.co
m/vi/VIDEOID/defaul
t.jpg].
05-28 18:40:32.770: DEBUG/YouTube(7422): Trying store file for
url=[http://i.ytimg.com/vi/y63IVluVGnA/default.jpg].
Logged out
No relevant data generated in this state
Parallel actions
Start uploading video recorded
Buffer Tag Data Format Example
Main MediaUpl
oader
Account Id Getting youtube
authToken for
ACCOUNT ID
04-27 19:06:00.325: DEBUG/MediaUploader(284): Getting youtube authToken
139
Start uploading video
Buffer Tag Data Format Example
Main MediaUpl
oader
Account Id Getting youtube
authToken for
ACCOUNT ID
04-27 19:06:00.325: DEBUG/MediaUploader(284): Getting youtube authToken
140
Appendix E
Specifications of the device utilized for the evaluation A continuation the specification of the device used for the evaluation, which is HTC hero, is
specified. They are provided by the manufacturer in their web page1.
Specification Value
Processor Qualcomm MSM 7200A, 528 MHZ
Operating System Android
Memory ROM: 512 MB
RAM: 288 MB
Dimensions (LxWxT) 112 x 56.2 x 14,35 mm
Weight 135 grams with battery
Display 3.2-inch TFT-LCD touch-sensitive screen with
320x480 HVGA resolution
Network HSPA/WCDMA
900/2100 MHz
Up to 2 Mbps up-link and 7.2 Mbps
down-link speeds
Quad-band GSM/GPRS/EDGE
850/900/1800/1900 MHz
(Band frequency and data speed are operator
dependent)
Device Control Trackball with Enter button
GPS Internal GPS antenna
Connectivity Bluetooth 2.0 with Enhanced Data Rate and
A2DP for wireless stereo handsets
Wi-fi: IEEE 802.11 b/g
HTC extUSB (11-pin mini-USB 2.0 and audio
jack in one)
3.5 mm audio jack
Camera 5.0 megapixel color camera with auto focus
Audio supported formats MP3, AAC(AAC, AAC+, AAC-LC), AMR-NB,
WAV, MIDI and Windows Media Audio 9
Video supported formats MPEG-4, H.263, H.264 and Windows Media
Video 9
Battery Rechargeable Lithium-ion battery
Capacity: 1350 mAh
Talk time
Up to 420 minutes for WCDMA
Up to 470 minutes for GSM
Standby time
Up to 750 hours for WCDMA
Up to 440 hours for GSM
Expansion Slot microSD memory card (SD 2.0 compatible)
AC Adapter Voltage range/frequency: 100-240V AC, 50/60
Hz
DC output: 5V and 1A
Special Features G-Sensor
Digital Compress
Source: http://www.htc.com/europe/product/hero/specification.html