[英]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.