如何处理意图拍摄的照片?

时间:2013-07-24 17:06:30

标签: android android-intent camera photo

我是关于android事情的完全新闻,不幸的是,没有多少时间以正确的方式学习它,我有一个工作要发布。 问题是:我需要拍摄照片并使用我制作的算法处理她。 我用最容易找到的方式做到了,我知道对于那些真正得到安卓的人来说它真的很悲惨(对不起)

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    takePic();

protected void takePic(){
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(takePictureIntent, 100);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     Bundle extras = data.getExtras();
     mImageBitmap = (Bitmap) extras.get("data");
             Algorithm(mImageBitmap)

但它没有处理,它需要一张照片,要求保存或取消并离开应用程序,我已经通过不同的方式(创建一个新的活动),但似乎没有任何工作

1 个答案:

答案 0 :(得分:0)

继承人我是怎么做到的

要去相机:

某处,声明一个fileUri变量并保持它

Uri fileUri;
final int TAKE_PICTURE=100;//this can be any int, really
public void goToCamera(){
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    File photo;
    try
    {
        // place where to store camera taken picture
        photo = this.createTemporaryFile("picture", ".jpg");
        Log.v(TAG, "Here(after createTempFile)");
        photo.delete();
    }
    catch(Exception e)
    {
       Log.v(TAG, "Can't create file to take picture!" + e.getMessage());
       Toast.makeText(context, "Please check SD card!", Toast.LENGTH_SHORT).show();
       return; 
    }
    fileUri = Uri.fromFile(photo);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    //Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);   
    startActivityForResult(intent, TAKE_PICTURE);
}

然后检索图像

protected void onActivityResult(int requestCode, int resultCode, Intent data){

    if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK){
       this.getContentResolver().notifyChange(uri, null);
       ContentResolver cr = this.getContentResolver();
       Bitmap bitmap;
       try
       {
           BitmapFactory.Options ops = new BitmapFactory.Options();
           ops.inSampleSize = 4;
           bitmap = BitmapFactory.decodeFile(uri.getPath().toString(), ops);
       }
       catch (Exception e)
       {
           Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show();
           Log.d(TAG, "Failed to load", e);
       }
    }
}

上面提到的创建临时文件:

private File createTemporaryFile(String part, String ext) throws Exception
{
    File tempDir= Environment.getExternalStorageDirectory();
    tempDir=new File(tempDir.getAbsolutePath()+"/.temp/");
    Log.i(TAG, tempDir.toString());
    if(!tempDir.exists())
    {
        Log.i(TAG, "Dir doesnt exist");
        tempDir.mkdirs();
    }
    return File.createTempFile(part, ext, tempDir);
}

我意识到这可能不像你希望的那么简单,但这种方法似乎尽可能灵活和兼容。如果我遗漏了其他任何内容,请告诉我