[英]How do I access the camera on Android phones?
我用Java編寫了一個程序,它接收一個圖像文件並操縱圖像。 現在我正在嘗試訪問相機,以便我可以拍攝照片並將其提供給圖像處理程序,但是我已經迷失了如何做到這一點。 我已經閱讀了有關相機類的信息以及如何申請權限,但我不知道如何拍照。 如果有人對我應該從哪里開始有任何提示,或者如果他們知道一個好的教程,我會非常感激。 謝謝!
谷歌是你最好的朋友,這里有一些教程:
首先編輯AndroidManifest.xml,添加攝像頭權限:
<uses-permission android:name=”android.permission.CAMERA”/>
必須打開和關閉相機服務:
Camera camera = Camera.open();
//Do things with the camera
camera.release();
您可以設置相機設置,例如:
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
拍照:
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.
}
};
不要忘記將相機布局添加到主布局xml中。
有很多方法你可以做到這一點....我認為最簡單的方法之一就是按鈕點擊你可以調用意圖打開你內置的攝像頭視圖...這里是示例代碼...
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);
}
}
}
.................................................. ............
通過它,如果你有任何問題,請隨時問....
拉克什
有兩種方法可以為你的Android應用程序拍照
1)使用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)創建自定義的相機活動。 為此,您需要執行以下步驟
* Detect and Access Camera
* Create a Preview Class
* Build a Preview Layout
* Capture and Save Files
* Release the Camera
您還可以參考以下鏈接:
http://developer.android.com/guide/topics/media/camera.html http://developer.android.com/reference/android/hardware/Camera.html
最重要的方法是:
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
}
};
拍攝照片時會調用此方法。 這是一個關於這個主題的好教程: http : //www.brighthub.com/mobile/google-android/articles/43414.aspx
嗯...或者你可能需要這個:
Camera mCamera;
...
public void onClick(View arg0) {
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
這是另一個例子: http : //snippets.dzone.com/posts/show/8683
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.