ALL,檢索攝像機圖像上的Android
我有以下代碼:
try
{
Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File storage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
cameraImageFiles = File.createTempFile("user_photo", ".png", storage);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraImageFiles));
final Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
Intent photoIntent = Intent.createChooser(galleryIntent, "Select or take a new picture");
photoIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { captureIntent });
startActivityForResult(photoIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
catch(IOException e)
{
Utils.displayErrorDialog(context, e.getMessage());
}
在網絡上的每一個例子,在這裏談談從攝像機獲取圖像時,只有1意圖。
在這裏,我有一個IntentChooser來選擇圖庫圖像或使用相機拍攝新照片。據我瞭解使用這段代碼,我不能簡單地獲取圖像,因爲在「onActivityResult()」我應該將圖片保存到文件 - 它不會自動保存。
現在我想要做的就是從相機拍攝圖像。我真的不在乎它是否會被保存 - 我只是想要一張照片。
我知道如何從圖庫中獲取圖像 - 我有這個代碼,它的工作原理。但從相機獲取圖像現在是一個難題。
謝謝。
[編輯] 這是我放在onActivityResult()的代碼
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
{
if(resultCode == RESULT_OK)
{
Uri uri = null;
if(data == null)
{
if(cameraImageFiles.exists())
{
uri = Uri.fromFile(cameraImageFiles);
InputStream input;
try
{
input = getContentResolver().openInputStream(uri);
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
bmp = BitmapFactory.decodeStream(input, null, opts);
input.close();
int height = opts.outHeight;
int width = opts.outWidth;
int inSampleSize = 1;
int reqHeight = camera.getHeight();
int reqWidth = camera.getWidth();
if(height > reqHeight || width > reqWidth)
{
int halfHeight = height/2;
int halfWidth = width/2;
while((halfHeight/inSampleSize) > reqHeight && (halfWidth/inSampleSize) > reqWidth)
inSampleSize *= 2;
}
opts.inSampleSize = inSampleSize;
opts.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeStream(input, null, opts);
camera.setImageBitmap(bmp);
}
catch(FileNotFoundException e)
{
Utils.displayErrorDialog(this, e.getMessage());
}
catch(IOException e)
{
Utils.displayErrorDialog(this, e.getMessage());
}
}
photoReady = true;
}
執行後,代碼給出空爲bmp,所以我想不保存圖像。
[/編輯]
它被保存。否則無法獲得照片。 – CommonsWare
您需要使用SurfaceView創建自己的相機。 – njzk2
爲什麼有意在畫廊或照相機之間進行選擇?這沒有任何意義,爲什麼你沒有提出一個對話框,並在對話結果 – Tascalator