我需要为使用我的应用拍摄的每张照片创建一个新的文件名/ Uri。他们拍摄的第一张照片是“/sdcard/mirror1.jpg”,然后拍摄的下一张照片将是“mirror2.jpg”,依此类推。到目前为止,这是我的代码:
capture.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int count = 1;
count++;
String fileName = new String("/sdcard/mirror" + count + ".jpg");
File thing = new File(fileName);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(thing));
startActivityForResult(intent, CAMERA_PIC_REQUEST);
text.setVisibility(View.GONE);
}
});
这会有用吗?我可以添加您需要的任何额外代码/细节。
答案 0 :(得分:0)
我建议移动"计数"在onClickListener之外的int,否则它将始终包含值" 2"因为每次点击都会一次又一次地实例化。
您还需要在应用程序关闭时记录该号码的最后一次使用,否则您将面临覆盖图像的风险。
答案 1 :(得分:0)
代码中的问题是每次点击时计数总是会重置为1(因为你在onClickListener中声明并实例化它)。
即使您解决了这个问题,当您关闭应用或活动时,您也会失去进展。
所以你应该将count的值存储在某个地方。
执行此操作的最佳方法是使用共享首选项。
所以你的代码看起来应该是这样的
capture.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//read count from Shared Preferences
SharedPreferences settings = getSharedPreferences("YourPrefName", 0);
int count = settings.getInt("imageCount", 1);
String fileName = new String("/sdcard/mirror" + count + ".jpg");
File thing = new File(fileName);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(thing));
startActivityForResult(intent, CAMERA_PIC_REQUEST);
text.setVisibility(View.GONE);
}
});
我们会检查照片是否成功拍摄,而不是在此处增加计数。我们在onActivityResult中这样做。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
SharedPreferences settings = getSharedPreferences("YourPrefName", 0);
int count = settings.getInt("imageCount", 1);
++count;
SharedPreferences.Editor editor = settings.edit();
editor.putInt("imageCount", count);
editor.commit();
}
}