最新の記事アプリケーションアクティビティ、インテント、サービスについてデバイスAndroidでのデバイス制御について。地磁気センサ、加速度センサなどマルチメディアグラフィックス、音楽や動画再生などマルチメディア処理についてユーザインターフェースAndroidのユーザインターフェイスについて、またユーザインターフェイスを提供するコンポーネントの話題について。リソースAndroidでのアイコン、画像、文字列、ローカライゼーションなどHacksマッシュアップ開発環境Androidの開発環境など。項目において、NDKのセットアップとサンプルの実行方法を紹介しました。今回は、実際にNDKを使用する手法を紹介します。Sampleとして作成するのは、用意した画像データからRedの色データを消去するものです。1ピクセル毎に処理が必要になるため、Nativeで処理を行うことで高速化を狙っています。詳細な実装方法は続きをご覧ください。(ヘッダファイル)の追加NativeSourceの追加JavaSourceでのStaticLibraryの呼び出し以上の4点が必要です。追加するファイルの場所等は以下、今回のプロジェクト構成を参考にしてください。Android.mkとApplication.mkAndroid.mkとApplication.mkを作成します。これらは一から作成するよりは、既存のサンプルプロジェクトからコピーしてくるのがよいと思います。コピーし作成しました。コピーしてきたものを修正します。$(BUILD_SHARED_LIBRARY)LOCAL_SRC_FILESにはソースコードを指定、LOCAL_MODULEにはモジュール名(任意)を指定します。android-8同じ様に、赤字が修正箇所です。Androidのプラットフォームバージョンを指定します。先にJavaソースコードにおいて、native-Methodを記述することでヘッダファイルをコマンドから作成することができます。以下の様にLibraryの呼び出し部分を記述します。ここで引数に渡す値は、LOCAL_MODULEに指定した値と同じにしておきます。......次に、native-Methodを記載します。今回は、bitmapのピクセルデータをNativeへ受け渡すため、int-arrayを引数に持っています。y);最後に、Methodの呼び出し部分を記載します。リソースから取得したBitmapオブジェクトを複製し、(AndroidはデフォルトではRGB_565を使用しています)ピクセル毎のintデータを作成、Native-Methodへ受け渡します。その後、初期データと改変後データを並べて表示しています。}ヘッダファイルの作成ヘッダファイルの作成を行います。#win環境では、cygwinを用いて下さい。対してPATHを通す必要があるかもしれません。プロジェクトのトップディレクトリ(Eclipse-workspace/<Project名>/)において、以下コマンドを実行することで、ヘッダを作成することができます。org.jpn.techbooster.sample.nativesample2.Main変更が必要な部分はheader名と、最後の引数です。クラスにあるNative-Methodを探しに行ってね!という意味合いです。これで、jniフォルダにヘッダが作成されています。NativeCodeを記述する最後に、Native部分を実装します。記載したファイルを作成します。内部のソースコードは以下の通りです。h){jniヘッダは必ずincludeする必要があります。関数の名称ですが、作成したヘッダファイルからコピーし、作成します。#また、自作した引数の他に2つ引数が増えていますが、JNIの仕様だと思ってください。#詳しくはJNIについて調べると良いです。0);}以下二行に関しては、JNIでの特殊な書き方になります。対になっており、cでのmalloc-freeと同様に、使用後は必ずReleaseするようにします。0);残りの部分はRGB_565に則り、各色のデータを取得し、Redデータのみを返さない様な形で実装しています。NativeCodeをコンパイルするNativeのソースコードの記述が終了したら、コンパイルをします。以下コマンドを実行することで、コンパイルが可能です。&lt;/div&gt;&lt;div&gt;$ndk-build&lt;/div&gt;&lt;div&gt;無事にコンパイルエラーが出ないことを確認し、Eclipseにおいて、Refreshを実施した後に、実行してください。ファイル等を管理していません。#コマンドラインから追加された各ファイルを読み込ませる為に必要です。関連する記事:NativeActivityクラスを用いたアプリケーションを実行する。NDKを使う(アプリの高速化)Rubyで作るAndroid〜Rhodesの開発環境構築〜Applicationクラスを継承して、データの共有をする。2.0(β)に対応した解説書です。TechBooster.TechBoosterについて。