/storage/emulated/0/Movies
(内部存储)或 /storage/extSdCard/Movies
(外部 SD 卡),可通过环境变量 EXTERNAL_STORAGE
获取根目录路径。Android视频存储路径详解
一、内部存储(Internal Storage)
1、特点:
位于系统中很特殊的位置,文件默认只能被应用本身访问到。
一个应用所创建的所有文件都在和应用包名相同的目录下。
当应用卸载后,内部存储中的文件也会被删除。
空间有限,是系统和系统应用程序主要的数据存储所在地。
2、存储路径:
一般在data/data/<包名>/
目录下的文件。
二、外部存储(External Storage)
1、特点:
早期设备中,机身固有存储被视为内部存储,而扩展的T卡被视为外部存储,但在后来的设备中,很多中高端机器将机身存储在概念上分成了“内部”和“外部”两部分,其实都位于手机内部。
外部存储通常指的是可以像U盘一样移动的存储介质,如micro SD卡插槽插入的SD卡,但现在很多设备不再配备这样的插槽。
2、存储路径:
对于内置存储卡(即机身内存的一部分),路径通常是/sdcard根目录/Android/data/<包名>/
下的文件。
对于外置SD卡,路径需要通过专门的工具或方法获取。
三、Android Q及更高版本的变化
1、特点:
Android Q(API级别29)引入了新的存储机制,对外部存储的访问进行了限制,以增强用户隐私和数据安全。
应用只能访问特定的共享目录,如Environment.DIRECTORY_DCIM
、Environment.DIRECTORY_PICTURES
、Environment.DIRECTORY_MOVIES
等,或者应用私有的外部存储目录。
2、存储方式:
使用ContentResolver
进行insert数据时,会返回一个uri,然后通过这个uri打开输出流再将图片或视频数据存入。
图片或视频保存的目录通过MediaColumns.RELATIVE_PATH
字段指定。
四、视频存储路径的选择建议
1、根据应用需求选择:
如果视频是应用内部的私有数据,且不希望被其他应用访问,可以选择存储在内部存储中。
如果视频需要与其他应用共享或需要在应用之间传输,建议存储在外部存储的共享目录下。
2、考虑存储空间:
内部存储空间有限,如果视频文件较大,可能需要考虑存储在外部存储中。
外部存储通常具有更大的空间,但需要注意检查SD卡是否存在并已挂载。
3、权限管理:
在操作外部存储时,需要添加相应的权限声明,如WRITE_EXTERNAL_STORAGE
和MOUNT_UNMOUNT_FILESYSTEMS
。
从Android 6.0(API级别23)开始,还需要在运行时动态请求这些权限。
五、相关问题与解答
1、问题:如何在Android中检测SD卡是否存在并已挂载?
回答:可以使用Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
方法来检测SD卡是否已挂载,还可以通过遍历getExternalSdPath(context)
返回的路径列表来判断特定路径的SD卡是否存在。
2、问题:Android Q及更高版本中如何保存视频到共享目录?
回答:在Android Q及更高版本中,可以通过ContentResolver
插入数据到共享目录,首先创建一个包含必要信息(如标题、显示名称、日期、MIME类型等)的ContentValues
对象,然后使用context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values)
方法插入数据,这将返回一个uri,接着可以通过这个uri打开输出流并将视频数据写入。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1618947.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复