2

私はこのコードを持っています:

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inventario);
    Button scatta=(Button) findViewById(R.id.scatta_foto);
    scatta.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 2);
        }
    });
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 2) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        ImageView test = (ImageView) findViewById(R.id.anteprima);
        test.setImageBitmap(photo);
        try{
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
            String currentDateandTime = sdf.format(new Date()).replace(" ","");
            FileOutputStream out = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + "/bao/bao"+currentDateandTime+".jpg");
            photo.compress(Bitmap.CompressFormat.JPEG, 90, out);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

私はそれが機能することを知っています(写真は撮影されており、ドロップボックスのおかげで機能していると確信しています)が、ImageViewとファイルマネージャーには表示されません! 指定したディレクトリ (/sdcard/my-app/) とイメージビューに写真を配置するにはどうすればよいですか

4

1 に答える 1

1

ファイル パスを設定します。

public final static String APP_PATH_SD_CARD = "/bao";

次のように画像を保存できます。

String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + APP_PATH_SD_CARD;

        try {
            File dir = new File(fullPath);
            if (!dir.exists()) {
                dir.mkdirs();
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
            String currentDateandTime = sdf.format(new Date()).replace(" ","");
            OutputStream fOut = null;
            File file = new File(fullPath, currentDateandTime);
            file.createNewFile();
            fOut = new FileOutputStream(file);

            // 100 means no compression, the lower you go, the stronger the compression
            bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
            fOut.flush();
            fOut.close();
        }

そのパスからその画像を取得できるようになりました。

ImageView picture = (ImageView) findViewById(R.id.imageView);
String pathName = Environment.getExternalStorageDirectory().getPath() + "/boa/" + "nameofimage.png";
File path = new File(pathName);
if(path.exists()){
    BitmapFactory.Options options = new BitmapFactory.Options();
    bm = BitmapFactory.decodeFile(pathName, options);
    picture.setImageBitmap(bm);
}
 else{
     //Set default picture or do nothing.
}
于 2012-12-07T18:30:05.523 に答える