2013-07-05 3 views
0

Я пытаюсь захватить изображение, а затем сохранить его в SDCard. Но камера работает, но изображение не сохраняется на месте и даже не создает папку. Пожалуйста, проверьте приведенный ниже код, чтобы камера захватила изображение, а затем сохранила его.Захват изображения с камеры и сохранение на SD-карте

public class TakePicture extends Activity { 
int TAKE_PHOTO_CODE = 0; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_take_picture); 

    //here,we are making a folder named picFolder to store pics taken by the camera using this application 
     final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/"; 
     File newdir = new File(dir); 
     newdir.mkdirs(); 

     Button capture = (Button) findViewById(R.id.btnCapture); 
     capture.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // here,counter will be incremented each time,and the picture taken by camera will be stored as 1.jpg,2.jpg and likewise. 

      String file = System.currentTimeMillis() + ".jpg"; 
      File newfile = new File(file); 
      try { 
       newfile.createNewFile(); 
      } catch (IOException e) {}  

      Uri outputFileUri = Uri.fromFile(newfile); 

      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 

      startActivityForResult(cameraIntent, TAKE_PHOTO_CODE); 
     } 
    }); 
} 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) { 
      Log.d("CameraDemo", "Pic saved"); 
      Log.d("data-----",data.toString()); 


     }else{ 
      Log.d("CameraDemo", "Pics Not Saved "); 
     } 
} 

} 
+1

Вы указали Разрешения на доступ к Sd Card, я имею в виду запись на внешнюю память ..? –

+0

google it ... так много доступных ответов – Richa

+0

@SoftwareSainath я сделал в файле манифеста, у меня есть addes

ответ

1

Я знаю, что это не совсем ответ на ваш вопрос, но не было бы проще использовать приложение для камеры? Вы можете получить к нему доступ, используя этот код в своей деятельности:

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

       Button capture = (Button) findViewById(R.id.capture_button); 
       capture.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         // We use the stock camera app to take a photo 
         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
         intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri()); 
         startActivityForResult(intent, TAKE_PHOTO_CODE); 
        } 
       }); 
      } 

      @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       super.onActivityResult(requestCode, resultCode, data); 

       if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) { 
        Uri imagePath = getImageUri(); 

        doSomething(); 
       } 
      } 

      /** 
      * Get the uri of the captured file 
      * @return A Uri which path is the path of an image file, stored on the dcim folder 
      */ 
      private Uri getImageUri() { 
       // Store image in dcim 
       File file = new File(Environment.getExternalStorageDirectory() + "/DCIM", CAPTURE_TITLE); 
       Uri imgUri = Uri.fromFile(file); 

       return imgUri; 
      } 
+0

Спасибо, работаю хорошо. –

Смежные вопросы