如何从相机数据保存到使用MediaStore在Android上盘? [英] How do I save data from Camera to disk using MediaStore on Android?

查看:131
本文介绍了如何从相机数据保存到使用MediaStore在Android上盘?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有关我的申请,我会用我自己的相机类的拍摄图像和我自己的数据库,但很快我无法真正跟上变化了,我决定使用内置的摄像头应用程序在Android中做工作,但我似乎无法得到它保存文件。我在想什么吗?该应用程序似乎保存文件,但它只是0字节。我抬起头的摄像头应用程序的源$ C ​​$ c和它寻找输出,在附加功能来保存文件。任何帮助将大大AP preciated。

 公共类CameraTest延伸活动{
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        按钮cameraButton =(按钮)findViewById(R.id.cameraButton);
        cameraButton.setOnClickListener(新OnClickListener(){
            公共无效的onClick(视图v){
            ContentValues​​值=新ContentValues​​();
            values​​.put(Images.Media.TITLE,标题);
            values​​.put(Images.Media.BUCKET_ID,测试);
            values​​.put(Images.Media.DESCRIPTION,测试图像拍摄);
            。URI URI = getContentResolver()插入(Media.EXTERNAL_CONTENT_URI,价值观);
            意向意图=新的意图(android.media.action.IMAGE_CAPTURE);
            intent.putExtra(输出,uri.getPath());
            startActivityForResult(意向,0);
            }
        });

    }

    @覆盖
    保护无效onActivityResult(INT申请code,INT结果code,意图数据){
    如果(要求code == 0安培;&安培;结果code == Activity.RESULT_OK){
    ((ImageView的)findViewById(R.id.pictureView))setImageURI(data.getData());
    }
    }


}
 

解决方案

这曾与以下code,授予我被一个小哑巴的最后一个。我仍然认为我们有了一个更好的办法,使原来的图像仍然保存的地方。它仍然发送我的小25%大小的图片。

 公共类CameraTest延伸活动{
/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);
    按钮cameraButton =(按钮)findViewById(R.id.cameraButton);
    cameraButton.setOnClickListener(新OnClickListener(){
        公共无效的onClick(视图v){

            意向意图=新的意图(android.media.action.IMAGE_CAPTURE);

            startActivityForResult(意向,0);
        }
    });

}

@覆盖
保护无效onActivityResult(INT申请code,INT结果code,意图数据){
    如果(要求code == 0安培;&安培;结果code == Activity.RESULT_OK){
        。位图X =(位图)data.getExtras()获得(数据);
        ((ImageView的)findViewById(R.id.pictureView))setImageBitmap(X)。
        ContentValues​​值=新ContentValues​​();
        values​​.put(Images.Media.TITLE,标题);
        values​​.put(Images.Media.BUCKET_ID,测试);
        values​​.put(Images.Media.DESCRIPTION,测试图像拍摄);
        values​​.put(Images.Media.MIME_TYPE,为image / jpeg);
        。URI URI = getContentResolver()插入(Media.EXTERNAL_CONTENT_URI,价值观);
        的OutputStream outstream;
        尝试 {
            outstream = getContentResolver()openOutputStream(URI)。
            x.com preSS(Bitmap.Com pressFormat.JPEG,70,outstream);
            outstream.close();
        }赶上(FileNotFoundException异常E){
            //
        }赶上(IOException异常E){
            //
        }
    }
}
 

另外,我知道Android的蛋糕发布应该很快修复图像尺寸较小。

For my application, I'd been using my own Camera class for taking images and my own database but soon enough I couldn't really keep up with changes and I decided to use the built in camera application in Android to do the job, but I can't seem to get it to save file. What am I missing here? The application seems to save the file but it's just 0 bytes. I looked up the source code of the Camera application and it's looking for the "output" in Extras to save the file. Any help would be greatly appreciated.

Public class CameraTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button cameraButton = (Button) findViewById(R.id.cameraButton);
        cameraButton.setOnClickListener( new OnClickListener(){
            public void onClick(View v ){
            	ContentValues values = new ContentValues();
            	values.put(Images.Media.TITLE, "title");
            	values.put(Images.Media.BUCKET_ID, "test");
            	values.put(Images.Media.DESCRIPTION, "test Image taken");
            	Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
            	Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            	intent.putExtra("output", uri.getPath());
            	startActivityForResult(intent,0);
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	if (requestCode== 0 && resultCode == Activity.RESULT_OK){
    		((ImageView)findViewById(R.id.pictureView)).setImageURI(data.getData());
    	}
    }


}

解决方案

This worked with the following code, granted I was being a little dumb with the last one. I still think there's got to be a better way so that the original image is still saved somewhere. It still sends me the smaller 25% size image.

public class CameraTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button cameraButton = (Button) findViewById(R.id.cameraButton);
    cameraButton.setOnClickListener( new OnClickListener(){
        public void onClick(View v ){

            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

            startActivityForResult(intent,0);
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode== 0 && resultCode == Activity.RESULT_OK) {
        Bitmap x = (Bitmap) data.getExtras().get("data");
        ((ImageView)findViewById(R.id.pictureView)).setImageBitmap(x);
        ContentValues values = new ContentValues();
        values.put(Images.Media.TITLE, "title");
        values.put(Images.Media.BUCKET_ID, "test");
        values.put(Images.Media.DESCRIPTION, "test Image taken");
        values.put(Images.Media.MIME_TYPE, "image/jpeg");
        Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
        OutputStream outstream;
        try {
            outstream = getContentResolver().openOutputStream(uri);
            x.compress(Bitmap.CompressFormat.JPEG, 70, outstream);
            outstream.close();
        } catch (FileNotFoundException e) {
            //
        } catch (IOException e) {
            //
        }
    }
}

Also, I do know that the cupcake release of Android should fix the small image size soon.

这篇关于如何从相机数据保存到使用MediaStore在Android上盘?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆