2010年11月24日水曜日

カメラをintentで外部起動して、指定した場所に保存してもらう

最近はゲームはさておき、自分がほしいな。 っていうツールを作るのでいっぱいいっぱいです。 kszです。

今は可逆モザイクアプリを作ろうと思っているんだけども、当然元の画像はギャラリーから持ってきたり、カメラから取得しなきゃなので、調べつつつくっていたんですが、ハマりまくりました。

まず、カメラから戻ってきた(onActivityResultの引数の)Intent の data には縮小した画像が入ってしまうということ。
これはIntentに受け渡せるデータ量の上限が決まっているかららしい。 まずこれで1ハマリ。

ではでは、EXTRA_OUTPUT で、urlを指定して、指定した場所に保存をしてもらおう。と。
具体的には
putExtra(MediaStore.EXTRA_OUTPUT, [ここに保存してほしい場所をurlで]);
ふむ。

逆を言えば、何か外部からグローバルのintent呼び出しを自分のアプリがうけた場合は、このEXTRA_OUTPUTが入っていた場合はそこに保存するようにしなきゃって事ですよな。

それはさておき。
では、それでonActivityResultで受け取ろうーって思ったんだけど、
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 String url = data.getStringExtra(MediaStore.EXTRA_OUTPUT);
//↑で受け取ったurlから画像ファイル読み込み処理をここから下に
}

ってやったら、ヌルポが飛ぶ。 何が!? って調べると、そもそもIntent data のdataがnull。
EXTRA_OUTPUTを指定しちゃうと、戻りのIntentがnullになる・・・。 んですか・・・?

腑に落ちねぇ・・・。

0 件のコメント:

コメントを投稿