2011年8月30日火曜日

AndroidでFile Selection Dialogの表示

Windowsアプリの開発経験者から見ると、どうしてもファイル選択ダイアログが欲しい所です。
色々調べたら、Androidの標準機能として装備する予定は、無いようです。

http://groups.google.com/group/android-developers/msg/20030f2e04d6250b

さらに調べたら、Intent.ACTION_GET_CONTENTをサポートしている他のアプリ/Activityを事前インストールし、Activityとして起動すれば良いことが分かりました。
自分で実装して見て、動作したのでサンプルコードを公開します。

1.エミュレータでテストする場合は、事前にAndExplorerをダウンロードします。
http://www.lysesoft.com/products/andexplorer/index.html

2.adbでAndExplorerをインストールします。
adb install AndExplorer.apk

3.javaのActivityサンプルを示します。
public class MyActivity extends Activity {
    private static final String TAG = "MyActivity";
    private static final int GET_CONTENT_REQUEST = 10;
    private ImageView myselect;
private String mypath;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // ファイル選択Activity起動
        myselect = (ImageView) findViewById(R.id.myselect);
        myselect.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO 自動生成されたメソッド・スタブ
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("vnd.android.cursor.item/vnd.google.note");
try {
startActivityForResult(intent, GET_CONTENT_REQUEST);
} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
}
return false;
}
});

        ...

    }

    // 選択ファイル名取得
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_CANCELED) {
    Toast.makeText(this, "File not selected", Toast.LENGTH_SHORT).show();
    return;
    }
    if (requestCode == GET_CONTENT_REQUEST) {
    mypath = data.getDataString();
    return;
    }
    }

}

この様なコーディングをするとAndExplorerで選択したファイルにチェックマークが付くように、GUIが変更されています。これが、Intent.ACTION_GET_CONTENTをサポートしているかどうかの差だと思います。
ちなみにmypathには、file:///のURI形式で格納されています。この形式で、音楽は再生できました。
AndExplorer以外に何が使えるか未調査です。(^^;

2011年8月27日土曜日

割り勘ノ助を公開しました

修行中の身では有りますが、Androidマーケットにデビューする事にしました。
取り敢えず、割り勘が頭に浮かんだので、割り勘電卓作ってみました。
https://market.android.com/developer?pub=Kazuaki+Kimura

シンプルな機能なので、職場の幹事さんには向いていないかもしれません。
急に、これから飲みに行こうと言う時に、役に立つアプリだと思っています。

よろしくお願いします。