0

我需要为使用我的应用程序拍摄的每张照片创建一个新的文件名/U​​ri。他们拍摄的第一张照片将是“/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);
        }
    }); 

这行得通吗?我可以添加您需要的任何额外代码/详细信息。

4

2 回答 2

0

我建议将“count” int 移到 onClickListener 之外,否则它将始终包含值“2”,因为它将在每次点击时一次又一次地实例化。

您还需要在应用程序关闭时记录该号码的最后使用情况,否则您将面临覆盖图像的风险。

于 2012-06-15T23:19:24.723 回答
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();
    }
}
于 2012-06-16T00:01:13.860 回答