0

アプリを使用して撮影したすべての写真に対して、新しいファイル名/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);
        }
    }); 

これは機能しますか?必要なコード/詳細を追加できます。

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 に答える