Como acessar a câmera de um celular a partir de um aplicativo da web?
190
No meu aplicativo da Web (não aplicativo nativo) para celulares, quero tirar uma foto e enviá-la, mas não quero usar o Adobe Flash. Há alguma maneira de fazer isso?
"Página da Web" significa que ele deve ser facilmente acessado a partir de qualquer tipo de clientes / dispositivos. Então, devo definir restrições?
夏期劇場
1
Eu suponho que você deseja acessar a câmera de hardware, certo?
precisa
Hmm .. "Câmera" dos telefones inteligentes móveis / etc .. da página da web.
夏期劇場
Olá, este é um assunto que estou estudando atualmente para meus próprios projetos. PWAs permitem que você use os recursos do dispositivo nativas em navegadores modernos: developers.google.com/web/updates/2016/12/imagecapture
palmaone
Respostas:
260
No iPhone iOS6 e no Android ICS em diante, o HTML5 possui a seguinte tag, que permite tirar fotos do seu dispositivo:
Ambos capture="camera"(String) e os mais velhos accept="image/*;capture=camera"foram substituídos em 2012 com capture="capture"(Boolean). O atributo é usado para forçar a captura em vez de selecionar na biblioteca. Veja as especificações e a sintaxe correta para captura de mídia HTML
Octavian Naicu
36
Hoje em dia, pelo menos com o Android, é relativamente fácil. Basta usar a etiqueta de entrada de arquivo normal e, quando o usuário clicar, o telefone perguntará se o usuário deseja usar a câmera (ou gerenciadores de arquivos etc.) para enviar um arquivo. Basta tirar uma foto com a câmera e ela será automaticamente adicionada e carregada.
Nenhuma idéia sobre o iphone. Talvez alguém possa esclarecer sobre isso. EDIT: Iphone funciona da mesma forma.
O Safari & Chrome no iOS 6+ e Android 2.2+ suportam o HTML Media Capture, que permite tirar fotos com a câmera do dispositivo ou selecionar uma existente:
<input type="file" accept="image/*">
Veja como funciona no iOS 10:
O Android 3.0+ e o Safari no iOS10.3 + também suportam o captureatributo usado para pular diretamente para a câmera.
<input type="file" accept="image/*" capture>
capture="camera"(String) e accept="image/*;capture=camera"(Parameter) faziam parte de especificações antigas e foram substituídos por capture(Boolean) a Recomendação do candidato do W3C.
Mina no Android apenas salta direto para selecionar fotos, mas não me dar a opção para a câmera, mesmo quando eu puser capture = "câmera" .... totalmente preso
Benyaman
@ Benyaman Tente com em capturevez de capture="camera". Curioso que dispositivo e versão do Android.
Otaviano Naicu
Aparentemente, no Android 5.0, aparentemente, o Phonegap não possui captura de HTML incorporada. Portanto, ele não pode capturar coisas, nem gravação de vídeo, áudio ou câmera. Eu tive que construir uma solução alternativa.
precisa saber é o seguinte
5
bem, há novos recursos HTML5 para acessar a câmera do dispositivo nativo - "getUserMedia API"
NOTA: O HTML5 pode lidar com a captura de fotos de uma página da Web em dispositivos Android (pelo menos nas versões mais recentes, executadas pelo Honeycomb OS; mas não nos iPhones, mas no iOS 6).
Você pode usar o WEBRTC, mas infelizmente não é suportado por todos os navegadores da web. ABAIXO É O LINK PARA MOSTRAR QUE NAVEGADORES O APOIA
http://caniuse.com/stream
WebRTC e getUserMediaé um exagero, <input type="file" accept="image/*">fará o truque.
Octavian Naicu
4
O SDK do AppMobi HTML5 prometeu o acesso à funcionalidade nativa do dispositivo - incluindo a câmera - a partir de um aplicativo baseado em HTML5, mas não é mais propriedade do Google. Em vez disso, tente as respostas baseadas em HTML5 nesta postagem .
Não acredito que o Google possua propriedade sobre o AppMobi ou seus produtos.
Fakeguybrushthreepwood 30/11/12
Ah - meu erro, porque está na loja virtual do Chrome - a referência do Google foi removida. Aqui estão os verdadeiros parceiros: appmobi.com/?page_id=468
Dave Everitt
3
Você deseja usar o getUserMedia para acessar a câmera.
Observe que foram implementados recursos de segurança que exigem que o aplicativo seja executado localmente no host local ou por meio do SSL para que GetUserMedia () funcione.
Descobri isso ao tentar várias das demos disponíveis e fiquei desapontado quando não funcionaram! Consulte: Novas restrições de segurança
Acho que você não pode - existe uma API de rascunho do W3C para obter áudio ou vídeo, mas ainda não há implementação em nenhum dos principais sistemas operacionais móveis.
Segundo melhor A única opção é seguir a sugestão de Dennis de usar o PhoneGap. Isso significa que você precisa criar um aplicativo nativo e adicioná-lo à loja / mercado de aplicativos para dispositivos móveis.
desculpe repost - eu estava olhando para ver se você contornou a exceção NPE com o cliente jersey no android. preso :(
necromante
0
Não conheço nenhuma maneira de acessar a câmera de um telefone celular a partir do navegador da Web sem algum mecanismo adicional (por exemplo, Flash ou algum tipo de contêiner que permita o acesso à API do hardware)
Isso ainda exige que um aplicativo seja instalado no dispositivo móvel, o que eu acho que o OP quer evitar.
precisa
@MichaelPetrotta você conhece uma maneira melhor?
precisa
2
Não acredito que seja possível o que o OP está pedindo.
Michael Petrotta
@MichaelPetrotta é o que eu acho também. E a melhor maneira de pensar seria no PhoneGap, pois funciona no iOS (o que o Flash não). Ainda assim, é nativo, é verdade, mas permite pelo menos um pouco de acesso entre plataformas às câmeras a partir de uma página da web.
Respostas:
No iPhone iOS6 e no Android ICS em diante, o HTML5 possui a seguinte tag, que permite tirar fotos do seu dispositivo:
Capture
pode levar valores como câmera, filmadora e áudio.Acho que essa tag definitivamente não funcionará no iOS5, não tenho certeza.
fonte
<input type="file" accept="image/*;capture=camera">
. De acordo com o MDN, não hácapture
atributo para uminput
elemento.capture="camera"
(String) e os mais velhosaccept="image/*;capture=camera"
foram substituídos em 2012 comcapture="capture"
(Boolean). O atributo é usado para forçar a captura em vez de selecionar na biblioteca. Veja as especificações e a sintaxe correta para captura de mídia HTMLHoje em dia, pelo menos com o Android, é relativamente fácil. Basta usar a etiqueta de entrada de arquivo normal e, quando o usuário clicar, o telefone perguntará se o usuário deseja usar a câmera (ou gerenciadores de arquivos etc.) para enviar um arquivo. Basta tirar uma foto com a câmera e ela será automaticamente adicionada e carregada.
Nenhuma idéia sobre o iphone. Talvez alguém possa esclarecer sobre isso. EDIT: Iphone funciona da mesma forma.
Amostra da tag de entrada:
fonte
multiple
funciona tanto no Android quanto no iOS, consulte Sintaxe correta para captura de mídia HTMLApenas para atualizar isso, o padrão agora é:
para acessar a câmera (traseira) voltada para o ambiente e
para câmera voltada para o usuário (frontal). Para acessar o vídeo, substitua "video" por "image" no nome.
Testado no iPhone 5c, executando o iOS 10.3.3, firmware 760, funciona bem.
https://www.w3.org/TR/html-media-capture/
fonte
O Safari & Chrome no iOS 6+ e Android 2.2+ suportam o HTML Media Capture, que permite tirar fotos com a câmera do dispositivo ou selecionar uma existente:
<input type="file" accept="image/*">
Veja como funciona no iOS 10:
O Android 3.0+ e o Safari no iOS10.3 + também suportam o
capture
atributo usado para pular diretamente para a câmera.<input type="file" accept="image/*" capture>
capture="camera"
(String) eaccept="image/*;capture=camera"
(Parameter) faziam parte de especificações antigas e foram substituídos porcapture
(Boolean) a Recomendação do candidato do W3C.Documentação de suporte: este livro O'Reilly de 2013 e meus testes
fonte
capture
vez decapture="camera"
. Curioso que dispositivo e versão do Android.bem, há novos recursos HTML5 para acessar a câmera do dispositivo nativo - "getUserMedia API"
NOTA: O HTML5 pode lidar com a captura de fotos de uma página da Web em dispositivos Android (pelo menos nas versões mais recentes, executadas pelo Honeycomb OS; mas não nos iPhones, mas no iOS 6).
fonte
Você pode usar o WEBRTC, mas infelizmente não é suportado por todos os navegadores da web. ABAIXO É O LINK PARA MOSTRAR QUE NAVEGADORES O APOIA http://caniuse.com/stream
E esse link fornece uma idéia de como você pode acessá-lo (código de exemplo). http://www.html5rocks.com/en/tutorials/getusermedia/intro/
fonte
getUserMedia
é um exagero,<input type="file" accept="image/*">
fará o truque.O SDK do AppMobi HTML5 prometeu o acesso à funcionalidade nativa do dispositivo - incluindo a câmera - a partir de um aplicativo baseado em HTML5, mas não é mais propriedade do Google. Em vez disso, tente as respostas baseadas em HTML5 nesta postagem .
fonte
Você deseja usar o getUserMedia para acessar a câmera.
Este tutorial descreve os conceitos básicos de acesso a uma câmera de dispositivo a partir do navegador: https://medium.com/@aBenjamin765/make-a-camera-web-app-tutorial-part-1-ec284af8dddf
Nota: Isso funciona na maioria dos dispositivos Android e apenas no iOS no Safari.
fonte
Observe que foram implementados recursos de segurança que exigem que o aplicativo seja executado localmente no host local ou por meio do SSL para que GetUserMedia () funcione.
Descobri isso ao tentar várias das demos disponíveis e fiquei desapontado quando não funcionaram! Consulte: Novas restrições de segurança
fonte
Acho que você não pode - existe uma API de rascunho do W3C para obter áudio ou vídeo, mas ainda não há implementação em nenhum dos principais sistemas operacionais móveis.
Segundo melhorA única opção é seguir a sugestão de Dennis de usar o PhoneGap. Isso significa que você precisa criar um aplicativo nativo e adicioná-lo à loja / mercado de aplicativos para dispositivos móveis.fonte
Não conheço nenhuma maneira de acessar a câmera de um telefone celular a partir do navegador da Web sem algum mecanismo adicional (por exemplo, Flash ou algum tipo de contêiner que permita o acesso à API do hardware)
Para este último, consulte PhoneGap: http://docs.phonegap.com/phonegap_camera_camera.md.html
Com isso, você poderá acessar a câmera pelo menos em dispositivos baseados em iOS e Android.
fonte