0

携帯電話の Imagefolder に写真を保存したいだけです。私が試した2つの例があります。

1.例

onClick メソッドを有効にすると、アプリがクラッシュします。

public void onClick(View arg0) {

        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

        startActivityForResult(cameraIntent, 1337);
}});

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        {

     if( requestCode == 1337)
            {
                Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());

            }
            else 
            {
                Toast.makeText(AndroidCamera.this, "Picture NOt taken", Toast.LENGTH_LONG);
            }
            super.onActivityResult(requestCode, resultCode, data);
        }

2. 例

撮った写真をウリで保存する前に。しかし、写真はフォルダーに保存され、PC または FileApp でしかアクセスできませんでした。Uri を使用してパスの方向を携帯電話の既存の既定の画像フォルダーに変更する方法がわかりません。

Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,  new ContentValues());
4

1 に答える 1

1

これは、指定したイメージフォルダーに画像を保存して管理する方法です

カメラの意図を開始するときに、画像を保存するパスとディレクトリを定義し、カメラの開始時にこれを intetn extra として渡します。

    private void startCameraIntent() {
        //create file path
        final String photoStorePath = getProductPhotoDirectory().getAbsolutePath();

        //create file uri
        final Uri fileUri = getPhotoFileUri(photoStorePath);

        //create camera intent
        final Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        //put file ure to intetn - this will tell camera where to save file with image
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
        // start activity
        startActivityForResult(cameraIntent, REQUEST_CODE_PHOTO_FROM_CAMERA);

        //start image scanne to add photo to gallery
        addProductPhotoToGallery(fileUri);
    }

上記のコードで使用されているヘルパー メソッドの一部を次に示します。

    private File getProductPhotoDirectory() {
        //get directory where file should be stored
        return new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES),
                "myPhotoDir");
    }

    private Uri getPhotoFileUri(final String photoStorePath) {

        //timestamp used in file name
        final String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
              Locale.US).format(new Date());

        // file uri with timestamp
        final Uri fileUri = Uri.fromFile(new java.io.File(photoStorePath 
              + java.io.File.separator + "IMG_" + timestamp + ".jpg"));

        return fileUri;
    }

    private void addProductPhotoToGallery(Uri photoUri) {
        //create media scanner intetnt
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

        //set uri to scan
        mediaScanIntent.setData(photoUri);
        //start media scanner to discover new photo and display it in gallery
        this.sendBroadcast(mediaScanIntent);
   }
于 2013-08-07T17:14:45.597 に答える