我实际上是Android的新手,但我设法用我的应用程序拍照,这就是我拍照并保存它的方法......问题是我需要调整它之前将其保存在电话...但我无法弄清楚如何做到这一点......我已经搜索了我的问题,但我发现的唯一的事情就是使用位图图片而且这不是我的情况我猜...
以下是我用来拍照的代码:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"GUASTO" + System.currentTimeMillis() + ".jpg"); /
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoPath);
startActivityForResult(intent, SCATTA_FOTO);
谢谢!
答案 0 :(得分:0)
public static int PIC_CROP=81;
Intent cropIntent = new Intent("com.android.camera.action.CROP");
//indicate image type and Uri
cropIntent.setDataAndType(ImageUri, "image/*");
//set crop properties
//indicate aspect of desired crop
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
//indicate output X and Y
cropIntent.putExtra("outputX", 640);
cropIntent.putExtra("outputY", 640);
//retrieve data on return
cropIntent.putExtra("return-data", true);
//start the activity - we handle returning in onActivityResult
startActivityForResult(cropIntent, PIC_CROP);
和onActivityResult()
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode==PIC_CROP)
{
if(resultCode==RESULT_OK)
{
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap bmp = extras.getParcelable("data");
saveCropPhoto(bmp);
}
Toast.makeText(getApplicationContext(), "picture cropped",Toast.LENGTH_SHORT).show();
}
}
}
saveCropPhoto()方法
public void saveCropPhoto(Bitmap bmp)
{
Toast.makeText(getApplicationContext(), "in save",Toast.LENGTH_SHORT).show();
String dir = Environment.getExternalStorageDirectory().toString() + "/folderName/";
File newdir = new File(dir);
newdir.mkdirs();
FileOutputStream out = null;
Calendar c = Calendar.getInstance();
String date = fromInt(c.get(Calendar.MONTH))
+ fromInt(c.get(Calendar.DAY_OF_MONTH))
+ fromInt(c.get(Calendar.YEAR))
+ fromInt(c.get(Calendar.HOUR_OF_DAY))
+ fromInt(c.get(Calendar.MINUTE))
+ fromInt(c.get(Calendar.SECOND));
File imageFileName = new File(newdir, "crop_"+date.toString() + ".jpg");
try
{
out = new FileOutputStream(imageFileName);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
out = null;
if(tempFile.exists())
tempFile.delete();
} catch (Exception e)
{
e.printStackTrace();
}
}