-
Notifications
You must be signed in to change notification settings - Fork 0
/
wfa.tex
296 lines (219 loc) · 27.4 KB
/
wfa.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
% THIS IS SIGPROC-SP.TEX - VERSION 3.1
% WORKS WITH V3.2SP OF ACM_PROC_ARTICLE-SP.CLS
% APRIL 2009
%
% It is an example file showing how to use the 'acm_proc_article-sp.cls' V3.2SP
% LaTeX2e document class file for Conference Proceedings submissions.
% ----------------------------------------------------------------------------------------------------------------
% This .tex file (and associated .cls V3.2SP) *DOES NOT* produce:
% 1) The Permission Statement
% 2) The Conference (location) Info information
% 3) The Copyright Line with ACM data
% 4) Page numbering
% ---------------------------------------------------------------------------------------------------------------
% It is an example which *does* use the .bib file (from which the .bbl file
% is produced).
% REMEMBER HOWEVER: After having produced the .bbl file,
% and prior to final submission,
% you need to 'insert' your .bbl file into your source .tex file so as to provide
% ONE 'self-contained' source file.
%
% Questions regarding SIGS should be sent to
% Adrienne Griscti ---> [email protected]
%
% Questions/suggestions regarding the guidelines, .tex and .cls files, etc. to
% Gerald Murray ---> [email protected]
%
% For tracking purposes - this is V3.1SP - APRIL 2009
\documentclass{acm_proc_article-sp}
\usepackage[utf8]{inputenc}
\usepackage[brazilian]{babel}
\usepackage{color}
\usepackage{listings}
\usepackage{textcomp}
%\usepackage{url}
\usepackage[colorlinks]{hyperref}
\definecolor{darkblue}{rgb}{0,0,0.5}
\hypersetup{ colorlinks=true, urlcolor=darkblue, linkcolor=darkblue, citecolor=darkblue }
%\usepackage{algorithm2e}
\hyphenation{Big-Blue-Button}
\newcommand{\todo}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\bf \uppercase{#1}}}
\begin{document}
\title{Mconf-Mobile: videoconferência \\BigBlueButton no Android}
%
% You need the command \numberofauthors to handle the 'placement
% and alignment' of the authors beneath the title.
%
% For aesthetic reasons, we recommend 'three authors at a time'
% i.e. three 'name/affiliation blocks' be placed beneath the title.
%
% NOTE: You are NOT restricted in how many 'rows' of
% "name/affiliations" may appear. We just ask that you restrict
% the number of 'columns' to three.
%
% Because of the available 'opening page real-estate'
% we ask you to refrain from putting more than six authors
% (two rows with three columns) beneath the article title.
% More than six makes the first-page appear very cluttered indeed.
%
% Use the \alignauthor commands to handle the names
% and affiliations for an 'aesthetic maximum' of six authors.
% Add names, affiliations, addresses for
% the seventh etc. author(s) as the argument for the
% \additionalauthors command.
% These 'additional authors' will be output/set for you
% without further effort on your part as the last section in
% the body of your article BEFORE References or any Appendices.
\numberofauthors{1} % in this sample file, there are a *total*
% of EIGHT authors. SIX appear on the 'first-page' (for formatting
% reasons) and the remaining two appear in the \additionalauthors section.
%
\author{
% You can go ahead and credit any number of authors here,
% e.g. one 'row of three' or two rows (consisting of one row of three
% and a second row of one, two or three).
%
% The command \alignauthor (no curly braces needed) should
% precede each author name, affiliation/snail-mail address and
% e-mail address. Additionally, tag each line of
% affiliation/address with \affaddr, and tag the
% e-mail address with \email.
%
% 1st. author
%\alignauthor
Felipe Cecagno,
Valter Roesler\\
\affaddr{Instituto de Informática}\\
\affaddr{Universidade Federal do Rio Grande do Sul}\\
\affaddr{Porto Alegre, Rio Grande do Sul, Brasil}\\
\email{\{fcecagno, roesler\}@inf.ufrgs.br}
}
\date{10 de agosto de 2012}
\maketitle
\begin{resumo}
Este artigo apresenta um dos resultados desenvolvidos no projeto Mconf. O Mconf-Mobile é um aplicativo de código aberto para dispositivos móveis com sistema operacional Android. Ele permite interação entre usuários de smartphones e tablets e usuários de computadores de mesa através do sistema de webconferência BigBlueButton. Serão apresentados alguns objetivos do projeto, a arquitetura da solução e suas principais funcionalidades.
\end{resumo}
\begin{abstract}
This article presents a result of the Mconf project. The Mconf-Mobile is an application for mobile devices with Android operational system. It makes possible to interact with other users in a BigBlueButton videoconference. We present some goals of the project, the solution's architecture and its main functionalities.
\end{abstract}
% http://www.acm.org/about/class/ccs98-html
% A category with the (minimum) three required fields
%\category{}{Peer-to-peer multimedia systems and streaming}{}
%\category{}{Software development using multimedia techniques}{}
%\category{H.4}{Information Systems Applications}{Miscellaneous}
\category{C.3}{Special-purpose and application-based systems: }{Real-time and embedded systems}
%\category{J.7}{Computers in other systems}{Real time}
%\category{I.6}{Simulation and modeling}{Applications}
\category{H.4}{Information systems applications}{Communications Applications: }{Computer conferencing, teleconferencing, and videoconferencing}
%\terms{Design, Experimentation}
\keywords{Mconf, Webconferência, Android, BigBlueButton, Código aberto}
\section{Introdução}
Dispositivos móveis inteligentes vêm ganhando a cada dia mais espaço e popularidade. A troca de telefones celulares ``burros'' por smartphones acontece por diversos motivos, e um deles é a grande variedade de aplicativos disponíveis. Dentre os oferecidos na loja oficial de aplicativos do Android, os mais populares são os aplicativos de entretenimento~\cite{android-stats}, categoria que inclui os jogos, que aproveitam a capacidade de processamento dos dispositivos e oferecem diversão aos usuários.
Além dos jogos, aplicações de vídeo em tempo real vêm crescendo no mercado de aplicativos. Clientes VoIP\footnote{\emph{Voice over IP}, ou Voz sobre IP} como o Sipdroid e aplicativos populares por sua versão para desktop como o Skype já incluem a funcionalidade de videochamada nos seus aplicativos para dispositivos móveis. Além destes, o Fring permite chamada em grupos de até quatro pessoas.
Porém, tanto o Skype quanto o Fring são softwares proprietários, ou seja, o código fonte dos sistemas não está disponível, e não utilizam protocolos padrão conhecidos e/ou abertos, o que impossibilita a interoperabilidade com outros sistemas. Além disso, os dois sistemas usados como exemplo têm restrições quanto a funcionalidades: o Skype permite vídeo chamada apenas entre dois pontos - entre mais pontos, existe o recurso de chamada de voz, ou então um dos usuários deve ter uma conta Premium do sistema; e o Fring possibilita comunicação entre quatro participantes, não sendo possível videoconferência entre muitos participantes.
Os clientes VoIP são mais genéricos e utilizam protocolos conhecidos - o Sipdroid, por exemplo, utiliza o protocolo padrão SIP. Entretanto, tais sistemas possuem conhecidos problemas de usabilidade: são complicados de configurar e de utilizar, o que muitas vezes impede o uso por usuários leigos.
O principal objetivo do projeto Mconf é proporcionar uma solução de código aberto para webconferência com foco na facilidade de uso e integração com dispositivos móveis~\cite{mconf-book}. A solução integra o sistema de webconferência BigBlueButton~\cite{bigbluebutton} com o portal Mconf-Web~\cite{mconf-web} (baseado no Global Plaza\footnote{\url{http://www.global-project.eu/}}), e prevê interação com dispositivos móveis através do Mconf-Mobile. O Mconf-Web é a aplicação web utilizada no portal \url{https://mconf.org}.
O projeto Mconf é desenvolvido pelo Laboratório de Projetos em Áudio e Vídeo da Universidade Federal do Rio Grande do Sul, teve início em novembro de 2010 e é financiado pela Rede Nacional de Ensino e Pesquisa no âmbito do programa Grupos de Trabalho da área de Pesquisa, Desenvolvimento e Inovação da RNP.
O código-fonte do Mconf-Mobile está disponível em um repositório público\footnote{\url{https://github.com/mconf/mconf-mobile}} e é licenciado sob a \emph{GNU General Public License}. O aplicativo está disponível gratuitamente para \emph{download} na loja oficial de aplicativos do Android\footnote{\url{https://play.google.com/store/apps/details?id=org.mconf.android.mconfmobile}}.
%O objetivo do subprojeto Mconf-Mobile é desenvolver um aplicativo para videoconferência integrado ao ambiente BigBlueButton. Com isso visa-se a interação plena entre dispositivos móveis e clientes desktop conectados ao sistema através da web.
\section{Arquitetura}\label{sec:arquitetura}
Conforme descrito anteriormente, o Mconf integra dois sistemas existentes de código aberto voltados para videoconferência: o BigBlueButton e o Global Plaza. Entretanto, o Mconf-Mobile não se limita a essa integração e pode ser utilizado junto a qualquer outro \emph{front end} integrado ao BigBlueButton, como por exemplo o Moodle, ferramenta de apoio à aprendizagem, ou o Wordpress, plataforma para criação de blogs e sites.
A possibilidade de integração a diversos \emph{front ends} se deve à API do tipo REST que o BigBlueButton oferece, e a um recurso do Android chamado de \emph{Intent Filter}. O \emph{Intent Filter} é utilizado para definir que qualquer URL acessada no Android via navegador Web que contenha o prefixo \textbf{bigbluebutton://} ao invés do tradicional \textbf{http://} direcione a chamada para a aplicação Mconf-Mobile que é executada automaticamente ao clicar no link. O Mconf-Mobile, por sua vez, utiliza a URL com o prefixo modificado para entrar na sala de videoconferência. A integração do Mconf-Mobile com o portal Mconf-Web será apresentada na subseção~\ref{subsec:mconf-web}.
%\begin{figure}[htp]
%\centering
%\includegraphics[width=80mm]{architecture_pt-br.png}
%\caption{Visão geral da arquitetura do Mconf-Mobile}\label{fig:architecture}
%\end{figure}
O BigBlueButton é um sistema de código aberto para webconferência voltado principalmente para ensino à distância. Ele oferece funcionalidades como interação por áudio, vídeo e bate-papo (público e privado), além de compartilhamento da tela do computador e apresentação síncrona de slides e documentos. Além disso, o BigBlueButton possui uma grande comunidade de desenvolvedores, com mais de 1200 membros\footnote{\url{https://groups.google.com/group/bigbluebutton-dev/about}}.
O cliente web para desktop é desenvolvido na plataforma Adobe Flash e toda a comunicação com o servidor é feita através do protocolo RTMP\footnote{\emph{Real-Time Messaging Protocol}}. Já o servidor do BigBlueButton utiliza o Red5\footnote{\url{http://www.red5.org/}}, que é uma implementação livre do Adobe Flash Media Server. Além da comunicação por vídeo, realizada de forma transparente entre o cliente Flash e o servidor Red5, são utilizados \emph{Remote Shared Objects} (RSO) e \emph{Remote Procedure Calls} (RPC) para as demais trocas de mensagens, como bate-papo e gerenciamento de status de participantes. Tanto RSO quanto RPC são recursos presentes na especificação do protocolo RTMP~\cite{rtmp}.
Para áudio, o sistema utiliza um servidor VoIP, que pode ser tanto o FreeSWITCH quanto o Asterisk. No cliente web é utilizada uma implementação de telefone SIP\footnote{\emph{Session Initiation Protocol}} em Flash.
%Apesar do Android oferecer suporte à plataforma Flash a partir da sua versão 2.2, optou-se por desenvolver um aplicativo nativo através da SDK padrão do Android para permitir compatibilidade com as versões anteriores do Android e, principalmente, para permitir captura e transmissão de áudio e vídeo através do dispositivo móvel, recursos indisponíveis no Adobe Flash Player para Android. Uma visão geral da arquitetura do aplicativo é apresentada na figura~\ref{fig:architecture} e será detalhada nas subseções seguintes.
Apesar do Android oferecer suporte à plataforma Flash a partir da sua versão 2.2, optou-se por desenvolver o Mconf-Mobile como um aplicativo nativo através da SDK padrão do Android para permitir compatibilidade com as versões anteriores do Android e, principalmente, para permitir captura e transmissão de áudio e vídeo através do dispositivo móvel, recursos indisponíveis no Adobe Flash Player para Android. A arquitetura do aplicativo será detalhada nas subseções seguintes.
\subsection{Flazr}
Toda a comunicação RTMP entre o aplicativo e o servidor Red5 é feita através da biblioteca Flazr, uma implementação livre em Java de protocolos de \emph{streaming} multimídia\footnote{\url{http://flazr.com}}. A biblioteca implementa procedimentos fundamentais do protocolo RTMP, como por exemplo o \emph{handshake} inicial e multiplexação/demultiplexação de mensagens de controle, áudio e vídeo, comandos de RPC e controle de fluxos de dados.
Entretanto, a biblioteca não oferece suporte a RSO, recurso indispensável para realização plena da comunicação com o servidor BigBlueButton. Por exemplo, informações de entrada e saída de participantes, presença de vídeo de um determinado participante ou pedido de atenção através do recurso ``levantar a mão'' são ações informadas através do objeto \textbf{participantsSO}. Outro exemplo é a troca de mensagens públicas de bate-papo, que é realizada através do objeto \textbf{chatSO}.
Por isso, o suporte a RSO teve de ser adicionado à biblioteca. A implementação de gerência de objetos compartilhados e da multiplexação/demultiplexação de mensagens teve como base o código do Red5 e a especificação do protocolo RTMP~\cite{rtmp}.
\subsection{BBB-Java}
O BBB-Java é a biblioteca responsável pela interação entre um aplicativo genérico em Java e um servidor BigBlueButton. Essa biblioteca foi desenvolvida pelo projeto Mconf para ser utilizada no Mconf-Mobile, mas buscou-se manter um baixo acoplamento entre a biblioteca e o aplicativo Android para possibilitar o desenvolvimento de novos aplicativos não-web integrados ao sistema de webconferência. Além disso, a biblioteca pode ser utilizada na criação de aplicativos robôs que auxiliem na realização de testes funcionais e de carga.
Dentre os recursos oferecidos pela biblioteca estão: acesso a salas de videoconferência, atualização do status dos participantes da sessão, troca de mensagens de bate-papo (público e privado) e recepção e envio de dados de vídeo.
O acesso a salas de conferência pode acontecer de duas formas:
\begin{itemize}
\item Através da tela inicial da aplicação: ao executar o Mconf-Mobile, o usuário é convidado a entrar com suas credenciais de acesso do portal \url{mconf.org} (como pode ser visto na figura~\ref{fig:mconf-entrada}, e a partir dessa tela ele poderá acessar sua sala de videoconferência pessoal e as salas de comunidades das quais o usuário faz parte.
\item Através de um portal Web: a lógica por trás da API do BigBlueButton pode ser implementada por um portal Web, como por exemplo o Mconf-Web ou o Moodle. Ao clicar em um link para entrar numa sala de videoconferência no navegador do Android, a URL de JOIN com o prefixo modificado \textbf{bigbluebutton://} fará com que o Mconf-Mobile seja executado automaticamente, e com essa URL ele será capaz de entrar na sala pretendida pelo usuário.
\end{itemize}
\subsection{Mconf-Mobile}\label{subsec:bbb-android}
O Mconf-Mobile é o aplicativo Android que utiliza o BBB-Java para interação com o servidor BigBlueButton. Esse aplicativo foi escrito principalmente em Java, utilizando o \emph{Software Development Kit} (SDK) padrão do Android, e uma pequena parte crítica em desempenho (relacionada à codificação e decodificação de vídeo) foi desenvolvida em C/C++ com o \emph{Native Development Kit} (NDK).
Considerando que o servidor BigBlueButton utiliza um servidor VoIP para lidar com os fluxos de áudio, para o Mconf-Mobile adotou-se a estratégia de integrar ao aplicativo uma solução existente de VoIP de código aberto. Optou-se pelo aplicativo Sipdroid\footnote{\url{https://play.google.com/store/apps/details?id=org.sipdroid.sipua}}, um dos telefones SIP mais populares da loja de aplicativos oficial do Android, adicionando assim a funcionalidade de interação por áudio. Dentre os codecs suportados pelo Sipdroid está o Speex, codec padrão de áudio do BigBlueButton, implementado na linguagem C e compilado através do NDK.
O codec de vídeo padrão utilizado no BigBlueButton é o H.263, e a estratégia de solução foi a mesma do Sipdroid. Optou-se por utilizar uma compilação otimizada da biblioteca FFmpeg\footnote{\url{http://www.ffmpeg.org/}} para Android, gerada através do NDK, que tivesse apenas esse codec habilitado. O FFmpeg é uma biblioteca escrita na linguagem C que implementa diversos codificadores e decodificadores de áudio e vídeo.
\begin{figure}[htp]
\centering
\includegraphics[height=50mm]{app3.png}
\caption{Tela de entrada do Mconf-Mobile}\label{fig:mconf-entrada}
%\caption{Tela principal do Mconf-Mobile: no centro, o vídeo de um participante sendo exibido; ao fundo, lista dos participantes da sessão e lista dos participantes da conferência de voz; na parte inferior, bate-papo público deslizante e botões de controle de áudio do dispositivo}\label{fig:mconf-mobile}
\end{figure}
\section{Principais funcionalidades}
A figura~\ref{fig:mconf-mobile} ilustra a tela principal do aplicativo, onde é exibida a lista dos participantes da sessão, indicativos de status dos participantes (por exemplo, se o participante está transmitindo vídeo), o vídeo de um participante remoto sobrepondo a interface e os controles de áudio.
\begin{figure}[htp]
\centering
\includegraphics[height=50mm]{app2.png}
\caption{Tela principal do Mconf-Mobile}\label{fig:mconf-mobile}
%\caption{Tela principal do Mconf-Mobile: no centro, o vídeo de um participante sendo exibido; ao fundo, lista dos participantes da sessão e lista dos participantes da conferência de voz; na parte inferior, bate-papo público deslizante e botões de controle de áudio do dispositivo}\label{fig:mconf-mobile}
\end{figure}
O menu principal do aplicativo, acessível a partir do botão \textbf{Menu} do dispositivo móvel, exibe opções de início da interação por áudio e vídeo e o recurso de levantar a mão. As principais funcionalidades da aplicação serão descritas a seguir.
\begin{figure}[htp]
\centering
\includegraphics[width=75mm]{menu_merged.png}
\caption{À esquerda, menu principal do aplicativo; à direita, menu de toque longo sobre o nome de um participante}\label{fig:menu}
%\caption{Tela principal do Mconf-Mobile: no centro, o vídeo de um participante sendo exibido; ao fundo, lista dos participantes da sessão e lista dos participantes da conferência de voz; na parte inferior, bate-papo público deslizante e botões de controle de áudio do dispositivo}\label{fig:mconf-mobile}
\end{figure}
\subsection{Bate-papo}
Assim como o cliente web do BigBlueButton, o aplicativo possui a funcionalidade de bate-papo, que pode ser público ou privado. O bate-papo público pode ser observado na figura~\ref{fig:mconf-mobile} como uma barra deslizante, que com um toque do usuário encobre a lista de participantes e deixa visíveis todas as mensagens trocadas (juntamente com o originador da mensagem e horário) e uma caixa de texto para envio de novas mensagens.
Já o bate-papo privado é acessado com um toque do usuário sobre o nome do participante com o qual ele deseja iniciar uma conversa. Uma nova tela é aberta, com as mesmas características do bate-papo público, mas com a particularidade de que somente aquele usuário terá acesso à conversação.
\subsection{Áudio}
O áudio é parte fundamental da interação em um ambiente de videoconferência, logo essa importância é refletida na interface principal do aplicativo. Ao habilitar a conferência de áudio através do botão \textbf{Menu} do aparelho (como mostra a figura~\ref{fig:menu}), dois botões aparecem na parte inferior da interface (ver figura~\ref{fig:mconf-mobile}: ``Fala contínua'' e ``Pressione para falar'').
Os botões de controle de áudio são indispensáveis para uma interação de qualidade, pois experimentalmente verificou-se que o microfone de dispositivos móveis é muito sensível a ruído. Além disso, a utilização do botão ``Pressione para falar'' atenua problemas de eco acústico que podem ocorrer se o usuário não utilizar fones de ouvido.
Através do menu também é possível habilitar o alto-falante do dispositivo, ajustar controle de volume e ganho do microfone, e também encerrar a conferência de áudio. Estas novas opções são oferecidas somente depois que o usuário selecionar a opção \textbf{Iniciar voz}, e por isso não aparecem na figura~\ref{fig:menu}.
\subsection{Vídeo}
%O recurso de vídeo, presente no cliente web do BigBlueButton, também é explorado no aplicativo Android. Como pode ser visto na figura~\ref{fig:mconf-mobile}, um ícone em forma de webcam informa se o usuário possui ou não sua câmera habilitada. Através de um toque longo sobre o nome do participante com vídeo habilitado, o usuário pode escolher a opção de exibição do vídeo. Ao fazê-lo, uma tela sobreposta com o vídeo do participante é exibida.
A tela principal da aplicação indica, entre outras informações, quais são os usuários que possuem o recurso de vídeo habilitado. Isso pode ser visto na figura~\ref{fig:mconf-mobile}, onde ao lado do nome de alguns participantes aparece o ícone de uma webcam. Ao efetuar um toque longo sobre o nome de qualquer usuário, a aplicação exibe um menu de ações possíveis para com aquele usuário, como mostra a figura~\ref{fig:menu}. Para os usuários que tiverem o recurso de vídeo habilitado, a opção ``Exibir vídeo'' será listada, e permitirá visualizar o vídeo do participante remoto, como ilustra a figura~\ref{fig:mconf-mobile}.
%\begin{figure}[htp]
%\centering
%\includegraphics[width=35mm]{menu_user.png}
%\caption{Menu de toque longo sobre o nome de um participante}\label{fig:menu-user}
%\end{figure}
A janela de vídeo do participante remoto é flutuante e sobrepõe a lista de usuários. Ao colocar o dispositivo na posição horizontal, o vídeo é maximizado ocupando assim toda a tela. A qualquer momento, pressionando o botão \textbf{Voltar} do dispositivo, o vídeo é fechado.
Além de visualizar o vídeo de um participante remoto, também é possível transmitir para a videoconferência a imagem capturada da câmera frontal do dispositivo. Esse recurso é acessível através do menu principal do aplicativo, como pode ser visto na figura~\ref{fig:menu}, opção ``Iniciar vídeo''.
%\subsection{Gerência de videoconferência}
%Caso o usuário entre na sessão como \textbf{Moderador}, é possível realizar uma série de operações administrativas, como por exemplo, promover um participante a \textbf{Apresentador}, colocar em mudo um participante que esteja emitindo ruído, abaixar a mão de um participante que pediu atenção e até expulsar um participante da sessão.
%Esses recursos sugerem um novo caso de uso para o aplicativo: um professor utiliza o quadro negro para uma exposição aos seus alunos que estão remotamente conectados; ele não permanece em frente ao seu computador durante a exposição, mas pode utilizar um dispositivo móvel como controle remoto para gerenciar a videoconferência (checar mensagens de bate-papo, atender a um pedido de atenção, etc.).
\subsection{Integração com portais Web}\label{subsec:mconf-web}
Conforme descrito anteriormente, o Mconf-Mobile pode ser facilmente integrado a portais Web que servem de \emph{front end} para o serviço de webconferência do BigBlueButton. Na figura~\ref{fig:mconf-integration} é exemplificado o mecanismo de integração do Mconf-Mobile com o portal \url{mconf.org}.
\begin{figure}[htp]
\centering
\includegraphics[width=85mm]{mconf_integration.png}
\caption{Modelo de integração com o \url{mconf.org}}\label{fig:mconf-integration}
%\caption{Tela principal do Mconf-Mobile: no centro, o vídeo de um participante sendo exibido; ao fundo, lista dos participantes da sessão e lista dos participantes da conferência de voz; na parte inferior, bate-papo público deslizante e botões de controle de áudio do dispositivo}\label{fig:mconf-mobile}
\end{figure}
Quando o usuário entra no portal \url{mconf.org} através do navegador Web do seu dispositivo móvel e coloca suas credenciais de acesso, é exibida na página inicial informações sobre a sua sala pessoal de webconferência. Essa sala possui um link fixo no formato \url{https://mconf.org/webconf/<id\_do\_usuário>}, recurso que facilita o convite de pessoas para uma sessão de webconferência.
Como pode ser visto à esquerda na figura~\ref{fig:mconf-integration}, um ícone com a forma de um telefone celular é apresentado para que o usuário acesse sua sala através de um dispositivo móvel. Ao clicar nesse ícone, sempre através do navegador Web do Android, é exibida a tela exemplificada à direita na figura~\ref{fig:mconf-integration}, que contém um link para acesso à sala (redireciona para uma URL de prefixo \textbf{bigbluebutton://}) e um QR-Code, que da mesma forma dá acesso à sala de webconferência quando escaneado por um dispositivo móvel. O mesmo modelo é usado para as salas de webconferência das comunidades de usuários.
Vale ressaltar que a integração realizada no portal \url{mconf.org} pode ser facilmente reproduzida em qualquer outro portal Web, desde que este seja integrado ao sistema BigBlueButton.
\section{Conclusão}
Este artigo apresentou o Mconf-Mobile, um aplicativo para videoconferência em dispositivos móveis com sistema operacional Android. A principal contribuição do projeto Mconf é o desenvolvimento em código aberto de uma solução completa de webconferência que integra desktops e dispositivos móveis. O desenvolvimento modular, conforme apresentado na seção~\ref{sec:arquitetura}, permite que as partes de software produzidas sejam utilizadas em outros projetos de forma independente.
Novas funcionalidades estão previstas para o futuro, como por exemplo a possibilidade de visualização de vários vídeos ao mesmo tempo, integração do módulo de apresentação do BigBlueButton ao aplicativo e desenvolvimento de um novo módulo que permita edição cooperativa de texto através de um bloco de notas. Além disso, será desenvolvido um mecanismo de priorização do fluxo de dados de áudio sobre os demais fluxos a fim de manter a qualidade da conferência de voz em dispositivos com limitação de processamento ou largura de banda de rede.
A aplicação Mconf-Mobile está disponível para download gratuito na loja oficial de aplicativos do Android, e o portal \url{mconf.org} é aberto e acessível por qualquer pessoa.
%
% The following two commands are all you need in the
% initial runs of your .tex file to
% produce the bibliography for the citations in your paper.
\bibliographystyle{abbrv}
\bibliography{paper} % sigproc.bib is the name of the Bibliography in this case
% You must have a proper ".bib" file
% and remember to run:
% latex bibtex latex latex
% to resolve all references
%
% ACM needs 'a single self-contained file'!
%
\balancecolumns
% That's all folks!
\end{document}