在极客学院上看了一段时间的视频了,开始写了一些小demo 联系下,今天练习到了通过调用系统提供的 相机 程序,拍照后存储到手机上,这里就遇到了文件往哪存这个问题,这就需要先了解一下android系统的文件结构,由于Android是基于Linux内核的操作系统,所以在文件结构上也比较相似。
1.mnt挂载点目录
2.etc系统主要配置文件
3.system Android 系统文件
system 目录下面的主要文件目录下面也简单介绍一下:
1、usr用户文件夹,包含共享、键盘布局、时间区域文件等
2、app 常规下载的应用程序,这些apk包都是受保护的哦
3、lib 系统底层库,如平台运行时库等
4、etc系统的配置文件,比如APN接入点设置等核心配置等
5、framework Android 系统平台核心 framework 的文件
6、build.prop Android 系统属性配置文件
7、xbin常用开发工具,比如tcpdump/sqlite3 等
8、bin 系统工具,比如ps/cp/pm 等
4.sys Linux 内核文件
5.proc运行时文件
6.init.rc启动脚本
7.default.prop系统属性配置文件
8.data 用户程序目录
9.dev设备文件
SD卡中
- /mnt/sdcard或者/sdcard这是Android手机中SD卡的文件夹路径,其中/mnt/sdcard/是android 2.2或更高版本所使用的,而/sdcard是android 2.1或早期版本的存储卡位置。
- /mnt/sdcard/DCIM或/sdcard/DCIM这个DCIM文件夹是干什么用的,一般数码相机都有DCIM文件夹,其中进入后Camera为手机摄像头拍摄的照片或视频存放位置。同时在DCIM文件夹中还有.thumbnails这个目录,在Linux中开头为“.”的文件夹就是开头为“点”的文件夹是隐藏目录,这里面记录着手机SD卡图片的缩略图。
- /mnt/sdcard/LOST.DIR或/sdcard/LOST.DIR这个LOST.DIR为SD卡扫描时发现的丢失文件,里面的文件用处不大,可以不用理会。
所以我们在存储媒体文件时,可以将路径设置为/mnt/sdcard/DCIM 下。
关键代码
//设置intent启动的应用为android系统camera
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//f为你创建的一个file,也就是之后保存图片的位置我设置的
//f路径为 /mnt/sdcard/DCIM/当前时间.jpg
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(i,REQUEST_CODE_GET_PHOTO);
然后设置onActivityResult,这是传回的 data为空,还可以尝试另一种方法
不给intent设置 EXTRA_OUTPUT 属性,而是对onActivityResult返回的data进行操作。
`