• 将图片保存到系统相冊的两种方法


    第一种:採用系统的api直接使用:

    ContentResolver cr = getContentResolver();
    					String url = MediaStore.Images.Media.insertImage(cr, bmp,
    							String.valueOf(System.currentTimeMillis()), "");

    可是,这样的方式必须得刷新图库:

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

    虽然如此,这样的方法还是仅仅能适合安卓4.4下面的手机,若是4.4以上的手机就会报错。因此建议採用另外一种方式来写。

    另外一种:直接採用文件流进行保存到相冊

    File tempFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/"
     + String.valueOf(System.currentTimeMillis()) + ".png");
    					if(tempFile.exists()){
    						tempFile.delete();
    					}
    					try {
    						tempFile.createNewFile();
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    					FileOutputStream fOut = null;
    					try {
    						fOut = new FileOutputStream(tempFile);
    					} catch (FileNotFoundException e) {
    						e.printStackTrace();
    					}
    					bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut);
    					try {
    						fOut.flush();
    						fOut.close();
    					} catch (IOException e) {
    						// TODO: handle exception
    						e.printStackTrace();
    					}


    最后把整个方法贴出来:

    /**
    	 * 將ImageView中的圖片保存到系统相冊
    	 */
    	private void SaveImageToSysAlbum() {
    		if (FileUtil.isSdCardExist()) {
    			BitmapDrawable bmpDrawable = (BitmapDrawable)mFullImageView.getDrawable();
    			Bitmap bmp = bmpDrawable.getBitmap();
    			if (bmp != null) {
    				try {
    					/*ContentResolver cr = getContentResolver();
    					String url = MediaStore.Images.Media.insertImage(cr, bmp,
    							String.valueOf(System.currentTimeMillis()), "");*/
    					File tempFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/"
     + String.valueOf(System.currentTimeMillis()) + ".png");
    					if(tempFile.exists()){
    						tempFile.delete();
    					}
    					try {
    						tempFile.createNewFile();
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    					FileOutputStream fOut = null;
    					try {
    						fOut = new FileOutputStream(tempFile);
    					} catch (FileNotFoundException e) {
    						e.printStackTrace();
    					}
    					bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut);
    					try {
    						fOut.flush();
    						fOut.close();
    					} catch (IOException e) {
    						// TODO: handle exception
    						e.printStackTrace();
    					}
    					
    					Toast.makeText(this, getString(R.string.save_succ), Toast.LENGTH_SHORT).show();
    
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}else {
    				Toast.makeText(this, getString(R.string.no_iamge_save_fail), Toast.LENGTH_SHORT).show();
    			}
    		}else {
    			Toast.makeText(this, getString(R.string.no_sdcard_save_fail), Toast.LENGTH_SHORT).show();
    		}
    		String release = android.os.Build.VERSION.RELEASE;
    		String tempID = release.substring(0, 3);
    		if(Double.parseDouble(tempID) >= 4.4){//安卓4.4以上版本号的时候使用这个。下面的使用else语句里面的
    			MediaScannerConnection.scanFile(this,new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" }, null,null);
    		}else {
    			sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
    			MediaScannerConnection.scanFile(this,new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" }, null,null); 
    		}
    		
    		
    	}




  • 相关阅读:
    消除 transition 闪屏
    解决audio和video在手机端无法自动播放问题
    css3让图文不能复制
    改变placeholder的字体颜色大小
    css3实现水平、垂直居中
    link 和@import 的区别
    JSON与对象的相互转换
    indexOf与includes的比较
    DOM盒子模型
    关于Meta标签的一些知识
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5133106.html
Copyright © 2020-2023  润新知