2011-09-01 10 views
9

こんにちは私はAndroidが新しく、私は最近アプリを作りようとしています。基本的には、ユーザーが自分のフォルダを作成してから、カメラを起動するボタンを含むアクティビティに移動することができます。そこからカメラを起動し、カメラの画像を新しく作成したフォルダに保存したいと思っています。カメラの画像を新しく作成したフォルダに保存する最後の部分で問題が発生しています。ここからAndroidのカメラから特定のフォルダに画像を保存する方法は?

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

    Button b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new OnClickListener() { 


     EditText text = (EditText)findViewById(R.id.editText1); 
     EditText text2 = (EditText)findViewById(R.id.editText2); 



     @Override 
     public void onClick(View v) { 

      final String name = text.getText().toString(); 
      final String placeName = text2.getText().toString(); 

      String place = placeName.substring(0,3); 
      String direct = name + place ; 

      File folder = new File("/sdcard/CameraTest/" + direct + "/"); 
      folder.mkdirs(); 

      Intent myIntent = new Intent(CameraTestActivity.this, Press.class); 
      myIntent.putExtra("key", "/sdcard/CameraTest/" + direct + "/"); 
      startActivity(myIntent); 

     } 
    }); 

私はこの活動に移行:

public class Press extends Activity { 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.afterenter); 
     final String direct = this.getIntent().getStringExtra("key"); 


     // TODO Auto-generated method stub 
     Button p = (Button) findViewById(R.id.button2); 
     p.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

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

       startActivityForResult(camera, 1); 

      } 
     }); 



    Button np = (Button) findViewById(R.id.button3); 
    np.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent next = new Intent(Press.this, CameraTestActivity.class); 
      startActivity(next); 
     } 
    });   
    } 
} 

どのように新しく作成したフォルダの中にカメラから画像を保存する方法を教えてください。私は、ユーザーが複数の写真を撮って、それらの写真をその特定のフォルダに保存できるようにしたい。前もって感謝します!

答えて

11

を取り、

Uri uriSavedImage=Uri.fromFile(new File("/sdcard/flashCropped.png")); 
camera.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
startActivityForResult(camera, 1); 
+0

..........あなたはそれを得るホープのuを助けるかもしれない試してみますそれがなぜ機能するのでしょうか? 1つの定数を使用しないでください。 –

+0

MediaStore.EXTRA_OUTPUTは定数です – Teodor

+2

動作しません。 EXTRA_OUTPUTには何か問題があります。 – zgulser

0

ファイルの場所を画像キャプチャの意図に追加する必要があります。たとえば :

camera.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, [file location]); 

は、カメラのアクティビティを呼び出す前にこのコードを追加一見here

1

これを試してみてください....

パス= Environment.getExternalStorageDirectory ()+ "/photo1.jpg";

 File file = new File(path); 
     Uri outputFileUri = Uri.fromFile(file); 
     Intent intent = new Intent(
       android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
     startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY); 

、あなたが実装さonActivityResultをhaventは....これは

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    System.gc(); 
    if (requestCode == CAPTURE_IMAGE_ACTIVITY) { 
     if (resultCode == Activity.RESULT_OK) { 
      try { 
       // Call function MakeFolder to create folder structure if 
       // its not created 
       if(imageBitmap != null) { 
        imageBitmap = null; 
        imageBitmap.recycle(); 
       } 
       MakeFolder(); 
       // Get file from temp1 file where image has been stored 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 3; 
       imageBitmap = BitmapFactory.decodeFile(path, options); 
       imgForPhotograph.setImageBitmap(imageBitmap); 
       isImageTaken = true; 
       // Name for image 
       IMAGEPATH = getString(R.string.chassisImage) 
         + System.currentTimeMillis(); 
       SaveImageFile(imageBitmap,IMAGEPATH); 
      } catch (Exception e) { 
       Toast.makeText(this, "Picture Not taken", 
           Toast.LENGTH_LONG).show(); 
       e.printStackTrace(); 
      } 
     } 
    } 

は「出力は何

+1

CAPTURE_IMAGE_ACTIVITYは整数に過ぎません。単純な整数値、例えば99/7/67などを使用できます。要求コードをチェックするために使用されます。たとえば、1アクティビティは他の多くのアクティビティを開始できますが、すべてのリクエストに固有のリクエストコードが必要です。メインアクティビティのonActivityResult内のすべてのアクティビティの返却時に確認できます。 –

+0

@リチャisImageTakenとはどのようなisImageTaken変数... – Amitsharma

関連する問題