giesta 29 Denunciar post Postado Abril 21, 2012 Ola galera, eu sou novato em Android e em Java, e estou tendo uma dificuldade, espero que alguem possa me ajudar. Preciso fazer uma função que chame a camera e tire uma foto e salve numa pasta especifica com um nome especifico. Dando minhas cabeçadas, eu cheguei no seguinte código (q funciona perfeitamente quando colocado na classe principal AmplaCoordenadasActivity.java ): public void tirarFoto(String arquivo) { Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri uriSavedImage=Uri.fromFile(new File(arquivo)); camera.putExtra("output", uriSavedImage); startActivityForResult(camera, 1); } Mas quando eu crio uma classe e coloco o código dentro e chamo ele pela classe principal, da erro. A classe: package ampla.giesta.coordenadas; import java.io.File; import android.app.Activity; import android.content.Intent; import android.net.Uri; public class Photo extends Activity{ public void tirarFoto(String arquivo){ Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri uriSavedImage=Uri.fromFile(new File(arquivo)); camera.putExtra("output", uriSavedImage); startActivityForResult(camera, 1); } } Chamando na main Class: // Camera() é um "android:onClick="Camera" do main.xml public void Camera(){ Photo camera = new Photo(); camera.tirarFoto("/sdcard/x.jpg"); } Alguem tem uma luz? Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Abril 21, 2012 giesta, o problema pode estar acontecendo por você está criando uma classe que herda de Activity e provavelmente você está executando uma Activity dentro de outra. Pelo que vi em pesquisas que realizei no passado, quando estudava Android, não é possível executar mais de uma Activity ao mesmo tempo. Tenta da forma abaixo e poste o resultado. package ampla.giesta.coordenadas; import java.io.File; import android.app.Activity; import android.content.Intent; import android.net.Uri; public class Photo{ public Intent tirarFoto(String arquivo){ Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri uriSavedImage=Uri.fromFile(new File(arquivo)); camera.putExtra("output", uriSavedImage); return camera; } } public void Camera(){ Photo camera = new Photo(); startActivityForResult(camera.tirarFoto("/sdcard/x.jpg"), 1); } Ou então... outra possível saída seria: package ampla.giesta.coordenadas; import java.io.File; import android.app.Activity; import android.content.Intent; import android.net.Uri; public class Photo{ public void tirarFoto(String arquivo, Activity av){ Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri uriSavedImage=Uri.fromFile(new File(arquivo)); camera.putExtra("output", uriSavedImage); av.startActivityForResult(camera, 1); } } public void Camera(){ Photo camera = new Photo(); camera.tirarFoto("/sdcard/x.jpg", this); } Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Abril 21, 2012 hargon, Tentei a segunda abordagem e funcionou perfeitamente. Não sabia que não podiam haver duas Activities ao mesmo tempo. Muito obrigado! Podem fechar o topico, resolvido Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Abril 21, 2012 Que bom que resolveu giesta. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites