将捕获的图像存储在特定文件中

时间:2013-12-26 06:40:45

标签: android path sd-card capture

我可以使用相机并通过以下方式拍照:

public class ImportCard extends Activity {

ImageButton importimage;
Button btnglry, btnqr;
boolean taken;
String path;

protected static final String PHOTO_TAKEN   = "photo_taken";
static Uri capturedImageUri=null;

@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_import_card);

path = Environment.getExternalStorageDirectory() + "/MapCards/"+System.currentTimeMillis()+".jpg";



String dir = Environment.getExternalStorageDirectory().getPath();

File imageDirectory = new File(dir);

imageDirectory.mkdirs();


importimage = (ImageButton)findViewById(R.id.importimage);

importimage.setOnClickListener(new OnClickListener(){   
public void onClick(View v) { 

startCameraActivity();
        }
    }); 

}

protected void startCameraActivity()
{

    File file = new File( path );

    Uri outputFileUri = Uri.fromFile( file );

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
    intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );

    startActivityForResult(intent, 0);

}


protected void onPhotoTaken()
{
    //       Log.i( "MakeMachine", "onPhotoTaken" );

    taken = true;

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 4;
 }}

此方法有效。但是我希望我捕获的图像保存在默认目标文件夹中,例如“MapCards”(如果没有文件夹,则创建)。这与某事有关,

path = Environment.getExternalStorageDirectory() + "/MapCards/"+System.currentTimeMillis()+".jpg";

但所有图像都保存在“相机”文件夹中。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

在SD卡中创建自己的文件夹&然后通过相机意图传递File Uri。这段代码应该可以解决问题。

String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory() + File.separator + "tempImage.jpg";
File file =new File(SD_CARD_TEMP_DIR);    
takePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));

答案 1 :(得分:0)

请参阅Android的培训 - Taking Photos Simply

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
    intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );

是将图像保存到自定义文件路径的唯一方法。所以你应该做的: 1.检查您是否有正确的保存文件夹 2.尝试删除您的SD卡以验证您的代码是否可以正常工作 你的ROM是定制的吗?第三方ROM可能效果不佳。