Acessar a câmera, a galeria de imagens do dispositivo Android e compartilhar através do Delphi XE5 com pouquíssimas linhas de código.
Bem como mencionei na postagem anterior a ansiedade é grande para contê-la a melhor solução que encontrei foi colocar a mão na massa e codificar alguns exemplos. Para começar vamos fazer uma pequena aplicação mobile na qual iremos capturar e compartilhar imagens da câmera e da galeria do dispositivo. Nossa aplicação será toda escrita em códigos Delphi e rodará num dispositivo Android.
Iniciando o desenvolvimento
Primeiro passo que tomaremos será iniciar o Delphi XE5 e criar nossa aplicação através do nenu File–> New Project –> Delphi Projects –> Mobile Projects.
Vale notar que existem vários modelos de layout de aplicações prontos que podem ser selecionados, no nosso caso escolheremos um modelo de aplicação em branco (Blank Application).
Vamos salvar o projeto através da opção File –> Save All. Para a unit, atribua o nome de frmAndPrincipalUnt o projeto em si chamaremos de prjCamShare.
Incluiremos em nosso projeto um TImage, um TToolBar, três TButton e um TActionList. Precisamos agora alterar algumas propriedades dos objetos em nosso projeto, começamos pelo formulário, seria o display do dispositivo exibido na IDE, altere sua propriedade Name para frmAndPrincipal. Os demais objetos vamos seguir a lista abaixo:
- Button1
- Name –> btnCam
- StyleLookup –> cameratoolbutton
- Button2
- Name –> btnArquivo
- StyleLookup –> searchtoolbutton
- Button3
- Name –> btnCompartilhar
- StyleLookup –> actiontoolbutton
- Image1
- Name –> imgFoto
- Align –> alClient
Atribuindo códigos e Ações
Com a aplicação tendo o layout já definido fica faltando apenas inserir nossas linhas de código, porém juntamente com esse processo faremos atribiuções das ações pré-definidas que serão capazes de permitir nossa aplicação acessar as funcionalidades do dispositivo Android.
Selecione o btnCam e no Object Inspector, clique sobre a propriedade Action, selecione então New Standard Action –> Media Library –> TTakePhotoFromCameraAction.
Ainda no Object Inspector, acesse a guia Events e expanda a propriedade Action , vide imagem abaixo:
a partir daí selecione o evento onDidFinishTaking e seu código ficará:
procedure TfrmAndPrincipal.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap); begin imgFoto.Bitmap.Assign(Image); end;
Com esse código nossa aplicação já é capaz de capturar imagens da câmera do dispositivo. Mas como queremos algo mais, vamos continuar o trabalho.
Para o botão btnArquivo, faremos o mesmo procedimento, entretanto usando New Standard Action –> Media Library –> TTakePhotoFromLibraryAction. Para este botão também utilizaremos o mesmo evento onDidFinishTaking e seu código para o btnArquivo será:
procedure TfrmAndPrincipal.TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap); begin imgFoto.Bitmap.Assign(Image); end;
E por fim vamos atribuir ao btnCompartilhar a New Standard Action –> Media Library –> TShowShareSheetAction e nesse caso codificaremos seu evento onBeforeExecute:
procedure TfrmAndPrincipal.ShowShareSheetAction1BeforeExecute(Sender: TObject); begin ShowShareSheetAction1.Bitmap.Assign(imgFoto.Bitmap); end;
Compilar distribuir e usar
Finalizado o nosso processo de codificação da aplicação vamos agora compilar e fazer o deploy de nossa aplicação. Selecione o dispositivo de destino para nossa aplicação, no meu caso escolhi um Motorola XT920, o Razr D3.
Aqui temos que lembrar que o aparelho deve estar com o modo de Depuração USB ativo e aceitando fontes desconhecidas de aplicativos.Dê um Build no projeto e vamos madar Rodar sem depurar (Run without debugging). Aguarde que o próprio Delphi XE5 se encarregará de instalar o apk em seu dispositivo.
Agora é só conferir o resultado.
Até a próxima.









gostei muito, só estou com um pequeno problema e não estou achando solução que o seguinte quando compilo a aplicação tanto no emular quanto no dispositivo “celular” a aplicação não roda ela parece iniciar porem fecha sem nenhuma mensagem.
podem me ajudar?
Olá Edilson… você já conseguiu rodar outras aplicações normalmente no emulador? Certificou-se que o dispositivo emulado está com os recursos adicionados?
Qual o dispositivo físico está utilizando???
Passe um pouco mais das suas informações para que, se estiver a meu alcance, eu consiga te auxiliar.
Um abraço e obrigado pela participação.
Primeiro obrigado pela atenção.
é o seguinte meu celular é um motorola Razr-i, quanto ao aplicativo mesmo que eu crie um bem simples tipo colocando apenas uma label e compilando não roda nem do celular e nem mesmo do emulador, no emulador a tela fica ´preta, no celular a tela fica preta e fecha automaticamente sem dar nenhuma mensagem .
Razr-i… esse acredito que não vai funcionar, o processador dele não é suportado pelo XE5 (de certeza pelo sem update).
Quando falamos de emulador tente gerar um novo dispositivo emulado. Sem ver o problema é muito difícil traçar algum caminho.
Mas atualizar as ferramentas android, a questão da GPU… são vários pontos de atenção.
Espero que consiga.
Amigos, Vocês já conseguiram solucionar esta questão de fechar automaticamente depois de compilar?
Olá Landerson, você poderia sugerir o link do emulador de android que você utiliza?
Olá Agnaldo… em primeiro lugar seja bem vindo ao Blog e obrigado por sua participação.
Nas postagens não está sendo usado o emulador, o delpoy da aplicação é feito diretamente no dispositivo físico.
Um grande problema apontado a todos que desenvolvem utilizando o emulador é a lentidão do mesmo, se você também se vê nessa situação, para superar
de certa forma esse problema é aconselhável iniciar o emulador apenas uma vez, logo que você iniciar o desenvolvimento,
quando houver a necessidade de compilar ele já vai estar pronto para receber sua aplicação.
Quando vou compilar mostra esse erro:
[Exec Error] The command “”C:\Program Files\Java\jdk1.7.0_25\bin\KeyTool.exe” -genkey -v -keystore “C:\Users\Adelmo\AppData\Roaming\Embarcadero\BDS\14.0\debug.keystore” -storepass android -alias androiddebugkey -keypass android -dname “cn=Unnamed, ou=Mobile Organization, o=Embarcadero Technologies, l=San Francisco, s=California, c=US” -keyalg RSA -keysize 2048 -validity 10000″ exited with code 1.
Olá Adelmo. O problema ainda persiste? Qual versão do Delphi você está utilizando? Essa mensagem sua geralmente ocorre quando um dos “bats” executados não localiza determinada linha de comando. No seu caso aconselho a tentar compilar um projeto mobile simples, pode só colocar uma tela e label, se o problema for reportado sua instalação/configuração do Delphi está corrompida, o que te levaria à re-instalação.
Tente e poste aqui o resultado.
Obrigado pela participação aqui no blog e espero que consiga resolver aí!
Abraço.
O Delphi compila, mas o emulador fica com tela preta e depois encerra a compilação no delphi.
Olá Richard tudo bem?
Há em alguma dessas postagens um parte em que menciono a configuração do emulador, sendo indispensável a configuração a GPU no mesmo.
Enfim, o emulador não costuma falhar não. Infelizmente por estar em trânsito não conseguirei te mandar o link correto, realmente não me recordo.
Assim que eu retornar se você ainda estiver com problemas farei contato com você.
Vale lembrar que o emulador precisa de configuração para acesso a câmera.
Até.
Bom Dia, Landerson.
Gostei muito dos seu artigos, muitos deles deu para refrescar de como sera essa nova IDE com Android e quero uma ajuda sua?
Bom, preciso entender de como funciona o Android no RadStudio, ok., então será que você possui algum artigo ou indicar um local aonde consigo incluir e configurar o android no RadStudio, assim como gerar uma pequena aplicação em mobile(Android),.
Desde já agradeço pela atenção.
Obrigado.
Olá Rogério, em primeiro lugar bem vindo ao blog e obrigado pela participação.
Com relação a sua questão o Android é instalado juntamento com o RAD Studio desde a versão XE5 (que é a primeira a suportar desenvolvimento para Android). Você pode configurar o seu Delphi para ler o Android já instalado na máquina. Para isso acesso o Menu Tools->Option->Environment Options->SDK Manager e configurar os diretórios.
Lembrando que somente a partir da Versão XE5 o Delphi passa a suportar Android.
Espero ter ajudado.
Abraço.
Prezado Landerson, agradeço o seu retorno atento à minha dúvida.
O emulador parece estar configurado corretamente, inclusive com a opção Use Host GPU ativada. Tenho o software Eclipse instalado e configurado, através do Eclipse consigo criar minhas aplicações sem nenhum problema. Compilações, emulação e distribuição acontecem de forma perfeita. Porém no Delphi XE6, isso não acontece.
Desculpe por tomar o seu tópico como referência, pois sei que trata-se de um exemplo para Câmera do aparelho, mas tentei por aqui encontrar alguma resposta referente a isso.
Respondendo a sua pergunta: Ainda estou com o mesmo problema e acredito ser algo bem simples que passou despercebido.
Landerson, acabei de descobrir uma curiosidade que pode auxiliar na resolução do meu problema.
Na config do emulador, testei até hoje sempre com Android 4.4.2… emula certinho, ou seja, minha aplicação roda perfeita no emulador, mas quando coloco o meu Projeto.apk dentro do meu Android 2.2 ele não roda. Até aqui entendi que preciso emular com Android 2.2 OU testar minha APK num aparelho com Android 4.4.2 para que tudo funcione… estou certo?
Pois bem… Não tenho um aparelho Android 4.4.2… somente este com a versão mais antiga que é 2.2 e o mesmo não pode ser atualizado. Quando configuro meu emulador para Android 2.2 (API level 8), o emulador fica na tela preta escrita Android e não sai disso… E lógico, meu projeto não emula apresentando erro.
Preciso configurar alguma coisa em algum lugar sobre essa questão de Android 2.2… Preciso conseguir emular Android 2.2 de forma correta e não encontro a solução…
Pareço estar no caminho certo para conseguir resolver meu problema?
Agradeço muitíssimo sua ajuda e atenção se puder!!!
Richard
Olá Richard… o caminho é exatamente esse que você está seguindo, porém, quando andei me aventurando no Eclipse (Android) notei que existe uma mudança radical no que o Android chama de MainActivity (acho que é esse o nome, rsrs), enfim, nas versões da 2.3 em diante essa alteração fez com que meu programa parasse de funcionar, eu o testei em vários aparelhos aqui da empresa na época e aí fui informado disso em algum forúm.
No delphi não sei como isso é tratado, no eclipse tive que mudar a linha que proporcionava a abertura da tela principal do programa.
No 4.2 ficou assim:
Nas versões anteriores a 3.2 ficou assim:
Mas como te disse, no Delphi não sei como tratar a questão, sinceramente não sei nem se existirá tratamento para tal, vale a pena até você verificar a sua carteira de clientes a possibilidade de estabelecer as versões suportadas pelo Delphi apenas como aceitas por sua aplicação.
O código acima faz parte de um exemplo que desenvolvi quando o Delphi XE3 foi lançado e testei a conexão de dispositivos Android ao servidor de aplicação.
Funcionou, porém encontrei os problemas nos dispositivos mais antigos e com Androids “velhos”.
Ajudar acho que não ajudou muito, esclarecer acho que também não, mas fica o conhecimento de uma experiência já vivida por mim, rs.
Um abraço e obrigado pela participação no blog.
Até a próxima.
Olá Landerson, boa noite!
Reparei que as fotos que são retiradas desta maneira, não contem os mesmos meta-dados que as fotos tiradas através do aplicativo de câmera nativo do celular, como faço para colocar estas informações nas minhas imagens? Por exemplo, preciso de gravar dados de localização…
ola. gostaria de saber si tem como ao compartilhar a foto ja estivesse inserida uma legenda automática
ex:
Foto publicada Via (nome do programa)
mais que o usuário não tivesse opção de mudar essa fraze na hora do compartilhamento
Oi Marlone… realmente desconheço, entretanto acredito que seja possível você fazer um programa que faça essa legenda. Entretanto vejo isso como um nível muito avançado para esta solução.
De qualquer forma, se realmente é o que você precisa vale a pena ir buscar esse conhecimento.
Um abraço e obrigado pela sua participação aqui no Blog.
desculpe. uma nova duvida, teria como ao pressionar o botão compartilhar ele ir direto para o Facebook , e não aparecer a lista de opções de compartilhamento?
Marllone… bom tê-lo de volta aqui!
Acredito que tenha como sim, teria realmente que dar uma pesquisada, entretanto não consigo te afirmar e te passar algo contundente de como fazer.
Tentarei incluir este tópico em minha lista de pesquisas futuras.
Mais uma vez obrigado pela participação!
Bom artigo, parabéns,
Gostaria de saber se existe a possibilidade de anexar mais de uma foto(imagem) no compartilhamento ? “ShowShareSheetAction1.Bitmap.Assign(imgFoto.Bitmap);”
Olá Josinaldo… primeiramente bem vindo ao blog! Com relação a questão levantada, sinceramente não tentei… embora acredite que seja possível precisaria dedicar um tempo para estudar e buscar uma solução.
A minha agenda profissional dá uma apertada agora nesse período mas assim que me sobrar um tempinho vou tentar solução para sua resposta.
Mais uma vez obrigado e se você achar antes de mim, compartilhe conosco!
Abração!
Alguém conseguiu compartilhar mais de uma foto ? Ainda não consegui.
abraço.
Ola
Consegui fazer funcionar tudo certinho.
Gostaria de uma idéia se poderes me ajudar.
Estou utilizando o sansung grand duos.
Quando tiro a foto abre o aplicativo de foto(camera) logo depois ele fecha meu aplicativo, quando volto na aplicação a foto que tirei esta no Ti image.
Gostaria que ele não fechasse minja aplicação.
att.
Olá Felipe… seja bem vindo ao blog!
Que bom que você conseguiu sucesso aí no tutorial. Bem não entendi direito a questão: você gostaria que após o compartilhamento sua aplicação não fechasse é isso?
Fico no seu aguardo!
Muito bom esse artigo, Pergunta ao invés de compartilhar em rede social, gostaria de mandar via FTP para um endereço na net.
estou tentando fazer isso por aqui mais gostaria de saber de vc como faz?
grato
caio cezar
Olá Caio, seja muito bem vindo!
Tente usando o idFTP da paleta Indy, talvez funcione!
Obrigado pela participação!!!
Boa Noite, gostaria de saber como conecto meu celular com o XE não estou conseguindo configurar para as aplicações rodarem direto no meu smartphone, somente no emulador
Olá Eduardo!
Seja bem vindo ao blog! Um breve resumo seria instalar o Google USB Drives, re-iniciar o sistema, plugar o telefone e aguardar seu computador reconhecer o seu aparelho. Feito isso acesse o Delphi, e verifique se o seu aparelho está disponível no Target do Projeto, se sim, de dois clique nele ou botão direito e Activate e pronto, feito isso bastar rodar a aplicação.
Espero que ajude, caso não dê certo:
Qual é o modelo do seu dispositivo?
Qual versão do Delphi você está usando?
Lembrando que o suporte a Android só ocorreu da versão XE5 em diante, e existe uma lista de aparelhos que não são suportados.
Um abraço e poste aqui seu feedback!
Boa tarde Landerson, eu estava executando o delphi XE6 em uma máquina virtual VMWare, tentando conectar meu Galaxy S4, mas não aparecia na lista de dispositivos, após instalar o Delphi na máquina física foi possível compilar direto no aparelho. Obrigado pela atenção!
Hola eu faço todo o procedimento certo porem a tela fica tda branca no meu aparelho (Galaxy s2 duos) ja no emulador o app abre e fecha só.
você sabe qual o procedimento que devo fazer.
e Lembrando quando rodo o app no celular clicko na parte que coloquei os buttons e coloco uma ShowMessage para ver se ta tdo bugado mais ele funciona os botões mais a tela só fica branca.
Olá Jonathan… muito bem vindo!
Existem algumas limitações, na verdade são pré-requisitos de compatibilidade das aplicações geradas pelo Delphi XE5 ou superior.
Veja o texto abaixo retirado do FAQ da Embarcadero:
Aplicações criadas no Delphi XE7 são desenhadas para rodar em celulares e tablets com Android: Dispositivos ARMv7 com suporte NEON, rodando Android Gingerbread (2.3.3-2.7), Ice Cream Sandwich (4.0.3, 4.0.4), Jelly Bean (4.1.x, 4.2.x, 4.3.x), KitKat (4.4x). A compatibilidade pode variar com base no hardware e nas especificidades do dispositivo.Aqui você tem algo mais técnico sobre o assunto: http://docwiki.embarcadero.com/RADStudio/XE5/en/Android_Devices_Supported_for_Application_Development verifique se seu aparelho se enquadra nos requisitos!
Poste um feedback depois sobre a situação.
Espero tê-lo ajudado!
Cordialmente!
Olá,
Muito bom seu artigo!
Tenho uma questão: como faço para pegar o nome do arquivo que foi gerado quando a foto foi tirada?
Grato pela atenção.
Olá George, primeiramente seja muito bem vindo ao blog! Que bom que gostou. Aqui costumo compartilhar alguns pontos de necessidade de conhecimento que vivenciei no desenvolvimento de soluções adotadas no meu cotiano na empresa que trabalho. Ainda não passei por essa necessidade questionada por você, mas é importante ressaltar que na versão do XE7 é possível editar os arquivos antes de salvá-los, e isso pode facilitar na solução do caso exposto. Vou tentar refazer o projeto utilizando o XE7 e tento capturar esse nome do arquivo. Vamos fechar o seguinte quem conseguir primeiro compartilha, pode ser?
Obs.: Acompanhei seus trabalhos publicados nas edições de Active Delphi e de Clube Delphi. Parabéns e obrigado por eles! Me sentindo honrado com a sua “visita”! Obrigado mesmo!
Olá Landerson,
Que bom que estamos compartilhando conhecimentos! Fico feliz por isso. 🙂
Eu , pra já, estou a usar somente o XE5, pois está registrado e não tenho o XE7.
Como estou a começar a usar o Delphi para mobile a pouco tempo, ainda tenho muitas dúvidas sobre várias coisas e infelizmente não estou tendo tempo para dedicar-me mais, mas chego lá!
Como vc disse, se depois descobrir como saber o nome do arquivo, diga-nos, pf.
Obrigado pela ajuda!
😉
George De Luca
Estou conseguindo fazer tudo certinho.
Só que preciso ao selecionar a foto na galeria e colocar no Timage, preciso pegar o nome da foto, para posteriormente enviar via FTP. Tem ideia como faço isso ?
Obrigado.
Olá Marcelo… seja bem vindo! Você está aí apresentando o mesmo problema que ainda não consegui solucionar ainda.
Ainda não consegui capturar o nome do arquivo que seleciono, mas ainda não desisti! Para casos como este costumo combinar com a galera de quem achar primeiro sinalizar para o outro, estou nesse exato momento te incluindo na mesma força tarefa que tem EU, George De Luca e agora você! rsrs
Enfim, se achar algo em relação a isso aí, poste aqui!
Mais uma vez obrigado pela sua participação!
Ok.
Com certeza.
Vou lutando aqui também para tentar solucionar, qualquer coisa posto aqui.
Andei estudando e pesquisando com pessoas da área, até mesmo com o suporte da Embarcadero. Parece que não tem como através da Api nativa fazer isso.
A solução seria criar uma galeria própria para isso, e daria muito trabalho.
Estou esperando a respostas de uns consultores da embarcadero para finalizar se é possivel ou não.
Landerson Gomes
Consegui resolver o meu problema.
Caso queira me mande seu email que ti passo a solução que eu achei.
Bom vamos la então.
Como havia dito, em conversa com algumas pessoas e até mesmo com o suporte da embarcadero, percebi que não tinha uma solução nativa para isso.
Teria que se criar uma biblioteca própira dentro do dispositivo para conseguir tal solução.
O que eu fiz na verdade não sei se vai servir para todos vocês, é simples, para mim serviu direitinho , pois precisava do caminho e nome do arquivo para enviar por FTP.
Primeiro :
O acesso a câmera e a galeria de imagens do android faço da mesma forma que ja foi dita no tutorial acima.
Segundo :
Para eu pegar o caminho e nome da imagem eu faço uma copia do arquivo que esta no TImage para uma pasta que eu sei o caminho dela . No meu caso dentro da própria pasta DCIM , onde o caminho pode ser obtido pela função : “GetSharedCameraDir;” , com isso pego o caminho da pasta de imagens do android, ai eu copio a imagem renomeando ela assim :
“Image1.Bitmap.SaveToFile(caminho+’/Astec/’+img);”
onde caminho é o “GetSharedCameraDir”.
Astec é uma subpasta dentro desse caminho e img é o nome que eu dei para minha imagem exemplo : “Teste.jpg”.
Com isso eu tenho o caminho e o nome da imagem para usar no que precisar.
Após isso pode até deletar essa imagem que vc criou para não ficar armazenado :
“DeleteFile(caminho+’/Astec/’+img);”
Galera para mim deu certinho, qualquer duvida estamos ai.
Vlw pessoal.
So mais um detalhe para usar a GetSharedCameraDir tem que colocar na Uses a biblioteca “Androidapi.IOUtils”.
Olá Marcelo,
Muito boa sua dica!
Veja se estou enganado, pf: A funcionalidade que fizestes faz com que tenhas 2 arquivos iguais dentro do celular, correto?
Ok, podes apagar a cópia da sua pasta de exemplo na DCIM, mas não impede de duplicar os arquivos, certo?
Mesmo assim, essa sua solução foi muito bem vinda. 😉
Obrigado pela ajuda!
George De Luca
Amigo Marcelo,
Como fez pra poder salvar no dispositivo? Estou tentando fazer assim como você explicou porém quando tento salvar tenho a msg: java.io.FileNotFoundException (o caminho) : open failed: ENOENT (No such file or directory)
Boa tarde,
No meu caso não esta excluindo,..
“DeleteFile(caminho+’/Astec/’+img);”
Na verdade ela replica até eu usar ela ou o caminho dala para alguma coisa. Após isso pode deletar ela. No meu caso eu criei uma outra pasta e guardo a imagem la até eu enviar por ftp, após isso eu deleto ela.
Pois, foi o que disse.
Mas bem pensado. Parabéns! 😉
Ola, bom dia! Eu estou carregando uma tabela em um listview, porém eu gostaria de eixar um icone do lado valor da lista, porém seria só um icone. Alguém sabe como posso fazer isso?
Olá pessoal, boa noite, eu tenho uma pequena dúvida, é o seguinte, meu único problema é na hora de redimensionar a resolução do app conforme a resolução da tela do celular, no delphi ele fica de um tamanho e depois quando instalo no celular, ele não redimensiona, geralmente o app fica em uma resolução um pouco maior que a do meu celular, e não sei como resolver isso já que não tenho experiência em programação mobile, apenas para windows mesmo.
Meu celular é um Sony Xperia M;
Desde já obrigado a quem me ajudar!
boa tarde, uma ajuda por favor, ”Finalizado o nosso processo de codificação da aplicação vamos agora compilar e fazer o deploy de nossa aplicação. Selecione o dispositivo de destino para nossa aplicação, no meu caso escolhi um Motorola XT920, o Razr D3.”
nao consigo selecionar o dispositivo, no meu caso um s3 que ja ta instalado os drivers, em que lugar no delphi escolho o dispositivo.
nao quero usar maquina virtual quero usar u disposivivo direto.
Olá Erasmo seja bem vindo!!!

Bem a selecção do aparelho é feita na seção Target do Project Manager. Veja abaixo:
Qual versão do Delphi você está utilizando? Você ativou no dispositivo a opção de Depuração USB? Sem ela não é possível.
Dê um feedback se conseguir.
Caro amigo Landerson,
Preciso muito desabafar sobre minhas pesquisas este final de semana. A ação TakePhotoFromCamera é muito fácil de ser utilizada porém não permite sabermos onde o arquivo da imagem capturada foi salva, e por sua vez, não podemos apagá-la. Li em vários foruns internacionais as mesmas dúvidas que tenho e as respostas que pude ver foi que seria necessário utilizar a API de camera do Android. Como faria pra usar esta API? Ela seria java, certo? Vi que para o XE7 existe a ferramenta Java2OP, já a usou?
Grande Tiago…ficou muito bom seu desabafo! rs
Mas vamos os pontos para tentar solução… o lance do Java2OP, esse vídeo do Fernando Rizzato tem a utilização do recurso em protuguês, só não me rocordo o ponto do vídeo, se você ainda não viu recomendo que veja o vídeo por inteiro, pois os novos recursos apresentados aí são realmente interessantes.
Uma vez sabendo como utilizar o Java2OP, seu caminho seria recorrer às bibliotecas java para a acesso a Câmera, mas sinceramente nunca utilizei nada parecido. O Java2OP aparentemente é simples, porém também nunca o utilizei.
Espero que consiga, e que coloque aqui seu feedbak…
Estou na torcida pelo seu sucesso.
Um cordial abraço e boa sorte aí!
Landerson bom dia, onde eu encontro material para testar o aplicativo direto do dispositivo sem usar os emuladores?
Olá Edilson, basta colocar o dispositivo físico em modo depuração, (Configurações->Opções->Ativar depuração USB) e conectá-lo ao computador. Com isso o Delphi irá reconhecê-lo daí você o seleciona em Target dentro de Target Platfform no Project Manager. Passo a passo assim pode acabar ficando difícil de entender mas é bem simples, ao final do processo você terá algo assim:

Espero que ajude.
Até a próxima!
Landerson boa noite,
deu certo debugar no aparelho muito obrigado.
outro coisa:
você tem um demo de leitura de código de barras que não trave pra que eu veja onde estou errando pois segui o aquele post de você escreveu e não estou conseguindo estabilizar o travamento, chega a ler 1,2 x de depois trava, eu esto u precisando muito desta rotina se puder me dar uma mão eu agradeço.
Ola, o meu nao funcionou… nao mostra meu aparelho no TARGET do Delphi, e ao Copilar da erro.
[PAClient Error] Error: E2824 Unable to execute ‘”C:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\emulator-x86.exe” 4 “C:\Users\Servidor\Desktop\Varios Programas de Teste\Delphi&Android\Android\Debug\prjCamShare\bin\prjCamShare-unsigned.apk” “C:\Users\Servidor\Desktop\Varios Programas de Teste\Delphi&Android\Android\Debug\prjCamShare\bin\prjCamShare.apk”‘ (Error 1)
[PAClient Error] Error: E2824 invalid command-line parameter: 4.
[PAClient Error] Error: E2824 Hint: use ‘@foo’ to launch a virtual device named ‘foo’.
[PAClient Error] Error: E2824 please use -help for more information
quais configuracoes esta faltando no meu.
obrigado.
Lucas tudo bem?! Seja bem vindo! Você precisa instalar os drivers do aparelho no computador, em seguida colocar o aparelho em modo DEPURAÇÃO USB.
Feito isso ele deve aparecer no Target.
Tente aí e poste um feedback por favor!
Abração!
Landerson, você sabe de algo referente a pegar uma imagem do Servidor, converter em Stream/Json, e depois enviar via DataSnap, e após, converter em Json/Stream/Jpeg para visualizar a mesma no Android? E o processo ao contrario tbm?
Ou se existe alguma outra maneira pra fazer isso..
Muito obrigado!!!
Olá Yago bom tê-lo de volta!
Há algum tempo vi algo na Devmedia, autor Welson Play, veja se atende!
Eu preciso dar uma estudada no assunto mas não fiz nada ainda acerca deste tema.
Espero que ajude.
Até a próxima!
Valeu Landerson, já tinha visto esse post no DevMedia e não tinha entendido muito bem, vou rever ele.. Obrigado por responder!! Valeu
Olá, preciso de uma ajuda sua, na verdade, bem simples, como eu configuro as opções, ou o que devo baixar para usar o template de dispositivos móveis? no meu caso, nao sei se é comum, mas n aparece o “Mobile projects” na aba “Delphi projects” quando eu clico em new items. Espero que possa me ajudar…
Fico grato desde já…
Olá Junior, seja bem vindo! Bem acredito que o ponto inicial seja saber qual a versão de Delphi está utilizando?
Sendo uma das que contemplam o desenvolvimento Mobile, fica a pergunta na instalação você marcou essas opções? Instalou e configurou as SDKs?
Bem.. são questionamentos que podem já te dar uma luz!
Poste aí um feedback e obrigado por sua participação!
Bom dia, estou com uma dúvida que não acho em lugar nenhum. Não consigo acessar a câmera do android para gravar vídeos, apenas para tirar fotos.
Pesquisando, achei o TVideoCaptureDevice que também não ajudou.
Como faço para acessar a câmera pelo delphi e gravar vídeos?
Olá Brunno bem vindo de volta!
Eu também não achei ou tentei nada nesse sentido.
Acredito que seja um grande desafio… para tudo que temos postado aí, me ocorreu antes a necessidade de fazer a implementação em algum ponto do meu cotidiano, este caso da câmera é diferente… mas bem, particularmente eu busco em como é feito no java_android nativo e tento converter para como seria em Delphi, essa foi a receita até aqui.
Acredito que seja esse o caminho para tentar resolver a questão aí… solução sabemos que têm afinal, o apk do twitter chama a câmera pra vídeos!
Boa sorte aí na jornada e tendo sucesso não deixe de nos dar um feedback.
Mais uma vez obrigado por sua participação!
Anderson bom dia, eu um pequeno problema e acredito que você pode me dar uma ajuda, é o seguinte: comprei um coletor de dados e ele passa um código de barras lido para um bloco de notas normalmente porém na minha aplicação uso um edit e não recebe este código lido.
Segundo nosso amigo Carlos Henrique Agnes a resposta provavelmente está no fato do Delphi não fazer wrappers dos componentes nativos Android, e sim, simular o funcionamento dos componentes, sendo que por fim, o Delphi não deve estar interceptando as mensagens enviadas pelo leitor.
Olá Edilson… desculpe-me pela demora! Fica difícil sem “ver” o problema, o ideal é testar. Você está compilando para qual plataforma? qual a versão do Delphi utilizada? Geralmente esse conjunto acaba funcionando por si só… dê uma conferida se está em modo release, geralmente faz diferença em casos como esse.
O delphi é XE7 e a plataforma é Android.
Oi Landerson, primeiramente parabéns pelo blog, programo em Delphi desde 2001 e agora estou começando a mexer com Android também.
Agora minha dúvida, estou usando o Delphi Xe7 e gostaria de ter uma espécie de live preview da câmera, basicamente como o aplicativo padrão de câmera do Android, mas não tenho interesse ainda em gravar as fotos, só preciso mesmo do preview e em um segundo passo 2 botões de filtro (preto e branco e invertido). Segundo o seu tutorial, o botão já faz direto o clique e gravação da foto, teria alguma outra maneira de já abrir o app com o preview da câmera ?
Obrigado
Glauco
Olá Glauco, primeiramente seja bem vindo e obrigado pelas palavras!
Em relação a sua questão, não consegui achar ainda nada nessa linha. Uma orientação para caso queira pesquisar é procurar no Java Android, como isso seria feito e tentar fazer essa “conversão” para Delphi.
Boa sorte aí e não esqueça de, caso consiga evoluir postar um feedback !
Até a próxima!
fala pessoal tudo bom !!!!
Do mesmo jeito que eu acesso a galeria, tem como eu acessar a função cortar da galeria ? desde já obrigado
Bom dia,
criei um app simples, mas sempre que tento rodar a aplicação da essa mensagem de erro “install_failed_container_error”, sabe me dizer como corrigir este problema?
Boa noite, Landerson.
Vc conhece algum programa que permita ativar o “Depuração de USB” do Galaxy y?
A tela do meu Galaxy Y está com a tela branca após reiniciá-lo. O ‘ApkInstaller_v 3.5.0.0.exe’ me mostra a tela de início do Androide, porém não permite continuar [toutch não funciona].
Grato pela atenção.
Niira
Olá Niira, seja bem vindo!
Desconheço o problema do aparelho, ele está com o modo desenvolvedor ativo? Lembrando que somente com a ativação do modo desenvolvedor que a depuração USB fica selecionável.
Programa citado por você também nunca usei. Como seria o que ele faz?
Olá Landerson.
O problema começou quando troquei a ROM do Galaxy y GT-S5360B pela a ROM do GT-S5830C através do ODIN [utilitário da Samsung para instalação de SOs]. Quando o aparelho reiniciou, a tela ficou branca [como uma lanterna ligada.]. O APK Installer é uma ferramenta usada para instalar qualquer arquivo APK no Android. Quando resetamos o Android, aparece a tela de “Bem-vindo ao … Toque no Androide para começar….” Como a tela ficou branca após o reinício do Androide, não é possível ver a tela de boas-vindas. Como tenho o APK Instaler, é possível ver a tela de boas-vindas, porém o ‘toutchscreen’ não funciona. Por isso que perguntei se vc Vc conhece algum programa que permita ativar o “Depuração de USB” do Galaxy y. Conseguindo ativar a Depuração USB, conseguirei voltar ao Gálaxy original.
Boa Tarde,
Uma duvida, o OBJETO IMAGE eu transfiro pro IMGFOTO correto e do IMGFOTO que salvo o arquivo, posso ate escolher o local, mas o IMAGE salva tambem na pasta \emulated\0\dcim\???? como faço pra não salvar esta outra imagem ????
Ola, muito bom o tutorial, inclusive para usar a camera, é a mesma funcao que achei em um livro do Wilian Duarte. Enfim, meu problema é que nem todas as fotos aparecem na imagem, as vezes depois de tirar a foto, volta para o menu principal, e as vezes fica certo. Uso delphi xe8 e android 6.0… esse bug é relacionado ao tamanho da imagem, alguma propriedade? Grato pela atencao
Hum… Anderson houve muita mudança nesse tratamento da imagem, não cheguei a fazer nenhuma vez depois do xe5 … Precisaria realmente fazer essa mágica acontecer para tentar ajudá-lo. Tentando em um aparelho com Android mais antigo funciona?