Camera Automatica

5 respostas
E

Ola,

Tem como colocar no seu codigo um text para a pessoa digitar um tempo em segundos, depois de definir esse tempo eu ativo a camera e ela fica tirando fotos com o tempo definido?

ex: iniciei o programa com 5 segundos, inicio a camera e ja tira uma foto, aguarda 5 segundos tira outra e assim vai ate eu apertar o botão de voltar para ver as imagens.

o que eu tenho: 

package com.example.timecam; 

import java.io.File; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

Button tiraFoto = (Button) findViewById(R.id.btCapturar); 
//EditText tempo = (EditText) findViewById(R.id.tempo); 

//Double tempoSeg = Double.parseDouble(tempo.getText().toString()); 

tiraFoto.setOnClickListener(new OnClickListener() { 

@Override 
public void onClick(View arg0) { 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

startActivity(intent); 

String arquivo = Environment.getExternalStorageState() + "/" 
+ System.currentTimeMillis() + ".jpg"; 

File file = new File(arquivo); 

Uri outputFileUri = Uri.fromFile(file); 

intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 

} 
}); 
} 


}

Obrigado!

5 Respostas

Xmio

Estude um pouco o conceito de treds…
Ainda existe a possibilidade de utilizar um agendador de tarefas como o Quartz…

Avalie o que melhor lhe atendera…

E

Alguem tem mais alguma ideia?

Lembrando que começei agora a desenvolver

fabriciov

Se não me engano, mandar o comando de tirar foto tem que ser a partir da Thread principal, então para ter esse delay de 5s que você quer, indico criar um handler:

private long mCaptureInterval = 5000; //ms
private Camera mCamera;
Handler mHandler;
private mRunnable = new Runnable(){

 public void run(){
     
   //chame metodo para tirar foto 
      
   if(mHandler!=null){
       mHandler.postDelayed(mRunnable, mCaptureInterval) // acho que era essa a ordem.. (runnable, interval);
   } 
 }
};

private void startHandler(){
        mHandler = new Handler();
        mHandler.postDelayed(mRunnable, mCaptureInterval) // acho que era essa a ordem.. (runnable, interval);
}

private void stopHandler(){
      mHandler = null;
}

o Código para iniciar a camera, tirar foto, etc tem em vários tutoriais.. google it :)

E

Tentei de varia formas colocar esse codigo no meu, mais apresenta erros

fabriciov

Olha, nunca utilizei a captura de imagem por intent… mas creio que para o que você quer não funciona mesmo. Pelo que li, ela inicia uma aplicação de câmera, espera o usuário tira uma foto e retorna para sua aplicação (igual do whatsapp). Em suma, você só espera um resultado de outra aplicação, não podendo controla-la.

Para o que você quer, provavelmente terá implementar uma câmera para sua aplicação.

Criado 5 de julho de 2013
Ultima resposta 5 de jul. de 2013
Respostas 5
Participantes 3