29
Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer [email protected]

Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer [email protected]

Embed Size (px)

Citation preview

Page 1: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis

Daniel [email protected]

Page 2: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Sumário

Java Bluetooth API - JSR-82 Mobile Media API - JSR-135 Aplicação Referências

Page 3: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Bluetooth - Origem

Tecnologia criada pelos engenheiros Sven Mattisson e Jaap Haartsen da fabricante de telefones Ericsson Mobile Communications da Suécia;

Page 4: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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)

Page 5: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Bluetooth - Origem

Começou sua padronização (1998) pelas empresas: Ericsson, IBM, Intel, Nokia, and Toshiba onde passou a se chamar Bluetooth;

Page 6: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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”

Page 7: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Bluetooth – Radio Frequência

Page 8: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Java Bluetooth API

Componentes básicos:

• Stack Initialization;

• Device Management;

• Device Discovery;

• Service Discovery;

• Service Registration;

• Communication.

Page 9: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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);

Page 10: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Java Bluetooth API - Device Management

localDevice.setDiscoverable(DiscoveryAgent.GIAC);

Page 11: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Java Bluetooth API - Device Management

System.out.println("local device: " + localDevice.getBluetoothAddress());

System.out.println("friendlyName: " + localDevice.getFriendlyName());

local device: 0000000DECAF

friendlyName: WirelessToolkit

Page 12: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Java Bluetooth API - Device Discovery

Descobrindo dispositivos:

(RemoteDevice, DiscoveryAgent e DiscoveryListener)

DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent();

discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);

Page 13: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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());

Page 14: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Java Bluetooth API - Device Discovery

Page 15: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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

Page 16: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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;

Page 17: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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

Page 18: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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;

Page 19: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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

Page 20: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Java Bluetooth API - Service Registration and Communication

Protocolos de comunicação Bluetooth:

RFCOMM L2CAP OBEX

hp home
RFCOMM is commonly known as the wireless serial port, or the cable replacement protocol. The name is derived from the fact that your serial ports are called COMM1, COMM2, etc. RFCOMM simulates functionality of a standard serial port. For instance, a Bluetooth-enabled PDA would use the RFCOMMBluetooth for Javalayer to synchronize its data to a Bluetooth-enabled PC as if they were physically connected by a cable.pg 28 pdf
Page 21: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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.

Page 22: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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");

Page 23: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

Mobile Media API - LifeCycle

Um player possui 5 diferentes estados: UNREALIZED, REALIZED, PREFETCHED, STARTED, and CLOSED

Síncronos. MediaException

Page 24: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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;

Page 25: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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();

Page 26: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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)

Page 27: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

AplicaçãoMostra

Estatísticaslocais

ProcuraDispositivo/

Serviço

RecebeServiço

Exibevideo

Filmes angiográficos em

DICOM

Conversão mpeg

Perda de informação

Page 28: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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)

Page 29: Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer welfer@gmail.com

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;