Eiseno
2012-12-12 06:50
采纳率: 100%
浏览 3.0k

怎么在电话记忆卡里创建文件夹然后保存图像?

怎么在电话的记忆卡创建新的文件夹"MyFolder"然后将所有拍的照片保存到那个文件夹中?请帮下我。
下边的代码都会将所有的照片都保存到收集默认图片库中。我想要创建一个新的文件夹然后把所有拍的照片都保存到那个文件夹中,我应该怎么做?

public class PhotoCaptureExample extends Activity 
  {
protected Button _button;
protected ImageView _image;
protected TextView _field;
protected String _path;
protected boolean _taken;

protected static final String PHOTO_TAKEN   = "photo_taken";

 @Override
  public void onCreate(Bundle savedInstanceState) 
 {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    _image = ( ImageView ) findViewById( R.id.image );
    _field = ( TextView ) findViewById( R.id.field );
    _button = ( Button ) findViewById( R.id.button );
    _button.setOnClickListener( new ButtonClickHandler() );
   ;
  _path = Environment.getExternalStorageDirectory() + "/myfolder   
 /"+System.currentTimeMillis()+".jpg";




    File dir = new File(_path );
    try{
      if(dir.mkdir()) {
         System.out.println("Directory created");
      } 
      else {
         System.out.println("Directory is not created");
      }}
      catch(Exception e){

    }   
}

public class ButtonClickHandler implements View.OnClickListener 
{
    public void onClick( View view ){
        Log.i("MakeMachine", "ButtonClickHandler.onClick()" );
        startCameraActivity();
    }
}

protected void startCameraActivity()
{
    Log.i("MakeMachine", "startCameraActivity()" );
    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, 0 );
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{   
    Log.i( "MakeMachine", "resultCode: " + resultCode );
    switch( resultCode )
    {
        case 0:
            Log.i( "MakeMachine", "User cancelled" );
            break;

        case -1:
            onPhotoTaken();
            break;
    }
}

protected void onPhotoTaken()
{
    Log.i( "MakeMachine", "onPhotoTaken" );

    _taken = true;

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 4;

    Bitmap bitmap = BitmapFactory.decodeFile( _path, options );

    _image.setImageBitmap(bitmap);

    _field.setVisibility( View.GONE );
}

@Override 
protected void onRestoreInstanceState( Bundle savedInstanceState){
    Log.i( "MakeMachine", "onRestoreInstanceState()");
    if( savedInstanceState.getBoolean( PhotoCaptureExample.PHOTO_TAKEN ) ) {
        onPhotoTaken();
    }
}

@Override
protected void onSaveInstanceState( Bundle outState ) {
    outState.putBoolean( PhotoCaptureExample.PHOTO_TAKEN, _taken );
}
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • fire_fire_fire 2012-12-13 02:34
    已采纳

    参考,这个应该能够满足你的要求:Android调用手机拍照,将拍照的图片放在指定文件夹中

    已采纳该答案
    打赏 评论
  • Billy_崔海斌 2012-12-12 08:55

    你那个代码应该就可以用,不过要注意要先创建这个目录就行。

    打赏 评论
  • yijidemomo 2012-12-13 02:42

    看下这个,可能对你有帮助

    File mydir = context.getDir("mydir", Context.MODE_PRIVATE); //创建一个内部dir;
    File fileWithinMyDir = new File(mydir, "myfile"); //在内部dir得到一个文件夹.
    FileOutputStream out = new FileOutputStream(fileWithinMyDir);
    
    打赏 评论
  • Sueyexin 2012-12-13 03:12

    如果你要创建文件夹,你应该在你的manifest文件中加下边的这个许可。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />  
    
    package com.test;
    
    import java.io.File;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    
    public class CameraTest extends Activity 
    {
        protected Button _button;
        protected ImageView _image;
        protected TextView _field;
        protected String _path;
        protected boolean _taken;
    
    protected static final String PHOTO_TAKEN   = "photo_taken";
    
     @Override
      public void onCreate(Bundle savedInstanceState) 
     {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.camtest);
    
        _image = ( ImageView ) findViewById( R.id.image );
        _field = ( TextView ) findViewById( R.id.field );
        _button = ( Button ) findViewById( R.id.button );
        _button.setOnClickListener( new ButtonClickHandler() );
       // _path = Environment.getExternalStorageDirectory() + "/NewFolder/"+System.currentTimeMillis()+".jpg";
    
        _path = "/sdcard/NewFolder/test1.jpg";
    
    
        String dir = "/sdcard/NewFolder/";
        File imageDirectory = new File(dir);
        imageDirectory.mkdirs();
    
       /* File dir = new File(_path );
        try{
          if(dir.mkdir()) {
             System.out.println("Directory created");
          } 
          else {
             System.out.println("Directory is not created");
          }}
          catch(Exception e){
    
        }  */
    }
    
    public class ButtonClickHandler implements View.OnClickListener 
    {
        public void onClick( View view ){
            Log.i("MakeMachine", "ButtonClickHandler.onClick()" );
            startCameraActivity();
        }
    }
    
    protected void startCameraActivity()
    {
        Log.i("MakeMachine", "startCameraActivity()" );
        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, 0 );
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {   
        Log.i( "MakeMachine", "resultCode: " + resultCode );
        switch( resultCode )
        {
            case 0:
                Log.i( "MakeMachine", "User cancelled" );
                break;
    
            case -1:
                onPhotoTaken();
                break;
        }
    }
    
    protected void onPhotoTaken()
    {
        Log.i( "MakeMachine", "onPhotoTaken" );
    
        _taken = true;
    
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 4;
    
        Bitmap bitmap = BitmapFactory.decodeFile( _path, options );
    
        _image.setImageBitmap(bitmap);
    
        _field.setVisibility( View.GONE );
    }
    
    
    }
    

    这个在我这是好的,你看一下,希望对你有帮助。

    打赏 评论

相关推荐 更多相似问题