Android 使用字符串作为照片Uri?
我需要为使用我的应用程序拍摄的每张照片创建一个新的文件名/Uri。他们拍摄的第一张照片是/sdcard/mirror1.jpg,然后拍摄的下一张照片是mirror2.jpg,依此类推。以下是我目前的代码:Android 使用字符串作为照片Uri?,android,string,file,uri,android-file,Android,String,File,Uri,Android File,我需要为使用我的应用程序拍摄的每张照片创建一个新的文件名/Uri。他们拍摄的第一张照片是/sdcard/mirror1.jpg,然后拍摄的下一张照片是mirror2.jpg,依此类推。以下是我目前的代码: capture.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int count = 1; count++;
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);
}
});
这样行吗?我可以添加您需要的任何额外代码/详细信息。我建议将count int移到onClickListener之外,否则它将始终包含值2,因为每次单击都会一次又一次地实例化它
您还需要在应用程序关闭时记录该数字的最后一次使用情况,否则您将有覆盖图像的风险。代码中的问题是每次单击时计数都将重置为1,因为您在OnClick Listener中声明并实例化了它 即使你解决了这个问题,当你关闭你的应用程序或活动时,你也会失去进展 所以你应该把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();
}
}
如果你已经写了所有的代码。。。为什么不试试呢?您应该更改的一件事是字符串/sdcard应该被Environment.getExternalStorageDirectory替换,以便它可以在所有设备上工作