[英]How to access /storage/emulated/0/
我编写了一个代码来录制音频并将其保存到以下文件位置。
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath, AUDIO_RECORDER_FOLDER);
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]);
}
在 Logcat 中,它给了我一个文件位置
/storage/emulated/0/AudioRecorder/1436854479696.mp4
我无法在我的 SD 卡上找到这个文件位置。 如何访问该位置?
我的 Android 6.0 允许我在不需要第三方应用程序的情况下浏览实习生内存。 我只是这样做*:
* 单词可能与标准英文版本不符,因为我只是随意从葡萄牙语翻译它们。
注意:至少在我的手机中, /storage/emulated/0
不是对应于 SD 卡,而是对应于intern memory 。 这种方法不适用于我的外置卡,但我从未在其他手机上尝试过。
希望这可以帮助!
您也可以使用Android Debug Bridge (adb)将文件从 Android 设备复制到 PC 上的文件夹:
adb pull /storage/emulated/0/AudioRecorder/1436854479696.mp4 <folder_on_your_PC_e.g. c:/temp>
您可以从设备的整个AudioRecorder
文件夹中复制:
adb pull /storage/emulated/0/AudioRecorder <folder_on_your_PC_e.g. c:/temp>
正如 Hiren 所说,您需要一个文件浏览器来查看您的目录。 如果你已经 root,我强烈建议你使用 root explorer,否则 ES File Explorer 是一个不错的选择。
插入您的设备并运行adb shell
,这将在您的设备上获得一个命令 shell。 您无权读取/storage/emulated/
但因为您知道它在子目录 0 中,只需转到cd /storage/emulated/0
就可以环顾四周并按方面进行交互。
注意:您也可以无线使用adb
尝试这个
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath + "/AudioRecorder" );
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp4");
}
在模拟器中,点击设置>存储>其他>Android>数据>com.companyname.textapp>文件>下载来查看这个文件。 在这里, textapp 是您正在处理的应用程序的名称。
https://productforums.google.com/forum/#!msg/nexus/WIcHUNQfRLU/ALpViG86AwAJ
昂贵的玩具先生说: 我很惊讶这个问题仍然出现,因为它早在 Honeycomb 就开始发生了。
因此,/storage/emulated/0/DCIM/Camera 与正常的 DCIM/Camera 文件夹是同一个文件夹。 它只是一个符号链接。 所以这些文件实际上位于正确的位置,您只是有一个将不良数据放入 MediaStore 数据库的应用程序。
从您的 PC 访问文件时,您实际上是在为文件枚举 MediaStorage 数据库。 它不是拉传统的目录列表。 因此,您看到的内容基于该数据库中的内容以及数据库中的路径条目。 数据库中指向模拟目录的文件不会显示,因为它们被认为是重复的,因为它与普通 DCIM/相机的物理目录相同。 正在发生的事情是,一些编写不佳的第三方应用程序正在使用 /storage/emulated/0/DCIM/Camera 路径而不是 DCIM/Camera 的正确根路径将条目插入到数据库中。 这意味着当您连接到 PC 时,MTP 服务无法看到它们。
通常解决问题的最简单方法是清除 MediaStore 数据库以从 MediaStore 数据库中取出错误条目,并让系统重新索引文件并以正确的路径放入数据库。
设置->应用点击右上角的 3 点菜单并选择显示系统查找媒体存储,选择它,选择存储,然后清除数据查找外部存储,选择它,选择存储,然后清除数据关闭手机,重新打开手机,等待索引器服务重建数据。
完成后,文件应该显示在正确的目录树中,并且可以从 PC 上看到。 根据手机上的文件数量,重建媒体数据库可能需要 10-20 分钟,因为服务会遍历手机目录、获取元数据、创建缩略图等。
在这里,它位于 /mnt/shell/emulated/0
Android 建议您在路径名中调用Environment.getExternalStorageDirectory.getPath()
而不是硬编码/sdcard/
。 这将返回主共享/外部存储目录。 所以,如果存储被模拟,这将返回/storage/emulated/0
。 如果您使用文件浏览器浏览设备存储,则所述目录将为/mnt/sdcard
(在运行 Android 6 的 Xperia Z2 上确认)。
试试从
ftp://ip_my_s5:2221/mnt/sdcard/Pictures/Screenshots
指向/storage/emulated/0
就我而言, /storage/emulated/0/ 对应于我设备的根路径。 例如,当我使用手机的默认相机应用程序拍照时,图像会自动保存/store/emulated/0/DCIM/Camera/mypicname.jpeg
例如,假设您想将您的图片存储在/Pictures 目录中,即根目录中存在的Pictures 目录中。 所以你使用下面的代码。
File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES );
如果要将图像保存在 DCIM 或下载目录中,请为上面显示的 Environment.getExternalStoragePublicDirectory() 方法提供以下参数。
Environment.DIRECTORY_DCIM
Environment.DIRECTORY_Downloads
然后指定您的图像名称:
String imageFileName = "JPEG_" + timeStamp + "_";
然后创建文件对象,如下所示。 您将后缀指定为第二个参数。
File image = File.createTempFile(
imageFileName, // prefix
".jpg", // suffix
storageDir // directory
);
如果您在 Mac 上的 Android Studio 中使用模拟器,您可以转到View -> Tool Windows -> Device File Explorer
。 在这里,您可以使用类似 finder 的结构。
要从 /storage/emulated/0/ 恢复您的图片,只需打开 100Andro 文件..在那里您将看到您的图片,尽管您可能无法在您的 PC 资源管理器中访问它们。 将每张图片一张一张打开,继续设置(三个点..)并保存图片。 它将显示在 android 文件“图片”中,您也可以使用资源管理器从中复制它们。 没有“全部保存”功能,因此必须一一完成,但它有效。
QT
使用设备文件资源管理器查看设备文件
https://developer.android.com/studio/debug/device-file-explorer
适用于 Xamarin Android
使用命令 //获取文件目录
Image image =new Image() { Source = file.Path };
然后在命令 adb pull //这里的图像文件路径
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.