Instascan: Suporta cĂąmeras frontais/traseiras

Criado em 19 jul. 2016  Â·  11ComentĂĄrios  Â·  Fonte: schmich/instascan

ComentĂĄrios muito Ășteis

Minha solução, até que isso seja corrigido, permitindo algumas configuraçÔes personalizadas da cùmera, é definir a primeira cùmera que contém "back" dentro de seu name :

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

Sempre seleciona a cĂąmera traseira.

Todos 11 comentĂĄrios

Alguma atualização sobre isso?
VocĂȘ precisa de um PR? Se sim, vocĂȘ tem alguma dica por onde começar e/ou como a interface do instascan deve se comportar?

O que vocĂȘ acha de passar restriçÔes para Camera.getCameras() ?

A implementação de getCameras pode tentar getUserMedia com restriçÔes fornecidas e filtrar a cùmera que atende a essas restriçÔes.
veja camera.js#L53

Isso tambĂ©m pode ser uma maneira de corrigir o nÂș 22, mas seria necessĂĄrio passar as restriçÔes de resolução para o construtor Camera , para mesclar as restriçÔes de resolução com o padrĂŁo fornecido no mĂ©todo start .
veja camera.js#L20

Se parecer ok para alguém, estou disposto a enviar um PR ;)

Minha solução, até que isso seja corrigido, permitindo algumas configuraçÔes personalizadas da cùmera, é definir a primeira cùmera que contém "back" dentro de seu name :

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

Sempre seleciona a cĂąmera traseira.

meu fim estå funcionando, mas quando tento usar a cùmera traseira ela vira horizontalmente.. como colocå-la de volta na posição normal? obrigado

Estou com um problema incomum. Não importa qual cùmera eu inicie, sempre mostra a cùmera frontal. Consigo ver claramente as duas cùmeras no array e forço acionar a cùmera traseira, ainda assim, o script sempre inicia a cùmera frontal.
Acabei de baixar a versĂŁo mais recente do iOS.
ConfiguraçÔes:
iPhone 6s
iOS 11
SafĂĄri.

Também não carrega a cùmera no Chrome e Firefox para o mesmo dispositivo/SO.

Alguma ideia?

Obrigado

Estou tendo o mesmo problema. VocĂȘ conseguiu selecionar a cĂąmera traseira no IOS

Obrigado
Helena

@cbnt
@HelenH
VocĂȘ resolveu esse problema? Para mim, tambĂ©m vejo as duas cĂąmeras disponĂ­veis, mas alternar ou prĂ©-selecionar para a cĂąmera traseira sempre acaba voltando para a cĂąmera frontal :(

@schmich Em primeiro lugar, muito obrigado por este projeto incrĂ­vel! :) Em segundo lugar, vocĂȘ tem alguma informação sobre se este Ă© um problema comum do Iphone ou como isso pode ser corrigido?

Nota: Usando o iphone 7 com iOS 11

OlĂĄ @Smux ,

Sim, seguiu as etapas da edição nÂș 54

git clone [email protected] :schmich/instascan.git
cd instacan/
npm instala gulp-cli -g
npm instalar
liberação de gole
cp dist/instascan.min.js /path/to/our/libraries/include/dir

Muito obrigado @schmich por este projeto incrível também.

@HelenH
@Smux

Corrigi o problema usando este fork: https://github.com/PallasKatze/instascan
Ainda precisa seguir as etapas da edição nÂș 54

Mas estĂĄ funcionando bem.
Apenas um pequeno problema com o Android, mas acredito que seja uma versĂŁo especĂ­fica.

OlĂĄ @cbnt ,
Eu quero tentar isso também. Mas o js minificado é aquele fork link para o mesmo js que o branch original.
Não consigo encontrar nenhum js minificado no pacote. Como eu poderia fazer isso? Existe alguém que pode vincular um arquivo js de trabalho?
Desde jĂĄ, obrigado.

Eu sei que essa é uma pergunta båsica e um pouco fora do tópico, mas tenho tentado produzir um js de lançamento e não consegui - instalei o npm no meu servidor de teste, mas o npm continua dando erros quando tento publicar.

Minha solução, até que isso seja corrigido, permitindo algumas configuraçÔes personalizadas da cùmera, é definir a primeira cùmera que contém "back" dentro de seu name :

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

Sempre seleciona a cĂąmera traseira.

Minha solução alternativa, até que isso seja corrigido, permitindo algumas configuraçÔes personalizadas da cùmera, é definir a primeira cùmera que contém "back" dentro de seu name :

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

Sempre seleciona a cĂąmera traseira.

@clytras bela solução! Mas o que acontece se o celular tiver mais de uma cùmera traseira?

Jå tentei essa solução e com a primeira cùmera traseira do array a visão fica horrível com muito zoom. Não estou conseguindo escanear nada.

Mas, se eu usar a segunda cĂąmera traseira devolvida ela funciona perfeitamente e consigo escanear tudo.

Minha dĂșvida Ă© se existe uma forma de detectar qual Ă© a cĂąmera traseira principal? Imagine se o site for usado por usuĂĄrios diferentes, o que significa que eles terĂŁo dispositivos diferentes e o nĂșmero de cĂąmeras traseiras serĂĄ diferente e o pedido devolvido.

Muito obrigado.

Esta pĂĄgina foi Ăștil?
0 / 5 - 0 avaliaçÔes