2012-05-03 12 views
1

でSDカードに撮影した写真の名前を変更私は、下記のリンクからコードを使用する非常に有用だったしました、ありがとう: http://www.tutorialforandroid.com/2010/10/take-picture-in-android-with.htmlの保存/ Androidの

は、いくつかの写真の問題で助けが必要! takePhoto()はMediaStore.ACTION_IMAGE_CAPTUREを起動し、getFile()は "Image keeper"ディレクトリを作成し、撮影した画像を "Image-SOMENUMBER.jpg"の名前でonActivityResult()に保存します。撮影した画像をImageViewとして表示したいと思います。 edittextや何かの何かのユーザー入力に画像の名前を変更したい!私はImageViewのを試してみる{}の部分に私の写真を表示するために得ることができない理由

1):

は、2つの質問がありますか?私は間違って何をしていますか?どのように私は保存された画像のパスを得ることができますか?

2)またはいくつかのボタンに名前を変更すると、電気ショック療法をクリックし、「名前を付けて保存」のようなもの(?私は写真に彼らが望むように名前を付けるために、ユーザーを有効にすることができますが道である。)

すべてのアイデアは大歓迎です!ありがとうございました!ここ

はコードです:

private static final int TAKE_PHOTO_CODE = 1; 

private void takePhoto(){ 
    final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getFile(this))); 
    startActivityForResult(intent, TAKE_PHOTO_CODE); 
} 

private File getFile(Context context){ 

    final File path = new File(Environment.getExternalStorageDirectory(), "Image keeper"); 
    if(!path.exists()){ 
    path.mkdir(); 
    } 
    String name; 
    int n = 100000; 
    int rand; 
    rand = new Random().nextInt(n); 
    name = "Image-" + rand + ".jpg"; 
    File file = new File(path,name); 

    return file; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     switch(requestCode){ 
     case TAKE_PHOTO_CODE: 
     final File file = getFile(this); 
     try { 
      Bitmap captureBmp; 
      captureBmp = Media.getBitmap(getContentResolver(), Uri.fromFile(file)); 

      iv = (ImageView) findViewById(R.id.imageView1); 
      iv.setImageBitmap(captureBmp); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     break; 
    } 
    } 
} 

答えて

1

は私の問題の一部を解決する名前の変更ができませんでしたが、コードのこの作品は、私のために仕事をしてくれました!私はそれが少し好きになることができると確信していますが、それは動作します!それは、SDカードに保存し、それにパスを取得し、写真を撮ることが含まれます!

ImageView iv; 
static File image; 
Uri ImageUri; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button btn = (Button) findViewById(R.id.button1); 

    btn.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     takePhoto(); 

    } 
}); 
} 

private static final int TAKE_PHOTO_CODE = 1; 

private void takePhoto(){ 
    image = getFile(this); 
    final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image)); 
    startActivityForResult(intent, TAKE_PHOTO_CODE); 
} 

private File getFile(Context context){ 

    final File path = new File(Environment.getExternalStorageDirectory(), "Image keeper"); 
    if(!path.exists()){ 
    path.mkdir(); 
    } 
    String name; 
    int n = 100000; 
    int rand; 
    rand = new Random().nextInt(n); 
    name = "Image-" + rand + ".jpg"; 
    File fileimage = new File(path, name); 

    return fileimage; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     switch(requestCode){ 
     case TAKE_PHOTO_CODE: 

     try { 
      Bitmap captureBmp; 
      captureBmp = Media.getBitmap(getContentResolver(), Uri.fromFile(image)); 

      ImageUri = Uri.fromFile(image); 
      String pathToImage = ImageUri.getPath(); 

      iv = (ImageView) findViewById(R.id.imageView1); 
      iv.setImageBitmap(captureBmp); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     iv.setAdjustViewBounds(true); 

     break; 
    } 
    } 
} 
関連する問題