7
respostas

Código para acessar câmera do android 7 vale para versões anteriores?

Minha dúvida é, depois que a gente atualiza o código de acessar a câmera para o android 7, esse mesmo código vai valer para versão anteriores? Ou teremos que fazer um controle com if, para identificar qual versão do Android é? Desde já, grato!

7 respostas

É necessário fazer um controle com if, pois aparelhos antigos com versões anteriores à 7.0 não possuem esses métodos "novos" de acesso à câmera. Nesses casos, o próprio Android Studio sugere esse if ao identificar que determinado método pode não existir em versões anteriores do Android.

Felipe, rodei esse mesmo código em um aparelho com versão inferior ao 7 e funcionou tudo certinho. Será que ainda assim necessita de fazer esse controle de versões?

Varia caso a caso. Nesse exemplo da câmera, houve uma mudança na API a partir da versão 6.0. Então para aparelhos anteriores a versão 6.0 é necessária uma verificação.

Caso esse código seja executado num android 5.0, por exemplo, haverá algum problema.

Então a "obrigatoriedade" de se fazer o controle de versões depende de quais versões do Android seu aplicativo dará suporte: caso dê suporte para Android < 6, então é necessário o if.

Felipe,

Para a construção de um novo App hoje, você sugere usar a API 6.0 como um mínimo? O Android Studio indica uma porcentagem de uso, mas o que você acha? Pergunto isso sobre essa questão da câmera, eu meu App vou utilizar o acesso a câmera e estou com essa dúvida!

Depende muito do nicho do seu aplicativo, Pri.

Por exemplo, digamos que seu aplicativo seja uma rede social (tipo um Instagram): deve ser legal atingir o maior número possível de pessoas. Nesse caso, é interessante suportar Androids mais antigos, tipo o 4.

Lembre-se que o mundo Android é bastante fragmentado, e suportar apenas o Android 6+ implica em deixar um grande grupo de pessoas de fora. Muitas vezes, dependendo do nicho, faz sentido, mas deve ser pensado com cuidado.

Só pra comparação: aqui nos apps da Alura a gente suporta a partir do Android 4.0.3.

Abraço

Por favor, gostaria de saber na prática como ficaria esse controle com if? desde já grato!

Olá Guilherme,

Para definir a API mínima, o Android usa como base a versão do SDK. Você pode consultar o número deles no wikipedia mesmo: https://pt.wikipedia.org/wiki/Histórico_de_versões_do_Android

Vou colocar um código genérico aqui para você ter uma idéia de alguma implementação que seja diferente em versões superiores ao 5 (Lollipop).

public void metodo() {
    if (Build.VERSION.SDK_INT >= 21) {
        //faça isso
    } else {
        //faça aquilo
    }
}

Esse Build.VERSION.SDK_INTrecebe um int, que é justamente a versão (21).

Entretanto, não costumamos usar assim. Afinal, olhando o código, qual Android é esse da versão 21? Pra não sermos obrigados a lembrar de cabeça, a classe VERSION_CODES já tem registradas todas versões, então nosso código fica assim:

public void metodo() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        //faça isso
    } else {
        //faça aquilo
    }
}

Só lembrando: as duas formas estão corretas! Mas a segunda é semanticamente melhor ;)

Aqui tem a lista de todos os VERSION_CODES :

https://developer.android.com/reference/android/os/Build.VERSION_CODES

É isso, espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software