2

このコードで写真を撮ろうとしています:

capturarFoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("debugging","Has clicat al botó");
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 1888);
        }           
    });

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == 1888 && resultCode == -1) { //-1 = TOT HA ANAT BE.
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        Log.d("debugging",""+photo.getHeight());
        Log.d("debugging",""+photo.getWidth());
        ((ImageView) myFragmentView.findViewById(R.id.fotoCapturada)).setImageBitmap(photo);
    }
}

そして、これは完全に機能しています。写真をキャプチャすると、ImageView に表示されます。しかし、私はある種の編集可能なオプション、回転などを作成しようとしています。そのため、保存したくありません(ギャラリーは既にキャッシュしています!!)。

私はいくつかの同様の質問を読みましたが、これは素晴らしいことです:

  • SDCARDにフォルダを作成
  • そこに一時的な画像を保存します
  • .nomedia ファイルを作成して、ギャラリーがアクセスしないようにします。
  • 削除または保存は画像に適用され、そのフォルダーに残します。

上記のコードを更新して、これらのポイントを達成するように適応させようとしていますが、Google で見つけたコードは常に他の API を使用しており、そのうちのいくつかは古いものです...

これを達成するための「簡単な」方法はありますか?

フォルダーを作成してそのファイルを作成する部分は大したことではないので、次のようにします。

- アプリで撮影した写真の保存経路を設定するにはどうすればよいですか?

ありがとうございました。

編集:

さて、いくつかのコードを見つけましたが、動作していません (SD 書き込み許可を与えても):

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            File file = new File(Environment.getExternalStorageDirectory().getPath() + "/folder/" + "filename" + ".jpg");
            Uri imageUri = Uri.fromFile(file);
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

            startActivityForResult(cameraIntent, 1888);
4

1 に答える 1

1

さて、ついに私は画像を必要なURIに保存する方法を見つけました:

public void onClick(View v) {
            Log.d("debugging","Has clicat al botó");

            File folder = new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/");
            folder.mkdirs();

            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            Uri uriSavedImage=Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/imatge.jpg"));
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);

            startActivityForResult(cameraIntent, 1888);
        }   

それでおしまい。

SDカードへの書き込みを許可することを忘れないでください。

于 2013-01-06T21:30:06.563 に答える