mai 5

 

Olá,

 

Saiu este mês a  nova publicação da revista Flash e Flex Developer Magazine com mais um artigo criado por mim.

O título do artigo é: Acessing iPhone Camera with AdobeAIR 2.6 and Flash.

O artigo criei ensina a criar uma aplicação para iPhone usando Flash/Flex e Adobe Air 2.6 onde você obtém um foto da câmera do telefone e exibe na tela do iPhone. Tudo isso para demonstrar as novas APIs que a Adobe lançou na versão 2.6 do Adobe Air para iPhone.

 

Link: http://ffdmag.com/magazine/1692-handling-iphone-stage-orientation-how-to-listen-for-handle-pan-gesture-events

mar 21

Olá,

 

Para quem não sabe, a Adobe acabou de lançar a versão 2.6 do AdobeAir, trazendo inúmeras melhorias para a versão do iPhone também.

Essas melhorias incluem:

- o ADT virá com PFI integrado, que é o aplicativo que permite gerar os aplicativos para o iPhone, então agora o AdobeAir 2.6 virá com gerador integrado para iOS (iPhone e iPad), Android e Desktop.

- Acesso á camera através da API Camera.

- Acesso ao microfone através da API Microphone.

- Acesso a Camera Roll, que são as imagens do celular tiradas com a camera.

- Renderização de HTML usando o Webkit nativo do iPhone (via StageWebView).

- Suporte ao uso do display de retina do iPhone4

 

E muitas outras coisas para os outros ambientes também, confira aqui todas as novidades:

http://www.adobe.com/devnet/air/articles/whats-new-in-air-26.html

 

Veja o vídeo do novo AdobeAir rodando no iPhone:

http://tv.adobe.com/watch/adc-presents/developing-for-ios-with-air-for-mobile-26/

 

É por isso que eu sou fã da Adobe, sempre inovando, nunca fica para trás.

Hoje é possível você portar sua aplicação Flash/Flex/HTML para qualquer sistema desktop e mobile (iOS, BlackBerry, Android).

Parabéns Adobe pelo excelente trabalho.

nov 24

Olá,

Recentemente comecei a estudar o Gradle (http://www.gradle.org/) por ser uma ferramenta de build extremamente fácil de usar, mas poderosa por permitir a criação de tarefas de uma forma bem simples permitindo você fazer qualquer coisa que precisa, usando a simplicidade da linguagem Groovy.

É claro que também pode ser usado para outros fins e não somente build, mas podemos usar para fazer backup de banco de dados, cópia de arquivos, FTP, SSH, SCP, enviar email, deploy e tudo mais que precisar, o limite é sua imaginação.

Enfim, vamos ao que interessa. Eu estava com uma grande dificuldade de ficar executando uma BAT toda vez que precisava gerar uma aplicação para iPhone apartir de um projeto em Flash ou Flex. O próprio Flash possui esta opção, mas eu ficaria amarrado a ele toda vez que fosse gerar a aplicação para o iPhone, fora que eu não tenho esta opção para aplicações em Flash, então daria muito trabalho ter que manter um projeto em Flash configurado para suportar o projeto em Flash e tudo mais.

Foi ai que pensei em algo mais prático e como estava usando o Gradle já decidi criar uma TASK para ele que fizesse este trabalho para mim, apenas com um comando: gradle iphone_packager

Criei então a TASK e mais um arquivo de propriedades, de modo que você não precisa alterar a TASK, somente o arquivo de propriedades para cada projeto seu, e se futuramente você baixar uma nova versão da TASK ou quiser modificar, vai mudar um único arquivo.

Bom, segue então os dois arquivos necessários, e deverão ficar na pasta do seu projeto.

No meu caso ficou assim a estrutura do meu projeto com Gradle no FDT:

Lembrando que basta você configurar apartir do arquivo de propriedades apontando para os locais corretos do seu projeto, o que te da uma liberdade de colocar sua TASK onde preferir.

Arquivos(está configurado para o meu projeto com dados de teste, basta você alterar para o seu projeto):

1 – http://www.prsolucoes.com/downloads/gradle/iphone_packager/build.gradle

2 – http://www.prsolucoes.com/downloads/gradle/iphone_packager/gradle.properties

O packager do iPhone pede a lista de arquivos a serem colocados no arquivo a ser gerado(.IPA), então você coloca esta lista na configuração:

IPHONE_PACKAGER_FILE_OR_DIR

Basta você passar:

-C [pasta onde estão os arquivos] “ZombieTown.swf” “assets”

Obs: Não use a barra “\” no Windows, pois será interpretado como caracter de escape, use “/”, exemplo:

C:/workspace/projeto/arquivo.swf

Modo de uso (resumido):

- Instale o Gradle

- Baixar os arquivos de TASK acima

- Coloque ambos os arquivos na pasta do seu projeto Flash/Flex

- Edite o arquivo: gradle.properties colocando os caminhos de acordo com a instalação dos seus programas e do seu projeto

- Execute via linha de comando: gradle iphone_packager

jun 30

Olá,

O Adobe AIR é uma excelente oportunidade para quem quer desenvolver um software multi-plataforma, sendo 100% uma aplicação html/js ou flash/flex.

Na verdade, o Adobe AIR nada mais é do que um navegador webkit contando com o auxílio de bibliotecas javascript nativas a mais, que são as bibliotecas que ficam no pacote air.*.

Hoje vou apresentar como usar o NativeProcess do Adobe AIR 2 para chamar por exemplo o “notepad/gedit” pela sua aplicação AIR.

Eu estou desenvolvendo usando o Aptana, que é uma IDE free e muito boa para aplicações com Adobe AIR e Ajax, possuindo até mesmo debug.

Vamos lá.

1 – Baixe e instale o Aptana(http://www.aptana.com/)

2 – Baixe e instale o Adobe AIR 2 SDK (http://get.adobe.com/br/air/)

3 – Abra o Aptana e instale o plugin para Adobe AIR

4 – Adicione o SDK na lista de SDK do Adobe AIR dentro do Aptana, no menu Window->Preferences

5 – Crie um novo projeto do tipo “Adobe AIR”, no menu “File->New->Project”, item “web->Adobe AIR Project”

6 – Agora vou colocar um código de exemplo:

var process;

function abrirPrograma()

{
var file = null;

if (air.Capabilities.os.toLowerCase().indexOf(“win”) > -1)
{
file = file.resolvePath(“c:\\windows\\system32\\notepad.exe”);
}
else
{
file = file.resolvePath(“gedit”);
}

var arguments = new air.Vector["<String>"]();
arguments.push(‘teste.txt’);

var nativeProcessStartupInfo = new air.NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = arguments;
process = new air.NativeProcess();
process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
process.addEventListener(air.ProgressEvent.STANDARD_INPUT_PROGRESS, inputProgressListener);

process.start(nativeProcessStartupInfo);

if(process && process.running){
alert(‘rodando’);
}
}

function inputProgressListener(event)
{
process.closeInput();
}

function onOutputData(event)
{
var bytes = process.standardOutput;
alert(bytes.readUTFBytes(bytes.bytesAvailable));
}

Bom, o código esta ai, é bem simples de entender.

Adicionei até mesmo a chamada com parâmetros, pois quase ninguém conhece que o Adobe AIR disponibiliza uma imitação de vetor para javascript, para que seja feita a conversão entre tipos, caso precise integrar JS + Flex/Flash.

Eu estou fazendo um projeto onde estou colocando dentro da minha aplicação AIR o JRuby e chamando desta mesma forma ai, basta copia a pasta do jruby para dentro da aplicação e chamar assim:

if (air.Capabilities.os.toLowerCase().indexOf(“win”) > -1)
{
file = file.resolvePath(“jruby/bin/jruby.exe”);
}
else
{
file = file.resolvePath(“jruby/bin/jruby”);
}

Funciona no Linux, Windows e Mac.

Ah, não esqueça de adicionar no arquivo “application.xml” da sua aplicação AIR o seguinte:

<supportedProfiles>extendedDesktop</supportedProfiles>

Antes de:

</application>

Isso permite sua aplicação executar o NativeProcess, senão o Adobe AIR vai gerar uma exceção dizendo que o sistema não permite usar esta API.