Archive for 3月, 2010

ContentResolverで画像を読み込む

No Comments »

ついにauからもandroidケータイが発表されました。
以下にきれいなお姉さんとともに紹介されています。
ついにZAURUSやNetWalkerの理想が実現、au初のAndroidスマートフォン「IS01」の実機ムービーいろいろ – GIGAZINE

んー。イイですね!

さて。今回は以前SDカードに画像保存をしましたが、読み込みをします。
ContentResolverでSDカードに画像保存 | Techfirm Android Lab

Read the rest of this entry »


CacheオブジェクトにはSoftReferenceを

5 Comments »

Android、いかがですか。
今日もOut Of Memory、出していますでしょうか。

そんなあなたに朗報です。
少しでもメモリにやさしいプログラムを。

今日はSoftReferenceのお話です。

Read the rest of this entry »


AndroidでCoverflow

No Comments »

高性能なAndroid™ 搭載スマートフォン「HTC Desire™」が登場~ソフトバンクモバイル初のAndroid™ 搭載スマートフォン~ | ソフトバンクモバイル株式会社

ついにsoftbankからもandroid端末が発売されます。国内初のAndroid OS2.1の端末です。
面白くなってきました。

さて。今回はAndroidでcoverflowを実現したサンプルコードを見つけたのでご紹介。

Interfuser: Android Coverflow Widget

上記リンク先記事の一番下にソースコードがzipで配布されています。

使い方はGalleryと同じ感覚で使えるようです。

このサンプルコードでは、Coverflow表示前にリソースを取得して、反射画像等もそのタイミングで生成してしまっているので、Nexus Oneで動作確認してみましたがサクサク快適です。

動的に画像読み込みする時は遅くなってしまいそうなので、工夫が必要か。


ContentResolverでSDカードに画像保存

No Comments »

pic

AndroidはOSもマーケットもオープンなので、将来的には他者に負けまいと各メーカー独自のAPIが用意され、マーケット側でも差別化のために独自のAPIが整備され、選択肢が増える反面、一括で対応するのはほぼ不可能になり、市場は細切れになっていくんだろうなぁという気がしているdaichi1128です。

さて、今回はAndroidのデータベースアクセスの肝になるContentResolverを使ったSDカードへの画像保存をやってみます。
目標はギャラリーに表示させるところまで。

Read the rest of this entry »


パフォーマンス向上に役立つ情報いろいろ

No Comments »

A3へ参加するためにアプリを作っていますが、なかなかパフォーマンスが出ずに苦労しています。
そこでいろいろ探しまわった所、パフォーマンス向上に役立つ情報をいろいろ見つけたのでご紹介。

Read the rest of this entry »


Android NDKを使用してJava言語とC言語で速度比較をする(画像処理編)

2 Comments »

こんにちはBig iguchiです。

前回の「Android NDKを使用してJava言語とC言語で速度比較をする」に引き続きAndroid NDKで遊んでみます。

今回はただ、計算するだけでなく少し実用的に画像の平均RGBを取得するコードをJavaとC言語で比較しようと思います。

まずは、ちょっと画像の説明。。。。

Androidの場合、画像データをBitmapで扱うことが多いのですが、このままだとC言語で扱いにくいので、「Bitmap.setPixel()をsetPixels()に変えたら3倍速くなったよ」でdaichi1128が言っているようにgetPixelsでint型の配列として色情報を取得します。以下になります。
bitmap.getPixels(pixels, 0, originalWidth, 0, 0, originalWidth, originalHeight);

getPixelsの第1引数にはbitmapの色情報がint型で以下のフォーマットで返ってきます。
0xFFFFFFFF

24~31ビット alpha
16~23ビット red
8~15ビット green
0~7ビット blue

つまり、以下のコードでピクセル毎にRGBカラーを取得できるということですね。

つぎに、配列をJavaからC言語に渡すときの説明。。。。

この処理をC言語で行いたいために、この第1引数のint配列をJavaからC言語に渡せればいいですね。方法は以下のようにしました。
・Java言語側

・C言語側

同様な処理をJavaでも記述して、前回と同様に実行してみました。

結果は以下になります。。。。

result
JavaとNativeで答えも一致してますね。海の画像を使ってみたんですがblueとgreenの平均値が高いのできちんと解析できてますね。そして速度もNativeの方がかなり早い。画像処理にもAndroid NDKは十分使えそうです。
これを応用すれば、「Androidでモザイク画像を作ってみる」のモザイク処理や他の画像処理も高速化出来ると思います。皆さんぜひやってみてください。

今回は以上となります。
海に行きたい。


アプリのメモリ警告を検知する

No Comments »

Application | Android Developers

アプリ内でのメモリが不足した場合、ApplicationクラスのonLowMemory()が呼ばれるようです。

Applicationクラスを継承したMyApplicationクラスを作成し、onLowMemory()を実装してみます。

これをアプリに登録します。
AndroidManifest.xmlのapplicationタグのandroid:name属性に完全修飾クラス名を指定。

これでメモリ不足になった時にキャッシュを開放などできるようになりますきっと。


Bitmap.setPixel()をsetPixels()に変えたら3倍速くなったよ

No Comments »

ずいぶん前に画像をモザイク風に加工するエントリを書きましたが、あれを少しいじったらだいぶ早くなりましたよ、というご報告です。

こんなコードでモザイク処理に350~360msくらいかかってました

Android開発でのパフォーマンスTips(1) | Techfirm Android Lab
を見直して、ループ前にgetterなどで参照する値はローカル変数にキャッシュしてみると、

310~320msになりました。
少しでも早くなると、テンションが上がる。

でもこのコードはまだまだ早くなれるはずだ。

今はループの中でbitmap.getPixelしてsetPixelして1ピクセル単位で読み書きしてるのでこれをガバッと一発で配列に取り出して、ループ内では配列を操作して、ループ後にsetPixelsで配列をセットするように変更してみる。

これだと、90~110msまで早くなった。

bitmap.getPixes()に引数は順番に
1.色の配列。int[]ここにピクセルデータが入ってくる
2.offset。int配列のどこから書きこむか。
3.謎
4.ビットマップのピクセルを読み始めるX座標
5.ビットマップのピクセルを読み始めるY座標
6.ビットマップの幅
7.ビットマップの高さ

ということなので、getPixelsの前にnew int[width * height]している。
Androidでは1ピクセルのカラー情報はintで表わすので、それを横×縦分の配列で受け取っている。

setPixelsはgetPixelsの逆。
第一引数のint配列をbitmap上のどこに書くかを指定する。

copyPixelsToBufferや copyPixelsFromBuffer の方が早いかもしれないがまだ試していない。
きっとBig iguchiがやってくれるに違いない。


Xperia™ Touch & Try Event at 銀座

No Comments »

3月6日から12日まで東京・銀座のソニービル8階で、一般ユーザーが発売前の「Xperia」を体験できるタッチ&トライイベントが開催されています。

s

公式ページ:http://www.sonyericsson.co.jp/product/docomo/so-01b/event/

R0010675
Xperia(TM) タッチ&トライの様子

PICTRHYTHM

PICTRHYTHM

PICT RHYTHM を実機を使って説明s中
PICT RHYTHM を実機を使って説明中

会場ではXperiaのタッチ&トライと同時に当社が開発している「PICT RHYTHM」の説明を行っています。

実際にXperia上での動作を見てください。HT-03A を使っている人であればさくさくと動く様子を見て驚くこと間違いなし!

気軽に PICTRHYTHM  をフォローしてください。

PICTRHYTHMをフォローしましょう


Android NDKを使用してJava言語とC言語で速度比較をする

17 Comments »

今回はAndroid NDKを使用して、JavaコードとC言語で記述されたNativeコードで速度の比較を行おうと思います。

まずはNDKをインストールします。以下のリンクからndkをダウンロードします。

http://developer.android.com/intl/ja/sdk/ndk/1.6_r1/index.html

ダウンロードしてきたら以下を実行しインストールします。
$(NDKROOT)/build/host-setup.sh

これでインストールが完了です。簡単ですね。

早速、Javaのコードを書いて速度比較していきましょう。

Read the rest of this entry »