只有状态正常情况下才可以执行保存文件的操作 。获取外部存储状态同样是通过Environment类,通过Environment.()可以得到一个字符串,来表示外部存储的状态 。
同时在Environment类中定义了一系列的String常量表示不同的状态 。在所有的状态中只有内部存储处于Environment.MEDIA_MOUNTED状态时才可以读写文件,因此,需要将获取到的状态和Environment.MEDIA_MOUNTED做比较,如果不是Environment.MEDIA_MOUNTED状态,就返回保存失败 。
示例如下 。[java] view plain copy//获取内部存储状态 String state = Environment.(); //如果状态不是mounted,无法读写 if (!state.equals(Environment.MEDIA_MOUNTED)) { return; } 确定文件名 保存的图片文件名可以由应用根据自身需要自行确定,一般来说需要有一个命名规则,然后根据命名规则计算得到文件名 。
这里列举几种常见的命名规则 。随机命名 这种命名规则是随机生成一个字符串或一组数字来对图片命名 。
字符串可以通过UUID来生成,数字可以通过Random()类来生成,例如:[java] view plain copy//通过UUID生成字符串文件名 String fileName1 = UUID.randomUUID().toString(); //通过Random()类生成数组命名 Random random = new Random(); String fileName2 = String.valueOf(random.nextInt(Integer.MAX_VALUE)); 这种命名规则是按照数字从小到大的顺序来对图片命名 。在程序启动时先获取图片文件名中当前最大数字的文件名,之后每保存一张图片就将数字加1即可 。
时间命名 这种命名规则是根据保存图片的当前系统时间来对图片命名 。系统时间可以通过System.currentTimeMillis()来获取,不过System.currentTimeMillis()获取到的时间是一个long型的整数,如果用它做文件名,无法通过文件名直接看出文件的具体保存时间 。
可以通过SimpleDateFormat先对当前时间做格式化,然后再将其作为文件名来使用 。例如:[java] view plain copy 使用这种命名规则来命名需要注意的是同一秒钟可能会有多张图片需要保存,在 。
4.Android 往文件夹写入图片步骤:
1、AndroidManifest.xml中配置SD卡写权限
2、java代码往SD卡写入图片信息
public static void saveBitmapToFile(Bitmap bitmap, String _file)
throws IOException {BufferedOutputStream os = null;
try {
File file = new File(_file); //新建图片
int end = _file.lastIndexOf(File.separator);
String _filePath = _file.substring(0, end); //获取图片路径
File filePath = new File(_filePath);
if (!filePath.exists()) { //如果文件夹不存在,创建文件夹
filePath.mkdirs();
}
file.createNewFile(); //创建图片文件
os = new BufferedOutputStream(new FileOutputStream(file));
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); //图片存成png格式 。
} finally {
【android本地路径怎么写】if (os != null) {
try {
os.close(); //关闭流
} catch (IOException e) {
Log.e(TAG_ERROR, e.getMessage(), e);
}
}
}
}
5.Android开发,图库获取图片路径public class TestCameraActivity extends Activity implements OnClickListener{ private Uri mOutPutFileUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button takePiCButton = (Button) this.findViewById(R.id.button1);
takePiCButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
- javaftp获取文件路径怎么写
- html获取本地路径怎么写
- android选择器怎么写
- linuxftp访问路径怎么写
- android重置按钮怎么写
- android项目描述怎么写
- 魔兽盒子怀旧服安装路径错误 魔盒怀旧服找不到路径
- 安卓span怎么写
- jsp中绝对路径怎么写
- android聊天框怎么写