2011-09-01 15 views
9

Hey Android için yeniyim ve yakın zamanda bir uygulama yapmaya çalışıyorum. Temel olarak, yapmak istediğim, kullanıcının kendi klasörünü oluşturmasına ve ardından kamerayı başlatmak için bir düğme içeren bir etkinliğe gitmesine izin vermek. Oradan kamerayı başlatmak ve kamera görüntülerini yeni oluşturulan klasöre kaydetmek istiyorum. Kamera görüntülerini yeni oluşturulan klasöre kaydetmenin son kısmında sorun yaşıyorum.Android'deki Kameradan görüntüler belirli bir klasöre nasıl kaydedilir?

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); 

     } 
    }); 

Buradan bu faaliyetin içine geçiş:

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); 
     } 
    });   
    } 
} 

nasıl yeni oluşturulan klasöre kameradan görüntü kaydetmek için söyle. Kullanıcının birkaç fotoğraf çekebilmesini ve ardından bu birkaç resmi o belirli klasöre kaydetmesini istiyorum. Şimdiden teşekkürler!

cevap

11

al,

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

nedir Umarım yardımcı olabilir denemek

 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); 

ve onActivityResult hayata sığınak .... "çıktı "Neden bu işe yaramalı? Bir çeşit sabit kullanılmamalıdır mı? –

+0

MediaStore.EXTRA_OUTPUT sabit – Teodor

+2

çalışmıyor. EXTRA_OUTPUT ile yanlış bir şey var. – zgulser

0

Dosya konumunu, resim yakalama amacına eklemelisiniz. Örneğin :

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

kamera aktivitesini çağırmadan önce bu kodu eklemek bir göz here

1

bu deneyin ....

yol = Environment.getExternalStorageDirectory() + "/photo1.jpg"; Bu u

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(); 
      } 
     } 
    } 

bunu ..........

+1

CAPTURE_IMAGE_ACTIVITY, bir tam sayıdan başka bir şey değildir, istediğiniz 99/7/67 bir şey söyleyerek seçtiğiniz basit ara değer değerini kullanabilirsiniz. İstek kodunu kontrol etmek için kullanılır. Örneğin, 1 etkinlik diğer birçok faaliyete başlayabilir, ancak her isteğin ana isteğinizde onActivityResult içindeki her etkinliğin iadesi üzerine kontrol edilebilen benzersiz bir istek kodu olmalıdır. Hangi etkinliğin döndüğünü öğrenmek için istek kodunu kontrol edin. –

+0

@Richa isImageTaken nedir, ne tür bir isImageTaken değişkeni .... – Amitsharma

İlgili konular