Upload
internet
View
104
Download
1
Embed Size (px)
Citation preview
Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis
Daniel [email protected]
Sumário
Java Bluetooth API - JSR-82 Mobile Media API - JSR-135 Aplicação Referências
Bluetooth - Origem
Tecnologia criada pelos engenheiros Sven Mattisson e Jaap Haartsen da fabricante de telefones Ericsson Mobile Communications da Suécia;
Bluetooth - Origem Projeto era desenvolver uma interface de
comunicação entre telefones móveis e seus acessórios. Descobriram que usando uma frequência de rádio era possível alcançar isso com baixo consumo de energia e baixo custo.
Opera em uma frequência de radio baixa e que não requer licença. Então, sem custo; 1Mbps; alcance de cerca de 10 metros. Consome 500 X menos energia que o padrão IEEE 802.11x;
Era chamada de Multi-Communicator Link (MC Link)
Bluetooth - Origem
Começou sua padronização (1998) pelas empresas: Ericsson, IBM, Intel, Nokia, and Toshiba onde passou a se chamar Bluetooth;
Bluetooth - Origem
Homenagem ao Rei Viking dinamarquês Harald Bluetooth – (911 a 985 A.D.);
O símbolo da tecnologia bluetooth. Em caracteres rúnicosrepresenta um H e um B. Harald Bluetooth – “o unificador”
Bluetooth – Radio Frequência
Java Bluetooth API
Componentes básicos:
• Stack Initialization;
• Device Management;
• Device Discovery;
• Service Discovery;
• Service Registration;
• Communication.
Java Bluetooth API - Device Management
Classes que permitem obter informações estatísticas de dispositivos bluetooth Locais (LocalDevice) e remotos (RemoteDevice).
import javax.bluetooth.LocalDevice;
LocalDevice localDevice = LocalDevice.getLocalDevice();
localDevice.setDiscoverable(DiscoveryAgent.GIAC);
Java Bluetooth API - Device Management
localDevice.setDiscoverable(DiscoveryAgent.GIAC);
Java Bluetooth API - Device Management
System.out.println("local device: " + localDevice.getBluetoothAddress());
System.out.println("friendlyName: " + localDevice.getFriendlyName());
local device: 0000000DECAF
friendlyName: WirelessToolkit
Java Bluetooth API - Device Discovery
Descobrindo dispositivos:
(RemoteDevice, DiscoveryAgent e DiscoveryListener)
DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent();
discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);
Java Bluetooth API - Device Discovery A interface: DiscoveryListener public void deviceDiscovered(RemoteDevice
btDevice, DeviceClass cod) {} Método chamado quando um dispositivo bluetooth é encontrado na
vizinhança;
System.out.println("Remote device Address: " + btDevice.getBluetoothAddress());
System.out.println("Major Device Class: " + cod.getMajorDeviceClass() + " Minor Device Class: " + cod.getMinorDeviceClass());
Java Bluetooth API - Device Discovery
Java Bluetooth API - Device Discovery A interface: DiscoveryListener public void inquiryCompleted(int discType) {}
Método chamado quando a transação da descoberta de um despositivo foi completada;
discType pode ser:INQUIRY_COMPLETEDINQUIRY_ERRORINQUIRY_TERMINATED
Java Bluetooth API - Service Discovery
A interface: DiscoveryListener public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {}
Método chamado quando serviços são encontrados Invocado no método inquiryCompleted: discoveryAgent.searchServices(attrSet, uuid,
remoteDevice[0], this);
• int[] attrSet = {0x0100};
• UUID RFCOMM_UUID = new UUID(0x0003);
• uuid[0] = RFCOMM_UUID;
Java Bluetooth API - Service Discovery
attrSet é uma entrada em um service records;
SDDB (Service Discovery Database).
DataElement serviceNameElement = servRecord[0].getAttributeValue(0x100);
String serviceName = (String)serviceNameElement.getValue();
UrlServico.addElement(servRecord[i].getConnectionURL(ServiceRecord. NOAUTHENTICATE_NOENCRYPT, true));
http://www.bluetooth.org/assigned-numbers/sdp.htm
Java Bluetooth API - Service Discovery A interface: DiscoveryListener public void serviceSearchCompleted(int transID,
int responseCode) {} Método chamado quando a procura pelo serviço é finalizada; responseCode:
• SERVICE_SEARCH_ERROR
• SERVICE_SEARCH_COMPLETED
• SERVICE_SEARCH_NO_RECORDS
Posso começar a receber dados;
Java Bluetooth API - Service Registration and Communication
O servidor registra o serviço no SDDB;
url = "btspp://localhost:00112233445566778899AABBCCDDEEFF;name=video";
//btspp = Bluetooth Serial Port Profile
StreamConnectionNotifier notifier = (StreamConnectionNotifier) Connector.open(url);
//similar a ServerSocketConnectionnotifier.acceptAndOpen();//espera requisição cliente
Java Bluetooth API - Service Registration and Communication
Protocolos de comunicação Bluetooth:
RFCOMM L2CAP OBEX
Mobile Media API - JSR-135
import javax.microedition.media.*; Player: interface que lida com o processamento
do dado multimedia. DataSource: classe abstrata para localização e
recuperação do dado multimedia.
Mobile Media API - JSR-135 String arquivo = "file:///root1/" +
this.filenameReceived;
FileConnection fileConnection = (FileConnection) Connector.open(arquivo,
Connector.READ_WRITE);
InputStream inputStream = fileConnection.openInputStream();
Player player = Manager.createPlayer(inputStream, "video/mpeg");
Mobile Media API - LifeCycle
Um player possui 5 diferentes estados: UNREALIZED, REALIZED, PREFETCHED, STARTED, and CLOSED
Síncronos. MediaException
Mobile Media API - LifeCycle
UNREALIZED: recupera informações simples sobre a mídia como o tempo de duração de um video/áudio, tipo de conteúdo…
REALIZED: se existe permissão para acessar o arquivo (i.e. DRM – Digital Rights Management), comunicação com servidor, manipulação de arquivo;
PREFETCHED: decodificação dos dados ;
STARTED: executa a media
CLOSED: encerra a media. Libera os recursos;
Mobile Media API - VideoTrabalhando com Video: VideoControl é uma interface para controlar video.
VideoControl videoControl = (VideoControl) player.getControl( "javax.microedition.media.control.VideoControl");
//renderiza o video diretamente em um canvas
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);
videoControl.setVisible(true);mDisplay.setCurrent(canvas);player.start();
AplicaçãoMostra
Estatísticaslocais
Registra um
Serviço de video
DisponibilizaServiço de
video
Mostra Estatísticas
locais
ProcuraDispositivo/
Serviço
RecebeServiço
Exibevideo
“servidor” /escravorecebe a conexão
“cliente”/mestre(inicia conexão)
AplicaçãoMostra
Estatísticaslocais
ProcuraDispositivo/
Serviço
RecebeServiço
Exibevideo
Filmes angiográficos em
DICOM
Conversão mpeg
Perda de informação
Conclusões
Manipulação de dados multimedia é time consuming;
Alcance do “link” bluetooth pode ser estendido para mais de 10 metros usando bluetooth hotspots;
Tecnologia que pode ser muito mais explorada (ex: jogos multiplayers)
Referências
Bruce Hopkins and Ranjith Antony. Bluetooth for Java. Apress, New York – 2003;
Michael Miller. Discovering Bluetooth. Sybex, CA – 2001;
Sing Li and Jonathan Knudsen. Beginning J2ME: From Novice to Professional, Third Edition, Apress, New York – 2005;
Vikram Goyal. Pro Java ME MMAPI: Mobile Media API for Java Micro Edition. Apress, New York – 2006;