2017-06-01 39 views
-2

大家好!我正在使用照相機將照片保存在手機圖庫中。但我不想將照片保存在畫廊中。我想把它保存在別的地方。所以我需要的不是自動將其保存在畫廊中。如何不將用相機拍攝的圖像保存在自制文件夾中?

這是我的代碼:

public class MainActivity extends AppCompatActivity { 

    ImageView photo; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button click = (Button)findViewById(R.id.btnPhoto); 
     photo = (ImageView) findViewById(R.id.imgPhoto); 

     click.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(intent, 0); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      Bitmap bitmap = (Bitmap)data.getExtras().get("data"); 
      photo.setImageBitmap(bitmap); 
    } 
} 

如果我的問題不夠好,請問我!請幫助我。

+1

:活動結果

click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri mImageCaptureUri = null; File mediaFile = getOutputMediaFile(); mImageCaptureUri = Uri.fromFile(mediaFile); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); intent.putExtra("return-data", true); this.startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE); }}0; 

[拍照](https://developer.android.com/training/camer a/photobasics.html)和[存儲照片或文件](https://developer.android.com/training/basics/data-storage/files.html) –

回答

0

這種打開相機和路徑的方法是File declare global。

private void openCamera() { 
    Logger.i("openCamera"); 

    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(this.getPackageManager()) != null) { 
     File rootPath = new File(Environment.getExternalStorageDirectory(), "folderName"); 
     if (!rootPath.exists()) 
      rootPath.mkdirs(); 

     DateFormat df = new SimpleDateFormat("yyyy-MM-dd-kk-mm-ss"); 
     String snapshotImage = df.format(new Date()) + ".jpg"; 

     rootPath = new File(rootPath + "/" + snapshotImage); 
     path = rootPath; 

     takePictureIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(path)); 


     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 

} 

GET結果

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 

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



     if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
      FileOutputStream fos = null; 
      try { 

       // Float Latitude=0.0f, Longitude=0.0f; 

       imageDvr.setImageURI(Uri.parse(path.getAbsolutePath())); 



      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       if (fos != null) { 
        try { 
         fos.close(); 
        } catch (IOException e) { 
        } 
       } 
      } 


     } 


    } 


} 

,並給予每\任務清單文件

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
0

您將獲得的圖像的onActivityResult(),和你將通過位圖存儲該圖像。

使用以下功能店鋪形象你自制的文件夾。您需要製作該文件夾並需要使用該文件夾。

這樣子。

public void SaveImage(Bitmap showedImgae){ 

String root = Environment.getExternalStorageDirectory().toString(); 
File myDir = new File(root + "/YourSelfMadeFolder");  
myDir.mkdirs(); 
Random generator = new Random(); 
int n = 10000; 
n = generator.nextInt(n); 
String fname = "FILENAME-"+ n +".jpg"; 
File file = new File (myDir, fname); 
if (file.exists()) file.delete(); 
try { 
    FileOutputStream out = new FileOutputStream(file); 
    showedImgae.compress(Bitmap.CompressFormat.JPEG, 100, out); 
    Toast.makeText(activityname.this, "Image Saved", Toast.LENGTH_SHORT).show(); 
    out.flush(); 
    out.close(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
Uri contentUri = Uri.fromFile(file); 
mediaScanIntent.setData(contentUri); 
getApplicationContext().sendBroadcast(mediaScanIntent); 
} 
0

您可以添加意向android.provider.MediaStore.EXTRA_OUTPUT與URI:

private File getOutputMediaFile() { 
    File mediaStorageDir = null; 
    String state = Environment.getExternalStorageState(); 

     if (state.contains(Environment.MEDIA_MOUNTED)) { 
      mediaStorageDir = new File(Environment 
        .getExternalStorageDirectory().toString() + "/yourFolderName"); 
     } else { 
      mediaStorageDir = new File(Environment 
        .getExternalStorageDirectory().toString() + "/yourFolderName"); 
     } 

    if (!mediaStorageDir.exists()) { 
     Logger.d("Desc", "File dir " + mediaStorageDir.mkdirs()); 
    } 

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 


     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
       "Image_" + timeStamp + ".jpg"); 
    return mediaFile; 
    } 

您按一下按鈕:

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

     Log.d("FilePath","Path"+mediaFile.getAbsolutePath();) 
    } 
相關問題