Ho scritto un programma in Java che acquisisce un file immagine e ne manipola l'immagine. Ora sto provando ad accedere alla fotocamera in modo che io possa scattare la foto e darla al programma di elaborazione delle immagini, tuttavia sono perso su come farlo. Ho letto le informazioni sulla classe della videocamera e su come chiedere le autorizzazioni, ma non so come effettivamente scattare la foto. Se qualcuno ha qualche consiglio su dove dovrei iniziare o se sanno di un buon tutorial lo apprezzerei molto. Grazie!Come accedere alla videocamera sui telefoni Android?
risposta
Google è il tuo migliore amico, qui ci sono alcuni tutorial:
How-To Program The Google Android Camera To Take Pictures
Take Picture from Camera Emulator
prima modifica il tuo AndroidManifest.xml, aggiungere l'autorizzazione fotocamera :
<uses-permission android:name=”android.permission.CAMERA”/>
servizio fotocamera deve essere aperto e chiuso:
Camera camera = Camera.open();
//Do things with the camera
camera.release();
È possibile impostare le impostazioni della fotocamera, ad esempio:
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
Per scattare 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 non dimenticare di aggiungere il layout della fotocamera al tuo layout principale xml.
il metodo più importante è:
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
}
};
Questo metodo viene chiamato quando si scatta una foto. Ecco un buon tutorial su questo argomento: http://www.brighthub.com/mobile/google-android/articles/43414.aspx
hmm ... o forse avete bisogno di questo uno:
Camera mCamera;
...
public void onClick(View arg0) {
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
Ecco un altro esempio: http://snippets.dzone.com/posts/show/8683
ci sono molti modi con cui puoi farlo .... Uno dei modi migliori che penso sia il breve e semplice è quello di fare clic sul pulsante Fai clic su u puoi chiamare l'intento che si apre nella vista della telecamera integrata ... ecco il codice di esempio ...
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);
}
}
}
.............................................. ................
Attraversalo e, se hai qualche problema, non esitare a chiedere ....
rakesh
Ci sono due metodi per prendere foto per la propria applicazione Android
1) Utilizzo di intenti
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) Creazione di un'attività della fotocamera personalizzato. Per questo è necessario procedere come segue
* Detect and Access Camera
* Create a Preview Class
* Build a Preview Layout
* Capture and Save Files
* Release the Camera
Si può anche fare riferimento ai seguenti link:
http://developer.android.com/guide/topics/media/camera.html http://developer.android.com/reference/android/hardware/Camera.html