Posts Tagged ‘NDK’

AndroidをC++のSTLで開発する

7 Comments »

みなさんこんにちは

今までAndroid NDKを使用してAndroidアプリをC言語やC++で開発できることを紹介してきました。ここではもう一歩踏み込み、C++のSTLが使用できるか試してみたいと思います。

STLについては以下を参考にしてください。

http://ja.wikipedia.org/wiki/Standard_Template_Library

今回はSTLportを使用したいと思います。Android用にカスタマイズされたSTLportが開発されたためです。これは標準のSTLに比べ効率的で、スレッドセーフで標準には含まれていないハッシュマップなども使用できます。

ではいってみましょう。
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でモザイク画像を作ってみる」のモザイク処理や他の画像処理も高速化出来ると思います。皆さんぜひやってみてください。

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


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 »