截屏且保存至SD卡

简介: //main.xml如下: //MainActivity如下: package com.
//main.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
    <Button 
        android:id="@+id/button"
        android:text="click here"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
    
    <TextView
      
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello every day" />

</LinearLayout>

//MainActivity如下:
package com.brave.test;
import java.io.File;
import java.io.FileOutputStream;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.os.Environment;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;

//出现的问题的描述:
//当点击按钮后将生产的图片会被保存到SD卡中,此时若把图片从SD中导出至桌面
//看到的图片是没有预览的,相当于图片是空白的.
//解决办法:
//将此图片从SDCard中删除,或者关闭模拟器.此时桌面上的图片显示正常
//原因:
//图片同时被桌面和手机模拟器占用
public class ScreenTestActivity extends Activity {
	private Button button;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new ButtonClickListenerImpl());

	}

	class ButtonClickListenerImpl implements View.OnClickListener {
		@Override
		public void onClick(View v) {
             getCurrentScreen();
		}
	}

	// 截取屏幕
	public void getCurrentScreen() {
		// 1.构建Bitmap
		WindowManager windowManager = getWindowManager();
		Display display = windowManager.getDefaultDisplay();
		int w = display.getWidth();//w=480
		int h = display.getHeight();//h=800
		Bitmap imageBitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);//最后一个参数叫位图结构
		//ARGB--Alpha,Red,Green,Blue. 
		//ARGB为一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构。

		// 2.获取屏幕
		View decorview = this.getWindow().getDecorView();//decor意思是装饰布置
		decorview.setDrawingCacheEnabled(true);
		imageBitmap = decorview.getDrawingCache();				
	
		String SaveImageFilePath = getSDCardPath() + "/gameCounter";//保存图片的文件夹路径
	    

		// 3.保存Bitmap
		try {
			File path = new File(SaveImageFilePath);
			String imagepath = SaveImageFilePath + "/Screen_" + ".png";//保存图片的路径
			File file = new File(imagepath);
			if (!path.exists()) {
				path.mkdirs();
			}
			if (!file.exists()) {
				file.createNewFile();
			}

			FileOutputStream fos = null;
			fos = new FileOutputStream(file);
			if (null != fos) {
				//imageBitmap.compress(format, quality, stream);
				//把位图的压缩信息写入到一个指定的输出流中
				//第一个参数format为压缩的格式
				//第二个参数quality为图像压缩比的值,0-100.0 意味着小尺寸压缩,100意味着高质量压缩
				//第三个参数stream为输出流
				imageBitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
				fos.flush();
				fos.close();
				Toast.makeText(this,"图片已经已保存至"+SaveImageFilePath,Toast.LENGTH_LONG).show();
			}

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

	/**
	 * 获取SDCard的目录路径功能
	 */
	private String getSDCardPath() {
		String SDCardPath = null;
		// 判断SDCard是否存在
		boolean IsSDcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
		if (IsSDcardExist) {
			SDCardPath = Environment.getExternalStorageDirectory().toString();//SD卡的路径为: /mnt/sdcard			
		}
		return SDCardPath;
	}
}

相关文章
|
7月前
|
存储 监控 芯片
格式化后的SD卡照片还能恢复吗?
SD卡是日常生活中常见的存储介质,广泛应用于数码设备。如果不慎格式化了SD卡,特别是包含重要照片的卡,不必过于焦虑。快速格式化的照片恢复可能性较大,因为数据并未真正清除。要恢复丢失照片,首先检查是否有备份,有的话直接从备份还原。若无备份,可以使用数据恢复软件尝试恢复,但效果因情况而异。专业数据恢复服务也是选择,但成本较高。在恢复过程中,避免继续使用SD卡,尽早采取措施,选择合适的恢复工具,以提高恢复成功率。
文件或目录损坏且无法读取|4-17
文件或目录损坏且无法读取|4-17
|
5月前
|
存储 安全 数据安全/隐私保护
U盘无法读取怎么办?原因与解决方法都在这里
U盘是常用的便携式存储工具,但有时会出现无法读取的问题。硬件方面,接触不良或U盘损坏都可能导致此现象,此时应检查接口或U盘本身。软件问题包括驱动故障、文件系统错误及病毒感染,解决方法有更新驱动、格式化U盘(注意备份数据)和使用杀毒软件。预防措施包括定期备份数据和正确使用U盘。若需恢复数据,可尝试数据恢复软件或寻求专业数据恢复服务。
U盘无法读取怎么办?原因与解决方法都在这里
|
4月前
|
Windows
【编程笔记】解决移动硬盘无法访问文件或目录损坏且无法读取
【编程笔记】解决移动硬盘无法访问文件或目录损坏且无法读取
55 0
|
5月前
保存本地的一张图片到sd卡中
保存本地的一张图片到sd卡中
65 1
|
6月前
u盘无法被自己的电脑上读取
u盘无法被自己的电脑上读取
39 7
插入SD卡,复制粘贴不了,原来是这个原因造成的
插入SD卡,复制粘贴不了,原来是这个原因造成的
495 0
插入SD卡,复制粘贴不了,原来是这个原因造成的
SD卡相关
SD卡相关
50 0
win10开机壁纸保存的路径
win10开机壁纸保存的路径
139 0
win10开机壁纸保存的路径