Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

giesta

[Resolvido] [Android] função nao quer funcionar fora da classe pr

Recommended Posts

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

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

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

Que bom que resolveu giesta.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.