在 Android Maket 上有一套 App 叫 AndSMB 可以瀏覽網芳的目錄 , 但僅能做到直接下載到手機上才能進行檔案讀取 , 而且下載的速度挺慢的 , 在我的 Samsung S2 手機大概只能達到每秒 1M Bytes 下載 , 我猜測是因為大部分的手機的 Linux 核心都沒有把 cifs 的驅動程式裝進去 , 所以只能透過 App 本身連接網芳 Server 後由 App 處理網芳的封包 , 因此效率很慢
而最近有在試試不同的 Rooted Kernel , 大部分都有支援 CIFS , 這個 CIFS 就是網芳的驅動 , 透過核心直接支援 , 就可以直接將網芳的目錄掛載成手機內的目錄(Linux 叫掛載 mount) , 如果熟悉 Android 開發工具應該知道如何用 adb 進入手機內直接下 mount 命令就可以達成 , 但這樣太麻煩了
於是最近有稍為搜尋一下 , 有找到一套叫 cifsmanager 的 app ,market 上可搜尋的到 , 這個 App 就可以輕鬆設定要連接的 server 及掛載的目錄
要讓 Cifs manager 能夠正常的運作 , 有以下準備工作
- 手機的 Kernel 核心 , 必須要具備可取得最高權限 , 也就是 root
- Kernel 必須支援 cifs , 通常會有個叫 cifs.ko 的檔案放置於 /lib/modules 或 /system/lib/modules , 視手機而定
- 要上 market 下載 cifs manager 準備好 (https://market.android.com/details?id=ws.plattner.cifsmanager)
- 先在自己的手機 /sdcard 下建立一個叫 cifs 的目錄 , 後面設定時需要用到
我以我的 Samsung S2 手機為例子 , 用圖解的方式來說明設定法
步驟一. 開啟 cifs manager , 並點選手機的 Menu 按鍵出現選單後 , 點選 Add New Share
步驟二 .必須填入你的網芳所開的共享相關資料
這裡需要稍作說明
- Share Path 代表網路芳鄰的目錄 , 這邊要去掉前面兩個 / , 本來應該是 \\192.168.xx.xxx\sharename , 這邊要換成 192.168.xx.xxx/sharename , 注意斜線要改為正斜
- Mount Point 代表要將該網芳的共享目錄掛載到本機(手機) 中的目錄 , 這種方式是 Unix 的方式 , 在 Windows 上大部分可能都是掛載成網路磁碟
- Options 則是額外選項 , 其實就和 Linux 下的 mount 指令要下的額外參數一樣 , 這邊我加上了 iocharset=utf8 以支援中文 , 可能有些時候 utf8 未必有效 , 是因為網芳那台 Server 跑的可能是老系統或是以 cp950 的編碼來跑 , 所以若 utf8 不行 , 改成 cp950
一切就序後就按 Save Share 將此設定儲存
步驟三. 當完成步驟二後就會看到剛剛所建立的設定 , 在上面點一下會自動連線 , 但若出現任何錯誤訊息 , 可能是設定錯誤 , 那麼就要長按該設定跑出如下圖的選單 , 可以進行修改
若連線成功則會像下圖一樣 , 有綠色燈號出現
如果到目前為止都順利 , 那麼就可以用手機上的檔案管理軟體進入 /sdcard/cifs/win2003 下 , 就可以對該目錄下的檔案直接操作了 , 根據測試 , 直接透過這種方式播放 1080P 的片子 , 一點也不會 lag , 當然前提是 wifi 要穩定啦 , 這樣很方便 ~ 躺在床上隨時都可以看自己所收集的片子了
問題排除
若在步驟三要連線的時候 , 百般檢查設定沒錯 , 但仍發生發生錯誤 , 八成是因為這軟體沒辦法將 cifs 驅動掛載進去 , 此時點選 Menu 按鈕出現步驟一的選單 , 並且點選 Setting 來看看 , 以下是我的畫面
上圖中 , 我將 Load cifs module 和 load via insmod 打勾 , 讓開機時就嘗試將驅動載入 , 而比較重要的第三個選項 Path to cifs.ko 則是 cifs 驅動的檔案路徑 , 如果這個路徑有問題 , 當然就無法去載入 cifs 驅動 , 因此這個檔案到底在那裡 , 請用 root explorer 之類的檔案管理器去 /lib/modules 或 /system/lib/modules 找看看 , 若找的到 , 就修改成正確路徑 , 然後就可以重新試試看步驟三能不能正確的將網芳目錄掛進來了
最後 , 希望大家愛惜眼睛與身體 , 不要在床上看有的沒的