Advertisement
ddkclaudio

Untitled

Jan 2nd, 2013
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.20 KB | None | 0 0
  1.  
  2.  
  3. package com.app.artesp;
  4.  
  5. import java.io.File;
  6. import java.io.FileOutputStream;
  7. import android.app.Activity;
  8. import android.content.Intent;
  9. import android.hardware.Camera;
  10. import android.hardware.Camera.PictureCallback;
  11. import android.os.Bundle;
  12. import android.util.Log;
  13. import android.view.View;
  14. import android.view.View.OnClickListener;
  15. import android.view.Window;
  16. import android.view.WindowManager;
  17. import android.widget.FrameLayout;
  18. import android.widget.ImageView;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21.  
  22.  
  23. public class CameraActivity extends Activity implements OnClickListener
  24. {
  25.  
  26.     //Definindo variaveis de controle
  27.     public  static final int    CAMERA_OPEN_FAILED = 1;
  28.     private static final int    MAX_VIDEO_LENGTH   = 10;
  29.     private        boolean      wasClicked         = false;
  30.     private        boolean      isVideoMode        = false;
  31.     private        boolean      isRecording        = false;
  32.     public  static final String EXTRA_IS_VIDEO     = "video";
  33.    
  34.     // Definindo view
  35.     private CameraPreview camPreview;
  36.     private FrameLayout   camFrameLayout;
  37.     private ImageView     camStatus;
  38.     private TextView      textTimer;
  39.     private Thread        timerUpdate;
  40.    
  41.     private ImageView voltar;
  42.     private ImageView inverteCamera;
  43.    
  44.     byte[] img;
  45.     String valido = "negado";
  46.    
  47.     @Override
  48.     public void onCreate( Bundle savedBundle ) {
  49.         super.onCreate( savedBundle );
  50.  
  51.         // Abre a camera
  52.         Camera camera;
  53.         try {
  54.             camera = Camera.open( );
  55.         }catch( Exception e ){
  56.             e.printStackTrace( );
  57.             setResult( CAMERA_OPEN_FAILED );
  58.             finish( );
  59.             return;}
  60.  
  61.         // remove titulo:
  62.         //requestWindowFeature( Window.FEATURE_NO_TITLE );
  63.         getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,
  64.                 WindowManager.LayoutParams.FLAG_FULLSCREEN );
  65.  
  66.         // exibe tela inicial:
  67.         setContentView( R.layout.camera );
  68.        
  69.         //definindo tela de previa
  70.         camFrameLayout = ( FrameLayout )findViewById( R.id.frameCamera );
  71.         camPreview = new CameraPreview( this, camera );
  72.         camFrameLayout.addView( camPreview );//adiciona a camera ao framelayout
  73.        
  74.         //defindo variaveis  clicado e gravando
  75.         wasClicked  = false;
  76.         isRecording = false;
  77.        
  78.         // Botão para tirar foto
  79.         camStatus = ( ImageView )findViewById( R.id.btnMedia );
  80.         camStatus.setOnClickListener( this );
  81.         camStatus.setEnabled( true );
  82.        
  83.        
  84.         // botao volta
  85.         voltar = ( ImageView )findViewById( R.id.btnVoltar );
  86.         voltar.setOnClickListener(this);
  87.         voltar.setEnabled( true );
  88.        
  89.         // botao inverter
  90.         inverteCamera = ( ImageView )findViewById( R.id.btninerteCamera );
  91.         inverteCamera.setOnClickListener(this);
  92.         inverteCamera.setEnabled( true );
  93.        
  94.  
  95.         // ocultar timer para que so apareca caso seja gravacao
  96.         textTimer = ( TextView )findViewById( R.id.textTimer );
  97.         textTimer.setVisibility( View.INVISIBLE );
  98.  
  99.         // recebendo parametro que foi enviado da RegistroActivity->CameraUtil.java-> startCameraActivity()
  100.         isVideoMode = getIntent( ).getBooleanExtra( EXTRA_IS_VIDEO, false );
  101.        
  102.         if( isVideoMode ) {
  103.             camStatus.setImageResource( R.drawable.btn_video );
  104.         }
  105.         else {
  106.             camStatus.setImageResource( R.drawable.btn_foto );
  107.         }
  108.     }
  109.  
  110.  
  111.     public void onClick( View view )
  112.     {
  113.  
  114.         if( view == camStatus )
  115.         {
  116.             if( isVideoMode )
  117.             {
  118.                 iniciaGravacao( );
  119.             } else iniciarCapturaFoto( );
  120.         }
  121.         if( view == voltar)
  122.         {
  123.             finish();
  124.         }
  125.         if( view == inverteCamera)
  126.         {
  127.             Log.i("inverte Camera","inverte Camera");
  128.            
  129.         }
  130.     }
  131.  
  132.    
  133.     private void iniciaGravacao()
  134.     {
  135.         if( wasClicked == true )
  136.         {
  137.             camPreview.stopRecording( );
  138.             camStatus.setImageResource( R.drawable.btn_video );        
  139.             isRecording = false;
  140.            
  141.             //----------------------------------------------------
  142.             try {
  143.                 timerUpdate.notify( ); // força sair do sleep
  144.                 timerUpdate.join( ); // espera sair do while
  145.             } catch( Exception e ){ e.printStackTrace( ); }
  146.             //----------------------------------------------------
  147.  
  148.             timerUpdate = null;        
  149.             textTimer.setVisibility( View.INVISIBLE );
  150.            
  151.             setResult( RESULT_OK );
  152.             finish( );
  153.         } else
  154.          {
  155.             wasClicked  = true;
  156.             isRecording = camPreview.startRecording( );// retorna true se conseguiu iniciar gravacao
  157.  
  158.             // não conseguiu iniciar a gravacao
  159.             if( isRecording == false ) {
  160.                 wasClicked = false;
  161.                 camStatus.setImageResource( R.drawable.btn_video );
  162.                 Utils.showInformation( this, R.string.Erro, R.string.erro_open_camera );
  163.             }
  164.            
  165.             // Conseguiu iniciar a gravacao
  166.             else {
  167.                
  168.                 camStatus.setImageResource( R.drawable.btn_video2 );
  169.                 textTimer.setVisibility( View.VISIBLE );
  170.  
  171.                 // Thread para contagem do tempo visto pelo usuario
  172.                 timerUpdate = new Thread( new Runnable( )
  173.                 {
  174.                     public void run( ) {
  175.                        
  176.                         int  seconds = 0;
  177.                         long timeStart = System.currentTimeMillis( );
  178.                        
  179.                         do {
  180.                             //----------------------------------------------------
  181.                             try {
  182.                                 Thread.sleep( 500 );
  183.                             }
  184.                             catch( InterruptedException e ) {}
  185.                             //----------------------------------------------------
  186.  
  187.                             long deltaTime = System.currentTimeMillis( ) - timeStart;
  188.  
  189.                             if( deltaTime >= 1000 ) {
  190.                                 timeStart += deltaTime;
  191.                                 deltaTime -= 1000;
  192.                                 seconds++;
  193.  
  194.                                 final int sec = seconds;
  195.                                 runOnUiThread( new Runnable( ) {
  196.                                     public void run() {
  197.                                         String str = "00:";
  198.                                         if( sec < 10 ) {
  199.                                             str = str + "0" + sec;
  200.                                         }
  201.                                         else {
  202.                                             str = str + sec;
  203.                                         }
  204.                                         str = str + "/00:" + MAX_VIDEO_LENGTH;
  205.                                         textTimer.setText( str );
  206.                                     }
  207.                                 });
  208.                                
  209.                                 if( seconds == MAX_VIDEO_LENGTH ) {
  210.                                     runOnUiThread( new Runnable( ) {
  211.                                         public void run() {
  212.                                             iniciaGravacao( );
  213.                                         }
  214.                                     });
  215.                                 }
  216.                             }
  217.                         }
  218.                         while( isRecording == true );
  219.                     }
  220.                 });
  221.                 timerUpdate.start( );
  222.             }
  223.         }
  224.     }
  225.  
  226.    
  227.     private void iniciarCapturaFoto()
  228.     {
  229.  
  230.         if( wasClicked == true ) {
  231.             return;
  232.         }
  233.  
  234.         wasClicked = true;
  235.         camStatus.setImageResource( R.drawable.btn_foto2 );
  236.         textTimer.setVisibility( View.INVISIBLE );
  237.         Log.i("Legal 1","Legal 0");
  238.        
  239.        
  240.         camPreview.takeScreenShot( new PictureCallback( ) {
  241.  
  242.             public void onPictureTaken( byte[] data, Camera camera ) {
  243.                 Log.i("Legal 1","Legal 1");
  244.                  img = data;
  245.  
  246.                  Intent i = new Intent(CameraActivity.this,PreviaFoto.class);
  247.                     //chamando tela de confirmacao
  248.                     Bundle extras = new Bundle();
  249.                     extras.putByteArray("fotoByte", img);
  250.                     i.putExtras(extras);
  251.                     startActivityForResult(i, 127);
  252.                    
  253.                    
  254.  
  255.                        
  256.                        
  257.                         runOnUiThread( new Runnable( ) {
  258.                             public void run( ) {
  259.                                 File file = CameraUtils.getOutputMediaFile( CameraUtils.MEDIA_TYPE_IMAGE );
  260.                                 try {
  261.                                     FileOutputStream os = new FileOutputStream( file );
  262.                                     os.write( img );
  263.                                     os.close( );
  264.                                 }
  265.                                 catch( Exception e ) {
  266.                                     e.printStackTrace( );
  267.                                 }
  268.                             }
  269.                         });
  270.  
  271.                         setResult( RESULT_OK );
  272.                         finish();
  273.                        
  274.                        
  275.                    
  276.                    
  277.                
  278.                
  279.             }
  280.         });
  281.     }
  282.    
  283.  
  284.     public void onBackPressed() {
  285.        
  286.         if( wasClicked == true ) {
  287.             if( isVideoMode == false ) {
  288.                 return;
  289.             }
  290.             iniciaGravacao();
  291.             Utils.deleteMediaFileAndThumb( CameraUtils.getOutputMediaFileUri().getPath( ) );
  292.         }
  293.  
  294.         setResult( RESULT_CANCELED );
  295.         finish( );
  296.     }
  297.    
  298.    
  299.     @Override
  300.     public void onPause() {
  301.         super.onPause( );
  302.         if( camPreview != null ) {
  303.             camPreview.onPause( );
  304.         }
  305.     }
  306.  
  307.    
  308.     @Override
  309.     public void onResume() {
  310.         super.onResume( );
  311.         if( camPreview != null ) {
  312.             camPreview.onResume( );
  313.         }
  314.     }
  315.  
  316.    
  317.     @Override
  318.     public void onDestroy( ) {
  319.         super.onDestroy( );
  320.  
  321.         camFrameLayout.removeAllViews( );
  322.        
  323.         if( camPreview != null ) {
  324.             camPreview.release( );
  325.             camPreview = null;
  326.         }
  327.     }
  328.  
  329.    
  330.    
  331.     public void onActivityResult( int requestCode, int resultCode, Intent data ) {
  332.  
  333.         if( requestCode == 127 ) {
  334.             if( resultCode == RESULT_OK ) {
  335.                valido = data.getData().toString();
  336.                Toast tos = new Toast(this);
  337.                
  338.                tos.makeText(this, valido, Toast.LENGTH_SHORT).show();
  339.              
  340.             }
  341.         }
  342.     }
  343.            
  344.    
  345. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement