2010-09-23 10 views
10

He escrito un programa en Java que toma un archivo de imagen y manipula la imagen. Ahora estoy tratando de acceder a la cámara para que pueda tomar la foto y entregarla al programa de procesamiento de imágenes. Sin embargo, estoy perdido en cuanto a cómo hacerlo. He leído la información sobre la clase de la cámara y cómo solicitar los permisos, pero no sé cómo tomar la foto. Si alguien tiene algún consejo sobre dónde debería comenzar o si saben de un buen tutorial, realmente lo agradecería. ¡Gracias!¿Cómo accedo a la cámara en teléfonos con Android?

Respuesta

7

Google es su mejor amigo, aquí hay algunos tutoriales:

Using the camera

How-To Program The Google Android Camera To Take Pictures

Take Picture from Camera Emulator

camera

Primera edición AndroidManifest.xml, agregar el permiso de la cámara :

<uses-permission android:name=”android.permission.CAMERA”/> 

servicio de la cámara tiene que ser abierto y cerrado:

Camera camera = Camera.open(); 
//Do things with the camera 
camera.release(); 

Puede establecer ajustes de la cámara, por ejemplo:

Camera.Parameters parameters = camera.getParameters(); 
parameters.setPictureFormat(PixelFormat.JPEG); 
camera.setParameters(parameters); 

Para tomar una foto:

private void takePicture() { 
    camera.takePicture(shutterCallback, rawCallback, jpegCallback); 
} 

ShutterCallback shutterCallback = new ShutterCallback() { 
    public void onShutter() { 
    // TODO Do something when the shutter closes. 
    } 
}; 

PictureCallback rawCallback = new PictureCallback() { 
    public void onPictureTaken(byte[] _data, Camera _camera) { 
    // TODO Do something with the image RAW data. 
    } 
}; 

PictureCallback jpegCallback = new PictureCallback() { 
    public void onPictureTaken(byte[] _data, Camera _camera) { 
    // TODO Do something with the image JPEG data. 
    } 
}; 

Do No olvide agregar el diseño de la cámara a su diseño principal xml.

0

el método más importante es:

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { 
    public void onPictureTaken(byte[] imageData, Camera c) { 

    } 
}; 

Este método se llama cuando se toma una fotografía. Aquí es un buen tutorial sobre este tema: http://www.brighthub.com/mobile/google-android/articles/43414.aspx

hmm ... o tal vez lo que necesita éste:

Camera mCamera; 
... 
public void onClick(View arg0) { 
    mCamera.takePicture(null, mPictureCallback, mPictureCallback); 
} 

Aquí es un ejemplo más: http://snippets.dzone.com/posts/show/8683

6

hay muchas maneras por las cuales Puedes hacer esto ... Una de las mejores maneras en que creo que es corto y simple es presionar el botón Hacer clic en Puedes llamar a la intención que abre la vista de tu cámara incorporada ... aquí está el código de muestra ...

public class CameraDemo extends Activity { 

Button ButtonClick; 
int CAMERA_PIC_REQUEST = 2; 
int TAKE_PICTURE=0; 
Camera camera; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ButtonClick =(Button) findViewById(R.id.Camera); 
    ButtonClick.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View view) 
     { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
     } 
    });   
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == CAMERA_PIC_REQUEST) 
    { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ImageView image =(ImageView) findViewById(R.id.PhotoCaptured); 
     image.setImageBitmap(thumbnail); 
    } 
    else 
    { 
     Toast.makeText(demo.this, "Picture NOt taken", Toast.LENGTH_LONG); 
    } 

} 
} 

.............................................. ................

Examínelo y, si tiene algún problema, siéntase libre de preguntar ....

Rakesh

2

Hay dos métodos para tomar fotos para su aplicación Android

1) El uso de Intención

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image 
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 

// start the image capture Intent 
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 

2) Creación de una actividad de la cámara personalizada. Para eso se necesita siguientes pasos

* Detect and Access Camera 
* Create a Preview Class 
* Build a Preview Layout 
* Capture and Save Files 
* Release the Camera 

También puede consultar los siguientes enlaces:

http://developer.android.com/guide/topics/media/camera.html http://developer.android.com/reference/android/hardware/Camera.html

Cuestiones relacionadas