Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.app.artesp;
- import java.io.File;
- import java.io.FileOutputStream;
- import android.app.Activity;
- import android.content.Intent;
- import android.hardware.Camera;
- import android.hardware.Camera.PictureCallback;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- public class CameraActivity extends Activity implements OnClickListener
- {
- //Definindo variaveis de controle
- public static final int CAMERA_OPEN_FAILED = 1;
- private static final int MAX_VIDEO_LENGTH = 10;
- private boolean wasClicked = false;
- private boolean isVideoMode = false;
- private boolean isRecording = false;
- public static final String EXTRA_IS_VIDEO = "video";
- // Definindo view
- private CameraPreview camPreview;
- private FrameLayout camFrameLayout;
- private ImageView camStatus;
- private TextView textTimer;
- private Thread timerUpdate;
- private ImageView voltar;
- private ImageView inverteCamera;
- byte[] img;
- String valido = "negado";
- @Override
- public void onCreate( Bundle savedBundle ) {
- super.onCreate( savedBundle );
- // Abre a camera
- Camera camera;
- try {
- camera = Camera.open( );
- }catch( Exception e ){
- e.printStackTrace( );
- setResult( CAMERA_OPEN_FAILED );
- finish( );
- return;}
- // remove titulo:
- //requestWindowFeature( Window.FEATURE_NO_TITLE );
- getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN );
- // exibe tela inicial:
- setContentView( R.layout.camera );
- //definindo tela de previa
- camFrameLayout = ( FrameLayout )findViewById( R.id.frameCamera );
- camPreview = new CameraPreview( this, camera );
- camFrameLayout.addView( camPreview );//adiciona a camera ao framelayout
- //defindo variaveis clicado e gravando
- wasClicked = false;
- isRecording = false;
- // Botão para tirar foto
- camStatus = ( ImageView )findViewById( R.id.btnMedia );
- camStatus.setOnClickListener( this );
- camStatus.setEnabled( true );
- // botao volta
- voltar = ( ImageView )findViewById( R.id.btnVoltar );
- voltar.setOnClickListener(this);
- voltar.setEnabled( true );
- // botao inverter
- inverteCamera = ( ImageView )findViewById( R.id.btninerteCamera );
- inverteCamera.setOnClickListener(this);
- inverteCamera.setEnabled( true );
- // ocultar timer para que so apareca caso seja gravacao
- textTimer = ( TextView )findViewById( R.id.textTimer );
- textTimer.setVisibility( View.INVISIBLE );
- // recebendo parametro que foi enviado da RegistroActivity->CameraUtil.java-> startCameraActivity()
- isVideoMode = getIntent( ).getBooleanExtra( EXTRA_IS_VIDEO, false );
- if( isVideoMode ) {
- camStatus.setImageResource( R.drawable.btn_video );
- }
- else {
- camStatus.setImageResource( R.drawable.btn_foto );
- }
- }
- public void onClick( View view )
- {
- if( view == camStatus )
- {
- if( isVideoMode )
- {
- iniciaGravacao( );
- } else iniciarCapturaFoto( );
- }
- if( view == voltar)
- {
- finish();
- }
- if( view == inverteCamera)
- {
- Log.i("inverte Camera","inverte Camera");
- }
- }
- private void iniciaGravacao()
- {
- if( wasClicked == true )
- {
- camPreview.stopRecording( );
- camStatus.setImageResource( R.drawable.btn_video );
- isRecording = false;
- //----------------------------------------------------
- try {
- timerUpdate.notify( ); // força sair do sleep
- timerUpdate.join( ); // espera sair do while
- } catch( Exception e ){ e.printStackTrace( ); }
- //----------------------------------------------------
- timerUpdate = null;
- textTimer.setVisibility( View.INVISIBLE );
- setResult( RESULT_OK );
- finish( );
- } else
- {
- wasClicked = true;
- isRecording = camPreview.startRecording( );// retorna true se conseguiu iniciar gravacao
- // não conseguiu iniciar a gravacao
- if( isRecording == false ) {
- wasClicked = false;
- camStatus.setImageResource( R.drawable.btn_video );
- Utils.showInformation( this, R.string.Erro, R.string.erro_open_camera );
- }
- // Conseguiu iniciar a gravacao
- else {
- camStatus.setImageResource( R.drawable.btn_video2 );
- textTimer.setVisibility( View.VISIBLE );
- // Thread para contagem do tempo visto pelo usuario
- timerUpdate = new Thread( new Runnable( )
- {
- public void run( ) {
- int seconds = 0;
- long timeStart = System.currentTimeMillis( );
- do {
- //----------------------------------------------------
- try {
- Thread.sleep( 500 );
- }
- catch( InterruptedException e ) {}
- //----------------------------------------------------
- long deltaTime = System.currentTimeMillis( ) - timeStart;
- if( deltaTime >= 1000 ) {
- timeStart += deltaTime;
- deltaTime -= 1000;
- seconds++;
- final int sec = seconds;
- runOnUiThread( new Runnable( ) {
- public void run() {
- String str = "00:";
- if( sec < 10 ) {
- str = str + "0" + sec;
- }
- else {
- str = str + sec;
- }
- str = str + "/00:" + MAX_VIDEO_LENGTH;
- textTimer.setText( str );
- }
- });
- if( seconds == MAX_VIDEO_LENGTH ) {
- runOnUiThread( new Runnable( ) {
- public void run() {
- iniciaGravacao( );
- }
- });
- }
- }
- }
- while( isRecording == true );
- }
- });
- timerUpdate.start( );
- }
- }
- }
- private void iniciarCapturaFoto()
- {
- if( wasClicked == true ) {
- return;
- }
- wasClicked = true;
- camStatus.setImageResource( R.drawable.btn_foto2 );
- textTimer.setVisibility( View.INVISIBLE );
- Log.i("Legal 1","Legal 0");
- camPreview.takeScreenShot( new PictureCallback( ) {
- public void onPictureTaken( byte[] data, Camera camera ) {
- Log.i("Legal 1","Legal 1");
- img = data;
- Intent i = new Intent(CameraActivity.this,PreviaFoto.class);
- //chamando tela de confirmacao
- Bundle extras = new Bundle();
- extras.putByteArray("fotoByte", img);
- i.putExtras(extras);
- startActivityForResult(i, 127);
- runOnUiThread( new Runnable( ) {
- public void run( ) {
- File file = CameraUtils.getOutputMediaFile( CameraUtils.MEDIA_TYPE_IMAGE );
- try {
- FileOutputStream os = new FileOutputStream( file );
- os.write( img );
- os.close( );
- }
- catch( Exception e ) {
- e.printStackTrace( );
- }
- }
- });
- setResult( RESULT_OK );
- finish();
- }
- });
- }
- public void onBackPressed() {
- if( wasClicked == true ) {
- if( isVideoMode == false ) {
- return;
- }
- iniciaGravacao();
- Utils.deleteMediaFileAndThumb( CameraUtils.getOutputMediaFileUri().getPath( ) );
- }
- setResult( RESULT_CANCELED );
- finish( );
- }
- @Override
- public void onPause() {
- super.onPause( );
- if( camPreview != null ) {
- camPreview.onPause( );
- }
- }
- @Override
- public void onResume() {
- super.onResume( );
- if( camPreview != null ) {
- camPreview.onResume( );
- }
- }
- @Override
- public void onDestroy( ) {
- super.onDestroy( );
- camFrameLayout.removeAllViews( );
- if( camPreview != null ) {
- camPreview.release( );
- camPreview = null;
- }
- }
- public void onActivityResult( int requestCode, int resultCode, Intent data ) {
- if( requestCode == 127 ) {
- if( resultCode == RESULT_OK ) {
- valido = data.getData().toString();
- Toast tos = new Toast(this);
- tos.makeText(this, valido, Toast.LENGTH_SHORT).show();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement