2016-10-18 11 views
0

写真を撮るプログラムを書いています。 問題は、DIRECTORY_PICTURESに保存しようとしたときです。画像ディレクトリで撮影した画像を見つけることができません。私のコードに間違っていますか? プログラムは、私は問題なくカメラを開いて書いて、私は に成功写真を撮ることができますが、写真を撮ってアンドロイドスタジオで保存します

ImageView mImageView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mImageView=(ImageView)findViewById(R.id.imageView) ; 
} 


static final int REQUEST_IMAGE_CAPTURE=1; 
public void bucapture(View view) { 
    Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if(takePictureIntent.resolveActivity(getPackageManager())!=null){ 
     startActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE); 
    } 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode==REQUEST_IMAGE_CAPTURE && resultCode==RESULT_OK){ 
     Bundle extras=data.getExtras(); 
     Bitmap imageBitmap=(Bitmap) extras.get("data"); 
     mImageView.setImageBitmap(imageBitmap); 
     try { 
      createImageFile(); 
      galleryAddpic(); 

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

    } 
} 

String mCurrentPhotpPath; 
//create image name 
private File createImageFile() throws IOException { 
    String timeStamp=new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName="JPGE"+timeStamp+"_"; 
    File storgeDir= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
    File image=File.createTempFile(imageFileName,".jpg",storgeDir); 
    mCurrentPhotpPath="file:"+image.getAbsolutePath(); 
    return image; 
} 


//save image 
private void galleryAddpic(){ 
    Intent mediaScanIntent=new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
    File f=new File(mCurrentPhotpPath); 
    Uri contentUri=Uri.fromFile(f); 
    mediaScanIntent.setData(contentUri); 
    this.sendBroadcast(mediaScanIntent); 

    } 
} 
+0

あなたのドライブには決して実際に出力ビットマップの任意の場所の画像ディレクトリには画像がありません – dymmeh

答えて

0
//This is one of the best can take photo full size in android an save it but create temp file that what exactly is in your code. it doesn't work some of custom phones like some model of samsung & Mi there you can check for file 
//and you have to use Intent Action picker intent for that. 

private URI mImageUri; 

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
File photo; 
try 
{ 
    // place where to store camera taken picture 
    photo = this.createTemporaryFile("picture", ".jpg"); 
    photo.delete(); 
} 
catch(Exception e) 
{ 
    Log.v(TAG, "Can't create file to take picture!"); 
    Toast.makeText(activity, "Please check SD card! Image shot is impossible!", 10000); 
    return false; 
} 
mImageUri = Uri.fromFile(photo); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); 
//start camera intent 
activity.startActivityForResult(this, intent, MenuShootImage); 

private File createTemporaryFile(String part, String ext) throws Exception 
{ 
File tempDir= Environment.getExternalStorageDirectory(); 
tempDir=new File(tempDir.getAbsolutePath()+"/.temp/"); 
if(!tempDir.exists()) 
{ 
    tempDir.mkdirs(); 
} 
return File.createTempFile(part, ext, tempDir); 
} 

//Then after image capture intent finished to work - just grab your picture from imageUri using following code: 

public void grabImage(ImageView imageView) 
{ 
this.getContentResolver().notifyChange(mImageUri, null); 
ContentResolver cr = this.getContentResolver(); 
Bitmap bitmap; 
try 
{ 
    bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr,  mImageUri); 
    imageView.setImageBitmap(bitmap); 
} 
catch (Exception e) 
{ 
    Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show(); 
    Log.d(TAG, "Failed to load", e); 
    } 
} 


//called after camera intent finished taking photo 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
if(requestCode==MenuShootImage && resultCode==RESULT_OK) 
{ 
    ImageView imageView; 
    this.grabImage(imageView); 
} 
super.onActivityResult(requestCode, resultCode, intent); 
} 
関連する問題