2012.03.21
【Android SDK】Sambaでファイルを取得する
私はなんでこんなことをしているのでしょう。
Androidのメインファイラーとしては「ESエクスプローラ」を使っている。
Link:ES ファイルエクスプローラー - Google Play の Android アプリ
これのSamba機能が唐突に動かなくなりました。
「File Expart」というアプリではちゃんと見れている。
Link:File Expert - Google Play の Android アプリ
何かしらsamba周りがおかしいんだろうけどよくわからず。
なら自分で作ればいいんじゃね?ということでSambaをAndroidで実装できるかを調べてみたいと思います。
まず標準ではsamba機能はないらしい。
なのでライブラリを探してみる。
Android SDKはJavaなので「Java版sambaがあればいいんじゃない?」という感じで
探していたらさっくり見つかりました。
JCIFSというのでできるらしいです。
Link:JCIFS
プロジェクトを作り、JCIFSのjarをリンクする。
これで呼び出し準備完了。
実質の読み出しはこんな感じ。
sfis = new SmbFileInputStream("smb://(ユーザー名):(パスワード)@(IPアドレス)/(内部パス)"); BufferedReader br = new BufferedReader(new InputStreamReader(sfis));
これだけでもうWindowsにあるファイルが読めるようになります。
InputStream継承なので読み込み部分を変換するだけで
いろんなアプリにも対応できるようになっている。
いや~、すばらしい。
すごく便利なので製品に使うとしたらライセンスはどうなのということで調べてみた。
JCIFSはLGPLライセンスらしい。
Link:GNU Lesser General Public License - Wikipedia
要約するとこんな感じでしょうか?
・製品版として出すのであればソースコードの公開
製品として使うのであればちょっといやな仕様ですね。
個人的なプログラムであればJCIFSはありですね。
しかし、GooglePlayとかにあげるアプリではソース公開が必要っぽいので
抵抗がある人は自作するかほかのライブラリを探したほうがよさそうです。
Android SDK逆引きハンドブック 中西葵 内村祐之 高橋良司 シーアンドアール研究所 2011-04-25 |
関連記事