發表文章

目前顯示的是 1月, 2018的文章

Xamarin : Android 取得媒體儲存裝置 retrieve emulated or removable storage path

圖片
這是一個很觀念的問題,其實android對於儲存位置的概念跟Windows是不一樣的。 我們所知的 Windows 的儲存媒體,通常都會是以『磁碟機』(Device)概念呈現的,每個 Device 都會被賦予一個『磁碟機代號』(Device Letter),像是 『C:\』『 D:\』 等等。 但是除了 Windows 以外的世界,基本上會是用『路徑』來呈現,由其 Android 的 Dalvik 系統本身就是 java 的支線,所以儲存空間會像是 『/Storage/dev0』『/Storage/dev1』之類的呈現法。 瞭解了以上的概念之後,再來瞭解 Android 對於儲存空間的認定。 一般我們在看儲存位置的時候,直覺上會把手機的儲存空間分為『內建』『內部』『外部』『擴充』等等的用法,因為 Android 有分為內建記憶空間和一個可以擴充的 SD 卡(或是TF卡)。 而我們程式在開發時相關文件都會去 Google 找類似 Internal 或是 External 類的單字搜尋,但實際上找到的文件範例基本上都會牛頭不對馬嘴,最大的原因應該會出在 Android 開發團隊對於這種一般人認定的常規式用法式有很大出入的。 Android 對於內建記憶空間和擴充的SD卡認定如下: Emulated - 內部記憶空間,用的單字是『仿真』,而不是 Internal (內部),是因為 Android 真正內部記憶體指的是ROM,也就是作業系統OS存在的地方,而ROM本身不能經常寫入,因為有寫入壽命限制,但是作為一個作業系統難免會有許多設定或變更或紀錄,那這樣要存在哪裡呢?事實上, Android 手機真正可以讀寫的內建空間其實也是一個 SD 卡,指是手機製造商會在手機裡面直接燒上SD的儲存晶片作為內建儲存空間,凡是OS以外的程式APP或是紀錄都會存在此處,所以把這種內建 SD 記憶體稱為『仿真記憶體』。 Removable - 擴充的記憶體(SD卡或TF卡),這被稱為『可移除式』媒體,名字簡而易瞭,代表這記憶體可以被移除或是安插。 External - 而這個『外部』的意思就是泛指除了 OS 的 ROM 之外的都會稱為 External,所以上面兩個『Emulated』、『Removable』都算在 External 下面。而 Ext

Xamarin : Android : FilePicker 檔案瀏覽

圖片
其實這是用來搞懂 這一篇  Browse Files - Xamarin 範例則來自 GitHub 的 mgmclemore 收集的  A collection of Xamarin.Android sample projects 由於 android 瀏覽檔案時沒有像 Windows 一般有『現成』的檔案瀏覽介面(SHELL)可以使用,所以就非常麻煩的必須自己去作出像檔案瀏覽器一樣的介面。 而且 Xamarin 開發的介面中也沒有可以直接使用的元件,所以這完全必須依賴外部套件才有辦法作出來。 這個套件引用了 Xamarin.Android.Support.v4 這個套件,所以必須先到NuGet去下載這個套件到專案內。