递增数字时出错:Android

时间:2014-01-17 12:00:42

标签: android

int imageNum =0; 
@Override
public void onPictureTaken(byte[] data, Camera mCamera) {

    String Name = PatientInfo.getText().toString();
    String Age =  PatientAge.getText().toString();
    String Id = PatientId.getText().toString();

    Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    Date d = new Date();
    CharSequence s  = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());

    Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum)+".jpg";
    File imagesFolders = new File(Environment.getExternalStorageDirectory().toString() + "/" + Name + Age + gender +Id);

    imagesFolders.mkdirs();
    File output = new File(imagesFolders, Rname);

    while (output.exists()) {
        imageNum++;
        Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum) +".jpg";
        output = new File(imagesFolders, Rname);
    }

    Uri uriSavedImage = Uri.fromFile(output);
    imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
    OutputStream imageFileOS;

    try { 
        imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
        imageFileOS.write(data);
        imageFileOS.flush();
        imageFileOS.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    } 
    catch (IOException e) {
        e.printStackTrace();
    } 
    finally {
    }

    Log.d("Log", "onPictureTaken - jpeg");

这是我的代码的一部分。我试图将图像保存在文件夹中,并增加文件名。每次单击时,图像都会保存在RAW16-01-1405-20-22_img_0的文件夹中。每次拍照时, img 都必须增加。有人可以帮忙吗?我的代码中的错误在哪里?

3 个答案:

答案 0 :(得分:0)

在摘录中,

  while (output.exists()){
    imageNum++;
    Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum) +".jpg";
    output = new File(imagesFolders, Rname);
 }

改变它

while (output.exists()){
    imageNum++;
    Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum) +".jpg";

 }
imageNum++;
Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum) +".jpg";
output = new File(imagesFolders, Rname);

答案 1 :(得分:0)

不确定你的问题究竟是什么,但你应该坚持使用imageNum计数器,因为一旦创建了一个新的实例,它将被重置为0,这将很快发生。

使用 SharedPreferences 或类似内容来保留它。

答案 2 :(得分:0)

while (output.exists()){
            imageNum++;
            Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum) +".jpg";
            output = new File(imagesFolders, Rname);
        }
Rname = "Raw"+s.toString() + "_img_"+ String.valueOf(imageNum) +".jpg";
            output = new File(imagesFolders, Rname);

while循环以Rname结尾,输出具有最后一个现有文件的值。你也需要给新的值。