2010-09-23 12 views
10

Ich habe ein Programm in Java geschrieben, das eine Bilddatei aufnimmt und das Bild manipuliert. Jetzt versuche ich auf die Kamera zuzugreifen, damit ich das Foto machen und es dem Bildverarbeitungsprogramm geben kann, aber ich weiß nicht, wie ich das machen soll. Ich habe die Informationen über die Kamera-Klasse gelesen und wie man um Erlaubnis bittet, aber ich weiß nicht, wie man das Foto wirklich macht. Wenn jemand irgendwelche Tipps hat, wo ich anfangen soll oder wenn er von einem guten Tutorial weiß, würde ich es sehr schätzen. Vielen Dank!Wie greife ich auf Android-Smartphones auf die Kamera zu?

Antwort

7

Google ist dein bester Freund, sind hier einige Tutorials:

Using the camera

How-To Program The Google Android Camera To Take Pictures

Take Picture from Camera Emulator

camera

Zuerst bearbeiten Sie Ihre AndroidManifest.xml, fügen Sie die Kamera Erlaubnis :

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

Kamera Dienst zu öffnen und zu schließen:

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

Sie Kameraeinstellungen festlegen können, zB:

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

Um ein Bild zu nehmen:

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 Vergessen Sie nicht, das Layout der Kamera zu Ihrem Haupt-Layout-XML hinzuzufügen.

0

die wichtigste Methode ist:

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

    } 
}; 

Diese Methode wird aufgerufen, wenn ein Bild aufgenommen wird. Hier ist ein gutes Tutorial zu diesem Thema: http://www.brighthub.com/mobile/google-android/articles/43414.aspx

hmm ... oder vielleicht brauchen Sie diese:

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

Hier ist ein weiteres Beispiel: http://snippets.dzone.com/posts/show/8683

6

gibt es viele Möglichkeiten, mit denen Sie können dies tun .... Einer der besseren Weg, die ich denke, ist die kurze und einfache ist auf Knopfdruck Sie können Aufruf Intellekt, die Ihre eingebaute Kamera-Ansicht öffnet ... hier ist der Beispielcode ...

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); 
    } 

} 
} 

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

Gehen Sie durch und wenn Sie irgendein Problem haben, fühlen Sie sich frei zu fragen ....

rakesh

2

Es gibt zwei Methoden Foto für Ihr Android-Anwendung nehmen

1) Mit Intent

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) Erstellen einer individuellen Kamera-Aktivität. Dafür benötigen Sie folgende Schritte

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

Sie auch folgende Links verweisen:

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

Verwandte Themen