Configurações do Android

Na plataforma Android você pode usar o elemento android do descritor do aplicativo para adicionar informações ao manifesto do aplicativo do Android, que é um arquivo de propriedades do aplicativo usado pelo sistema operacional Android. O ADT gera automaticamente o arquivo Manifest.xml Android quando você cria o pacote APK. O AIR define algumas propriedades para os valores necessários para determinados recursos funcionarem. Outras propriedades definidas na seção android do descritor do aplicativo do AIR são adicionadas à seção correspondente do arquivo Manifest.xml.

Nota: Para a maioria dos aplicativos AIR você deve definir as permissões do Android necessárias para seu aplicativo no elemento android , mas geralmente não precisa definir as outras propriedades.

Você só pode definir os atributos que aceitam valores boolianos, inteiros ou sequências de caracteres. Não está disponível a definição de referências para recursos do pacote de aplicativo.

Nota: O tempo de execução requer uma versão mínima do SDK igual ou maior que 14. Se você deseja criar um aplicativo apenas para versões superiores, certifique-se de que o Manifesto inclui <uses-sdk android:minSdkVersion=""></uses-sdk> com a versão correta.

Configurações de manifesto Android reservadas

O AIR define várias entradas de manifesto no documento de manifesto Android gerado para garantir que os recursos de aplicação e runtime funcionem corretamente. Não é possível definir as configurações a seguir:

elemento de manifesto

Não é possível definir os seguintes atributos do elemento de manifesto:

  • package

  • android:versionCode

  • android:versionName

  • xmlns:android

elemento de atividade

Não é possível definir os seguintes atributos do elemento de atividade principal:

  • android:label

  • android:icon

elemento de aplicativo

Não é possível definir os seguintes atributos do elemento de aplicativo:

  • android:theme

  • android:name

  • android:label

  • android:windowSoftInputMode

  • android:configChanges

  • android:screenOrientation

  • android:launchMode

Permissões do Android

O modelo de segurança do Android exige que cada aplicativo peça autorização para utilizar recursos que tenham implicações de segurança ou privacidade. Essas permissões devem ser especificadas quando o aplicativo é compactado, e não podem ser alteradas em runtime. O sistema operacional Android informa ao usuário quais permissões um aplicativo solicita quando o usuário o instala. Se a permissão necessária para um recurso não for solicitada, o sistema operacional Android pode gerar uma exceção quando o aplicativos acessa o recurso, mas não é garantida uma exceção. Exceções são transmitidas pelo runtime ao seu aplicativo. No caso de falha silenciosa, uma mensagem de falha de permissão é adicionada ao log do sistema Android.

No AIR, você pode especificar as permissões do Android dentro do elemento Android do descritor do aplicativo. O formato a seguir é usado para adicionar as permissões (onde PERMISSION_NAME é o nome de uma permissão Android):

<android> 
                            <manifestAdditions> 
                            <![CDATA[ 
                            <manifest> 
                            <uses-permission android:name="android.permission.PERMISSION_NAME" /> 
                            </manifest> 
                            ]]> 
                            </manifestAdditions> 
                            </android>

As instruções de permissões por uso dentro do elemento manifest são adicionadas diretamente para o documento de manifesto do Android.

As permissões a seguir são obrigatórias para usar vários recursos AIR:

ACCESS_COARSE_LOCATION
Permite ao aplicativo acessar dados de local de rede WIFI e celular por meio da classe Geolocation.

ACCESS_FINE_LOCATION
Permite ao aplicativo acessar dados GPS por meio da classe Geolocation.

ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
Permite ao aplicativo acessar informações de rede por meio da classe NetworkInfo.

CAMERA
Permite ao aplicativo acessar a câmera.
Nota: Ao pedir permissão para usar o recurso de câmera, o Android assume que seu aplicativo também exige a câmera. Se a câmera for um recurso opcional do aplicativo, você deve adicionar um elemento recurso por uso para o manifesto para a câmera, definindo o atributo necessário para false . Consulte Filtro de compatibilidade do Android .

INTERNET
Permite ao aplicativo fazer solicitações de rede, além de permitir a depuração remota.

READ_PHONE_STATE
Permite ao runtime do AIR silenciar o áudio durante as chamadas telefônicas. Você deve definir essa permissão se o aplicativo reproduzir áudio em plano de fundo.

RECORD_AUDIO
Permite ao aplicativo acessar o microfone.

WAKE_LOCK e DISABLE_KEYGUARD
Permite ao aplicativo impedir que o dispositivo entre no modo de suspensão por meio do uso das configurações da classe SystemIdleMode.

WRITE_EXTERNAL_STORAGE
Permite ao aplicativo gravar no cartão de memória externo no dispositivo.

Por exemplo, para definir as permissões para um aplicativo que exige cada permissão de maneira impressionante, você pode adicionar o seguinte para o descritor de aplicativo:

<android> 
                            <manifestAdditions> 
                            <![CDATA[ 
                            <manifest> 
                            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
                            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
                            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
                            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
                            <uses-permission android:name="android.permission.CAMERA" /> 
                            <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
                            <uses-permission android:name="android.permission.INTERNET" /> 
                            <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
                            <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
                            <uses-permission android:name="android.permission.WAKE_LOCK" /> 
                            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
                            </manifest> 
                            ]]> 
                            </manifestAdditions> 
                            </android>

Esquemas URI personalizados do Android

Você pode usar um esquema URI personalizado para ativar um aplicativo do AIR de uma página web ou um aplicativo Android nativo. O suporte URI personalizado depende de filtros de método especificados no manifesto do Android, por isso esta técnica não pode ser usada em outras plataformas.

Para usar um URI personalizado, adicione um filtro com método para o descritor do aplicativo no bloco <android> . Os elementos intent-filter no exemplo a seguir devem ser especificados. Edite a instrução <data android:scheme=" my-customuri "/> para refletir a sequência de caracteres URI para o seu esquema personalizado.

<android> 
                            <manifestAdditions> 
                            <![CDATA[ 
                            <manifest> 
                            <application> 
                            <activity> 
                            <intent-filter> 
                            <action android:name="android.intent.action.MAIN"/> 
                            <category android:name="android.intent.category.LAUNCHER"/> 
                            </intent-filter> 
                            <intent-filter> 
                            <action android:name="android.intent.action.VIEW"/> 
                            <category android:name="android.intent.category.BROWSABLE"/> 
                            <category android:name="android.intent.category.DEFAULT"/> 
                            <data android:scheme="my-customuri"/> 
                            </intent-filter> 
                            </activity> 
                            </application> 
                            </manifest> 
                            ]]> 
                            </manifestAdditions> 
                            </android>

O filtro com método informa o sistema operacional Android que seu aplicativo está disponível para executar uma determinada ação. No caso de um URI personalizado, isto significa que o usuário clicou em um link usando esse esquema de URI (e o navegador não sabe como lidar com isso).

Quando o aplicativo é invocado através de um URI personalizado, o objeto NativeApplication envia um evento invoke . A URL do link, incluindo parâmetros de consulta, é colocada no array arguments do objeto InvokeEvent. Você pode usar qualquer número de filtros com método.

Nota: Links em uma instância StageWebView não podem abrir URLs que usam um esquema de URI customizado.

Filtro de compatibilidade do Android

O sistema operacional Android usa um número de elementos no arquivo de manifesto do aplicativo para determinar se o aplicativo é compatível com um determinado dispositivo. A inclusão desta informação ao manifesto é opcional. Se você não incluir esses elementos, o aplicativo pode ser instalado em qualquer dispositivo com Android. No entanto, ele pode não funcionar corretamente em qualquer dispositivo com Android. Por exemplo, um aplicativo de câmera não vai ser muito útil em um telefone que não tenha câmera.

As marcas do manifesto do Android que você pode usar para filtrar incluem:

  • supports-screens

  • uses-configuration

  • uses-feature

  • uses-sdk (no AIR 3 e superior)

Aplicativos de câmera

Se você pedir a permissão da câmera para seu aplicativo, o Android assume que o aplicativo exige que todos os recursos da câmera estejam disponíveis, incluindo foco automático e flash. Se seu aplicativo não exige que todos os recursos da câmera, ou se a câmera é um recurso opcional, você deve definir os vários elementos uses-feature para a câmera para indicar que estes são opcionais. Caso contrário, usuários com dispositivos que estão faltando um recurso ou que não tenham uma câmera não poderá encontrar o seu aplicativo na Android Market.

O exemplo a seguir ilustra como solicitar permissão para a câmera e tornar todos os recursos desta opcionais:

<android> 
                                <manifestAdditions> 
                                <![CDATA[ 
                                <manifest> 
                                <uses-permission android:name="android.permission.CAMERA" /> 
                                <uses-feature android:name="android.hardware.camera" android:required="false"/> 
                                <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> 
                                <uses-feature android:name="android.hardware.camera.flash" android:required="false"/> 
                                </manifest> 
                                ]]> 
                                </manifestAdditions> 
                                </android>

Aplicativos de gravação de áudio

Se você pedir a permissão para gravar o áudio, o Android também assume que o aplicativo requer um microfone. Se a gravação de áudio for um recurso opcional do seu aplicativo, você pode adicionar uma marca uses-feature para especificar que o microfone não é necessário. Caso contrário, usuários com dispositivos que não têm um microfone não poderão encontrar seu aplicativo na Android Market.

O exemplo a seguir ilustra como solicitar permissão para usar o microfone, enquanto ainda está tornando o hardware do microfone opcional:

<android> 
                                <manifestAdditions> 
                                <![CDATA[ 
                                <manifest> 
                                <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
                                <uses-feature android:name="android.hardware.microphone" android:required="false"/> 
                                </manifest> 
                                ]]> 
                                </manifestAdditions> 
                                </android>

Local de instalação

Você pode permitir que seu aplicativo seja instalado ou transferido para o cartão de memória externo, definindo o atributo installLocation do elemento manifest do Android para auto ou preferExternal :

<android> 
                            <manifestAdditions> 
                            <![CDATA[ 
                            <manifest android:installLocation="preferExternal"/> 
                            ]]> 
                            </manifestAdditions> 
                            </android>

O sistema operacional Android não garante que seu aplicativo será instalado para a memória externa. Um usuário pode também mover o aplicativo entre memória interna e externa utilizando aplicativo de configurações do sistema.

Mesmo quando instalado para memória externa, cache de aplicativos e dados do usuário (como o conteúdo do diretório de armazenamento do aplicativo, objetos compartilhados e arquivos temporários) ainda estão armazenados na memória interna. Para evitar o uso de muita memória interna, seja seletivo sobre os dados que você salvar para o diretório de armazenamento do aplicativo. Grandes quantidades de dados devem ser salvos no SDCard usando os locais File.userDirectory ou File.documentsDirectory (ambos mapeiam para a raiz do cartão SD no Android).

Ativar Flash Player e outros plug-ins em um objeto de StageWebView

No Android 3.0+, um aplicativo deve habilitar a aceleração de hardware no elemento do aplicativo Android para que o conteúdo do plug-in seja exibido num objeto StageWebView. Para ativar a renderização de plug-in, defina o atributo android:hardwareAccelerated do elemento application como true :

<android> 
                            <manifestAdditions> 
                            <![CDATA[ 
                            <manifest> 
                            <application android:hardwareAccelerated="true"/> 
                            </manifest> 
                            ]]> 
                            </manifestAdditions> 
                            </android>

Profundidade de cores

No AIR 3 e em versões posteriores, o runtime define a exibição para renderizar cores de 32 bits. Nas versões anteriores do AIR, o runtime usa a cor de 16 bits. Você pode informar o runtime para usar a cor de 16 bits usando o elemento <colorDepth> do descritor de aplicativo:

<android> 
                            <colorDepth>16bit</colorDepth> 
                            <manifestAdditions>...</manifestAdditions> 
                            </android>

A utilização da profundidade de cor de 16 bits pode aumentar o desempenho de renderização, mas em detrimento da fidelidade de cor.