自社製ミドルウエアをDalvikと連携させることが可能になる

Slides:



Advertisements
Similar presentations
Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部.
Advertisements

ゲームプログラミング講習 第2章 関数の使い方
サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
公共財 公共経済論 II no.3 麻生良文.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
Future Technology活用による業務改革
Autonomic Resource Provisioning for Cloud-Based Software
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
Remote Method Invocation
クローズドソースアプリから、GPLソフトを使うには
コンパイラ 2011年11月14日
ROBOMEC2007チュートリアル RTミドルウエア講習会
東京工科大学 コンピュータサイエンス学部 亀田弘之
ネットワークプログラミング論 平成27年10月12日 森田 彦.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
Androidソースコード公開後のJNI
第20章 Flyweight ~同じものを共有して無駄をなくす~
ネットワークプログラミング論 平成28年10月17日 森田 彦.
アルゴリズムとデータ構造 2011年6月20日
2014/05/02 知的画像処理研究室 M1 中津美冴 画像情報処理1 ~画像処理プログラミング~ 2014/05/02 知的画像処理研究室 M1 中津美冴
RMI ソフトウェア特論 第6回 /
コンパイラの解析 (2) GCJのデータ構造 - 1.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
Java Distributed Objects 1
UDPマルチキャストチャット                    空川幸司.
独習Java ・ 8.1  例外処理 ・ 8.2  catch ブロックの検索  12月 5日    小笠原 一恵.
FlexとBison+アルファ -実習編-
コンパイラの解析 (3) クラスとインスタンスの初期化.
EclipseでWekaのAPIを呼び出す
Java Bytecode Modification and Applet Security
コンパイラ 2012年11月12日
WinUnit お気楽お手軽 UnitTest
WinUnit お気楽お手軽 UnitTest
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
東京工科大学 コンピュータサイエンス学部 亀田弘之
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
さまざまなプログラミング言語, オンライン開発環境
cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門)
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
モジュール分割.
アルゴリズムとデータ構造 2012年6月21日
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
Presentation transcript:

自社製ミドルウエアをDalvikと連携させることが可能になる AndroidをJNIするメリット 自社製ミドルウエアをDalvikと連携させることが可能になる lib××

たとえば Android体重計を作る場合 Linuxのミドルウエアとして実装されている体重計制御プログラムをJavaからたたけるようにする。

adbでso形式ファイルをpushしandroidに登録 JniによるNative連携 Javaコードを作成 JavaコードをBuild javahでJni用ヘッダーを作成 Cコードを作成 Cコードをコンパイルしリンク adbでso形式ファイルをpushしandroidに登録

ライブラリのロード Jniインターフェース Javaコードの作成 com.gclue.android.ET2008.NativeAdd.java package com.gclue.android.ET2008; import android.util.Log; public class NativeAdd { static { try { System.loadLibrary("NativeAdd"); } catch (Throwable e) { Log.e("TestJNI", e.toString()); } public native int readRfcomm2(byte[] array); ライブラリのロード Jniインターフェース

JavaコードをBuild NativeAdd.java javac NativeAdd.class

com_gclue_android_ET2008_NativeAdd.h javahでJni用ヘッダーを作成 NativeAdd.class javah public native int readRfcomm2(byte[] array); com_gclue_android_ET2008_NativeAdd.h javah -classpath C:\android_seminar\ET2008\bin com.gclue.android.ET2008.NativeAdd

javahでJni用ヘッダーを作成 com_gclue_android_ET2008_NativeAdd.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_gclue_android_ET2008_NativeAdd */ #ifndef _Included_com_gclue_android_ET2008_NativeAdd #define _Included_com_gclue_android_ET2008_NativeAdd #ifdef __cplusplus extern "C" { #endif /* * Class: com_gclue_android_ET2008_NativeAdd * Method: readRfcomm2 * Signature: ([B)I */ JNIEXPORT jint JNICALL Java_com_gclue_android_ET2008_NativeAdd_readRfcomm2 (JNIEnv *, jobject, jbyteArray); #ifdef __cplusplus } #endif #endif

Cコードを作成 com_gclue_android_ET2008_NativeAdd.c #include "com_gclue_android_ET2008_NativeAdd.h" #include <stdio.h> #include <sys/file.h> JNIEXPORT jint JNICALL Java_com_gclue_android_ET2008_NativeAdd_readRfcomm2 (JNIEnv *env, jobject object, jbyteArray array) { /* 処理を記述 */ return 1; }

com_gclue_android_ET2008_NativeAdd.cをコンパイル com_gclue_android_ET2008_NativeAdd.h arm-none-linux-gnueabi-gcc.exe LinuxのJavaのフォルダのinclude以下 を使用。 com_gclue_android_ET2008_NativeAdd.o arm-none-linux-gnueabi-gcc.exe -I.\include -I.\include\linux -fpic -c com_gclue_android_ET2008_NativeAdd.c arm-none-linux-gnuebi-gccは、下記URLよりダウンロード。 http://www.codesourcery.com/gnu_toolchains/arm/portal/subscription?@template=lite

arm-none-linux-gnueabi-ld.exe リンク arm-none-linux-gnueabi-ld.exe -T armelf_linux_eabi.xsc -shared -o libNativeAdd.so com_gclue_android_ET2008_NativeAdd.o armelf_linux_eabi.xsc はarm-none-linux-gnuebi-gcc, arm-none-linux-gnuebi-ldをインストールしたフォルダの「\Sourcery G++ Lite\arm-none-linux-gnueabi\lib\ldscripts」に格納されている。

com.gclue.ET2008.NativeAdd.class com_gclue_android_ET2008_NativeAdd.h 生成したファイル com.gclue.ET2008.NativeAdd.java com.gclue.ET2008.NativeAdd.class com_gclue_android_ET2008_NativeAdd.h com_gclue_android_ET2008_NativeAdd.c com_gclue_android_ET2008_NativeAdd.o libNativeAdd.so

libNativeAdd.soを/system/libに登録 Androidへ登録 libNativeAdd.soを/system/libに登録 libNativeAdd.so /system/lib adb push libNativeAdd.so /system/lib

Javaから呼び出し NativeAdd lib = new NativeAdd(); int len; byte[] buf = new byte[1024]; len = lib.readRfcomm2(buf);