gpt4 book ai didi

android - 如何在 Android 上使用 MediaStore 将相机中的数据保存到磁盘?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:05 26 4
gpt4 key购买 nike

对于我的应用程序,我一直在使用我自己的相机类来拍摄图像和我自己的数据库,但很快我就跟不上变化,我决定使用 Android 中内置的相机应用程序来完成工作,但我似乎无法保存文件。我在这里错过了什么?应用程序似乎保存了文件,但它只有 0 个字节。我查找了 Camera 应用程序的源代码,它正在寻找 Extras 中的“输出”来保存文件。任何帮助将不胜感激。

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());
}
}


}

最佳答案

这适用于以下代码,当然我对最后一个代码有点笨。我仍然认为必须有更好的方法才能将原始图像保存在某个地方。它仍然向我发送较小的 25% 大小的图像。

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) {
//
}
}
}

此外,我知道 Android 的 cupcake 版本应该很快会修复小图像尺寸问题。

关于android - 如何在 Android 上使用 MediaStore 将相机中的数据保存到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/649057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com