<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www42.atwiki.jp/melodroid/">
    <title>Android勉強用まとめページ</title>
    <link>http://www42.atwiki.jp/melodroid/</link>
    <description>Android勉強用まとめページ</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-07-26T01:43:41+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/27.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/1.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/2.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/15.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/22.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/20.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/26.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/23.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/25.html" />
                <rdf:li rdf:resource="http://www42.atwiki.jp/melodroid/pages/24.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/27.html">
    <title>カーネル関係メモ</title>
    <link>http://www42.atwiki.jp/melodroid/pages/27.html</link>
    <description>
          </description>
    <dc:date>2010-07-26T01:43:41+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/1.html">
    <title>トップページ</title>
    <link>http://www42.atwiki.jp/melodroid/pages/1.html</link>
    <description>
      *Android勉強用に作成したwiki


**直近の目標
-分かりにくくなったので、構成見直し中・・
--メモ帳っぽくしよう。。
-カーネル関連は、[[Linux勉強用まとめページ&gt;&gt;http://www36.atwiki.jp/melodie/]]に退避する？→カーネル関係もこっちに。
-Eclair環境も基本的に、Cupcake対応で問題なさそう
--電源周りの修正は変わってるので、どっか参照したほうがよい
--そのままだと、ビルドエラーがあるので、パッチ必要


**お知らせ
-Armadillo-500 FX用開発環境の追加ファイルの部分が抜けてました（9/28修正）
--まだ抜けてるかもしれない
-10月3日  山口県宇部市での資料が[[Androidの会&gt;&gt;http://android.siprop.org/index.php?%A5%EF%A1%BC%A5%AD%A5%F3%A5%B0%A5%B0%A5%EB%A1%BC%A5%D7%2F%C3%E6%B9%F1%BB%D9%C9%F4%2F%C2%E8%A3%B5%B2%F3%CA%D9%B6%AF%B2%F1]]に掲載中

**その他、雑多
-やってて、つまづいたところをまとめたページがあれば、うれしいのかな
//-コメント受付ページがいるのかな・・というか、むしろ連絡先書いてないな・・
//--試しに、コメント入力ページを置いてみる
//-時間が取れなかったが、その分、いろいろ忘れてる！
//-[[ここ&gt;&gt;http://d.hatena.ne.jp/bs-android/20090603/1244043649]]を参考にビルド中・・うまく行かない。ATDEとかでカーネルだけ別にやったほうがいいかな。
//-USBカメラの話
//--UCVドライバがいるみたいだけど、Linux2.6.26以降だと含まれてる？
//---drivers/media/video/uvc 
//--↑含まれていたので、config変えるだけでOKっぽい。
//---configファイルを直接編集したから、変な状態に・・（汗）
//--/dev/video0が生成されてるので、使い方がわかれば、いける？
//---使い方は、[[これ&gt;&gt;http://v4l2spec.bytesex.org/spec-single/v4l2.html]]？
//-[[触り始めの覚え書き]]（単なるメモ１）

*内容
-[[覚え書き]]（単なるメモ）
-Android開発
--[[Android開発環境構築]]
--デバイス追加
-Android研究
--boot.imgな話（仮）
--VMな話（仮）
-Linuxカーネル研究
--[[カーネル関係メモ]]
--起動時な話（仮）
-Armadillo-500FX用（Cupcake）
--[[Armadillo-500FX用開発環境構築]]
--[[Armadillo-500FX用USBカメラ接続]]
-Armadillo-500FX用（Eclair）
--[[開発環境構築&gt;Eclair開発環境構築]]
-Armadillo-500FX用（Froyo）
--開発環境構築
-JN-DK01用
--開発環境構築
-アプリ開発
--[[アプリ開発環境構築]]
--[[アプリ開発メモ書き]]
--[[アプリ一覧]]
---[[出退勤簿（勉強用に作成中）&gt;出退勤簿（アプリ）]]
-アプリ研究
--ウィジェット（仮）
-[[VMwareの触り方]]
-[[リンク]]
-[[実験環境]]
-[[コメント入力用ページ]]

----
*デフォルトのトップページは下記に退避
[[トップページ２]]    </description>
    <dc:date>2010-07-26T01:38:51+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/2.html">
    <title>メニュー</title>
    <link>http://www42.atwiki.jp/melodroid/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
//-[[触り始めの覚え書き]]
-[[覚え書き]]
-Android開発
--[[環境構築&gt;Android開発環境構築]]
-Armadillo-500FX用
--Cupcake
--[[開発環境構築&gt;Armadillo-500FX用開発環境構築]]
--[[USBカメラ接続&gt;Armadillo-500FX用USBカメラ接続]]
--Eclair
--[[開発環境構築&gt;Eclair開発環境構築]]
--Froyo
-アプリな話
--[[アプリ開発環境構築]]
--[[メモ書き&gt;アプリ開発メモ書き]]
--[[アプリ一覧]]
---[[出勤退勤&gt;出退勤簿（アプリ）]]
-[[VMwareの触り方]]
-[[リンク]]
-[[実験環境]]
-[[コメント入力用ページ]]

//-[[全体活動日程]]
//--&amp;link_anchor(ＯＳチーム日程,page=全体活動日程){ＯＳチーム}
//--&amp;link_anchor(デバイスチーム日程,page=&quot;全体活動日程&quot;){デバイスチーム}

----

***最終更新
&amp;last_modified()

***カウンタ
今日：&amp;counter(today,page=トップページ)
昨日：&amp;counter(yesterday,page=トップページ)
合計：&amp;counter(total,page=トップページ)

***更新履歴
#recent(10)

//**メニュー
//-[[プラグイン紹介&gt;プラグイン]]
//-[[まとめサイト作成支援ツール]]
//-[[メニュー]]
//-[[メニュー2]]

//**リンク
//-[[@wiki&gt;&gt;http://atwiki.jp]]
//-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

//**他のサービス
//-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
//-[[無料ブログ作成&gt;&gt;http://atword.jp]]
//-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
//-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
//-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]
//-[[無料ソーシャルプロフ&gt;&gt;http://sns.atfb.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2010-07-26T01:33:03+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/15.html">
    <title>覚え書き</title>
    <link>http://www42.atwiki.jp/melodroid/pages/15.html</link>
    <description>
      *覚え書き

**概略
簡単なメモ程度の情報とか、調査中の情報とかをとりあえず、忘れないうちに書いたページ
＃あとで、消すかも（とりあえず、ここに退避中）

**目次
-&amp;link_anchor(バージョン){バージョン}
-&amp;link_anchor(閲覧中資料){閲覧中資料}
-&amp;link_anchor(未確認資料){未確認資料}
-&amp;link_anchor(未整理資料){未整理資料}
-&amp;link_anchor(ビルド関連資料){ビルド関連資料}

----
**&amp;anchor(バージョン,option=nolink){バージョン}
-1.0「?」
-1.5「Cupcake」
-1.6「Donut」
-2.1「Eclair」
-2.2「Froyo」
-3.0?「GingerBread」


**&amp;anchor(閲覧中資料,option=nolink){閲覧中資料}
途中で調べた資料をとりあえず、転記
-[[Armadillo-500でGoogle Androidを動かす(3)&gt;&gt;http://d.hatena.ne.jp/kitashu/20080515#1210817776]]
-[[Beagle Board Rev.C2でAndroidを動かすCommentsAdd Star&gt;&gt;http://d.hatena.ne.jp/bs-android/20090616/1245139773]]
Taosoftwar
-[[Android AVDとemulator (SDK 1.5)&gt;&gt;http://www.taosoftware.co.jp/blog/2009/04/android_sdk15_emulator.html]]
JavaDrive
-[[Android入門&gt;&gt;http://www.javadrive.jp/android/index.html]]
--[[R.javaファイル&gt;&gt;http://www.javadrive.jp/android/xml_layout/index2.html]]
--[[個々のビューにIDを設定&gt;&gt;http://www.javadrive.jp/android/xml_layout/index6.html]]
Androidの会
-[[ハンズオンセッション&gt;&gt;http://www.android-group.jp/index.php?%A5%EF%A1%BC%A5%AD%A5%F3%A5%B0%A5%B0%A5%EB%A1%BC%A5%D7%2F%A5%CF%A5%F3%A5%BA%A5%AA%A5%F3%A5%BB%A5%C3%A5%B7%A5%E7%A5%F3]]

[[solaさんのページ&gt;&gt;http://blog.sola-dolphin-1.net/]]
-[[カテゴリArmadillo&gt;&gt;http://blog.sola-dolphin-1.net/archives/cat_52907.html]]
[[O.M.C.のモバイル工作室&gt;&gt;http://open-mobile.jp/mobilelabo]]
-[[BusyBoxの用意と、MicroSDからの起動&gt;&gt;http://open-mobile.jp/mobilelabo/FX-AndroidPDA/MicroSDBoot]]

カメラ関連
-Androidの会組込みGWの[[AndroidでUSBカメラを使う方法&gt;&gt;http://groups.google.co.jp/group/android-embedded-japan/browse_thread/thread/aba465380570b5e2]]
-ブリリアントサービス様の[[Armadillo-500上のAndroidでカメラプレビューする方法&gt;&gt;http://d.hatena.ne.jp/bs-android/20081024/1224908863]]
-[[V4L2インタフェイス&gt;&gt;http://v4l2spec.bytesex.org/spec-single/v4l2.html]]


**&amp;anchor(未確認資料,option=nolink){未確認資料}
-[[/data/dalvik-cache not writable, breaking dynamic loading of packages/libraries&gt;&gt;http://code.google.com/p/android/issues/detail?id=966]]
-[[Unstable&gt;&gt;http://thats-the-way-it-is.blogspot.com/2007/11/android-runs-on-real-hardware.html]]


**&amp;anchor(未整理資料,option=nolink){未整理資料}
未確認と違いあるのか・・（汗）

-おもしろそうなドキュメント
--[[京都GTUG&gt;&gt;http://sites.google.com/a/kyoto-gtug.org/home/docs]]
-Linux関連（後で移動・・）
--[[JF: Index of Linux Kernel 2.6 Documentation&gt;&gt;http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/index.html]]
--[[LinuxKernel ドキュメント&gt;&gt;http://acapulco.dyndns.org/manual/src/linux26/main.htm]]


**&amp;anchor(ビルド関連資料,option=nolink){ビルド関連資料}
ビルドする上で関係した資料
カーネルのビルドエラー解消の元ネタ
-[[「Armadillo:04247」 「PATCH」 armadillo-500: make O= building&gt;&gt;http://lists.atmark-techno.com/pipermail/armadillo/2009-May/004247.html]]
init.rcの設定等
-[[BeatCast様のSoftware/Android/bc9&gt;&gt;http://labs.beatcraft.com/ja/index.php?Software%2FAndroid%2Fbc9]]
Cupcake用の起動時Power問題（まだ未検証→必要でした）
-[[Android Zaurusはてな館「ZaurusでAndroid 1.5」&gt;&gt;http://d.hatena.ne.jp/androidzaurus/20090407/1239069518#20090407f1]]
-[[上の参照先&gt;&gt;http://androidzaurus.seesaa.net/article/116995835.html]]のgit.diff.gzのような対処が必要
-lib側で修正するには、[[EeePc porting - Instructions for last codebase&gt;&gt;http://groups.google.com/group/android-porting/browse_thread/thread/8857e976d066ccd4]]を参照
起動時に関わるエラー（init.rcの設定について）
-[[Re: Howto build Android full source for X86 Architecture : msg#00000&gt;&gt;http://osdir.com/ml/android-porting/2009-04/msg00000.html]]
C++からC言語の関数の呼び出しについて
-[[C言語の関数呼び出し - extern &quot;C&quot; &gt;&gt;http://1024x768.blog74.fc2.com/blog-entry-31.html]]
-[[C言語で書かれた関数をC++から呼び出す(その逆も)&gt;&gt;http://rararahp.cool.ne.jp/vc/vctips/candcpp.htm]]    </description>
    <dc:date>2010-07-26T01:30:02+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/22.html">
    <title>アプリ開発環境構築</title>
    <link>http://www42.atwiki.jp/melodroid/pages/22.html</link>
    <description>
      *Androidアプリケーション用開発環境構築

**概略
Androidアプリケーションを開発する為の開発環境の構築方法について記載する。
Linux（Ubuntu）上でのEclipseを使用しない場合の開発環境について記載する。

[[Android Developersのページ（その他の統合開発環境）&gt;&gt;http://developer.android.com/intl/ja/guide/developing/other-ide.html]]のほうがわかりやすいかも・・（汗）


**目次
-&amp;link_anchor(流れ){大まかな流れ}
-&amp;link_anchor(ビルドツール){ビルドツール}
-&amp;link_anchor(SDK){SDKのインストール}
-&amp;link_anchor(プロジェクト作成){プロジェクトの作成}
-&amp;link_anchor(ビルド方法){ビルド方法}
-&amp;link_anchor(エミュレータ起動){エミュレータ起動}
-&amp;link_anchor(アプリ導入){アプリの導入}


----
**&amp;anchor(流れ,option=nolink){大まかな流れ}
目次を見れば想像できるが、念のため、全体の流れを記載する。

+環境構築
++Linuxへパッケージ追加
++Android用パッケージ追加
+アプリ作成
+アプリ実行
++実行環境設定
++実行環境へのインストール

-注意事項
--Eclipseを使う場合も、基本変わらないと思う。


**&amp;anchor(ビルドツール,option=nolink){ビルドツール}
ここでは、ビルドに使用するパッケージの取得について記載する。

-必要なパッケージ
--JAVAのSDK
--ANT

+JAVAのSDKを取得
++端末で、&quot;apt-get install sun-java6-bin&quot;を実行
+ANTの取得
++端末で、&quot;apt-get install sun-java6-bin&quot;を実行

-注意事項
--&quot;apt-get&quot;は管理者権限が必要なので、&quot;sudo&quot;等で対応してください。
--64bitだと一手間いるみたいです。
---[[公式のトラブルシューティング&gt;&gt;http://developer.android.com/intl/ja/sdk/installing.html#troubleshooting]]を参考にしてください。


**&amp;anchor(SDK,option=nolink){SDKのインストール}
ここでは、android用のSDKのダウンロードから導入方法について記載する
SDKには、プロジェクト作成、デバッグの為のツール、エミュレータ等が含まれている
ソフトのバージョンによっては、少し異なる可能性がある

+ANDORIODのSDK/AVDマネージャの導入
++パッケージのダウンロード
+++ブラウザ等で、[[SDKダウンロードページ&gt;&gt;http://developer.android.com/sdk/index.html]]へアクセスする
+++対応するOSのパッケージをダウンロード（Linux (i386)想定）
++パッケージの解凍
+++端末で、&quot;tar -zxf&quot;等で解凍する
+++-&quot;android-sdk-linux_86&quot;等の名前でフォルダができる
++パッケージへパスを通す
++-ここでは、homeのbinフォルダへ通す手段を記載
+++解凍したファイル一式を&quot;~/bin/&quot;へ移動する
+++-ここで、&quot;~/bin/android-sdk-linux_86/tools/&quot;配下のandroid等がある
+++&quot;.bashrc&quot;に記載を追加する
+++-最終行に、&quot;PATH=$PATH:~/bin:~/bin/android-sdk-linux_86/tools&quot;を追記する
+ANDROIDのSDKのダウンロード
++SDK/AVDマネージャを起動する（前手順でダウンロードした）
+++端末で、&quot;android&quot;とタイプする
+++-.bashrc変更後は、端末を再起動させてください
+++-直接、&quot;~/bin/android-sdk-linux_86/tools/android&quot;などでもOK
++SDK/AVDマネージャの設定を変更する
+++GUIが起動するので、左枠の&quot;Setting&quot;を選択
+++Misc欄の”Force https://..sources to be fetched using http://..sources”にチェックを入れる
+++Proxy設定の必要があれば、追記する
++必要なSDKをダウンロード
+++左枠の&quot;Available Packages&quot;を選択する
+++登録されているURLの左の三角矢印をクリックする
+++-サイトでダウンロードできるアイテムが読み込まれる
+++必要なSDKのチェック欄にチェックを入れる
+++右下の”Install Selected”をクリックする
+++確認画面が表示されるので、&quot;Accept&quot;をクリックする
+++ダウンロード完了まで待つ

-注意事項
--別のOSで実施の場合は対応するパッケージを取得してください。
--パスの通し方は一例となるので、好みに合わせてください。
---tools配下のバイナリが実行できれば、良し。
---設定しなくても、直接叩けば問題ないけど、毎回手間なので。。
--&quot;Force https://(略)&quot;にチェックを入れないと、ダウンロードに失敗する場合あり
--SDKのバージョンで悩むぐらいなら、全部チェックを入れてもよい
--APIレベルは、デベロッパのページのAPIが使えるかどうかに関連する
--Google APIs（略）は、SDKにGoogle APIが使える差分が付加した感じ
--Sampleは、参考になるので、ダウンロードするべき
--SDKマネージャのバージョンによって、異なる可能性がある


**&amp;anchor(プロジェクト作成,option=nolink){プロジェクト作成}
作成中

**&amp;anchor(ビルド方法,option=nolink){ビルド方法}
作成中

**&amp;anchor(エミュレータ起動,option=nolink){エミュレータ起動}
作成中

**&amp;anchor(アプリ導入,option=nolink){アプリの導入}
作成中


----
-&amp;link_anchor(プロジェクト作成){プロジェクトの作成}
-&amp;link_anchor(ビルド方法){ビルド方法}
-&amp;link_anchor(エミュレータ起動){エミュレータ起動}
-&amp;link_anchor(アプリ導入){アプリの導入}    </description>
    <dc:date>2010-03-26T00:58:27+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/20.html">
    <title>Armadillo-500FX用USBカメラ接続</title>
    <link>http://www42.atwiki.jp/melodroid/pages/20.html</link>
    <description>
      *Armadillo-500 FX用USBカメラ接続

**概略
Armadillo-500 FXにUSBカメラを接続して、Android上で画像表示させる方法について記載する。
記載、および、動作確認には、cupcakeバージョンを対象としている。
バージョンによっては、処理が異なる為、別途処理が必要な場合もある。

**目次
-&amp;link_anchor(カメラアプリ概要){カメラアプリについて}
-&amp;link_anchor(既存処理概要){カメラ処理概要}
-&amp;link_anchor(方針){USBカメラ接続方針}
-&amp;link_anchor(前提環境){前提環境(ソフト)}
-&amp;link_anchor(前提環境２){前提環境(ハード)}
--&amp;link_anchor(前提環境３){Armadillo-500FX}
--&amp;link_anchor(前提環境４){USBカメラ}
-&amp;link_anchor(修正概要){修正概要}
-&amp;link_anchor(修正１){カーネル修正}
-&amp;link_anchor(修正２){ミドル修正}
-&amp;link_anchor(その他１){つまづいたこと}
-&amp;link_anchor(その他２){次回やるならば}
-&amp;link_anchor(参考){参考資料}

----
**&amp;anchor(カメラアプリ概要,option=nolink){カメラアプリについて}
画面表示するために使用するカメラアプリについて記載する。

-使用するカメラアプリ
--Android(Cupcake)のソースに含まれているアプリ
--”generic”でビルドした場合、もしくは、”USE_CAMERA_STUB := true”で指定した場合に、デバイスがなくても動作するアプリ
--エミュレータとして動かした場合、動作するアプリ

-カメラアプリの起動方法
-+homeからアプリ一覧を表示させる
-+”Camera”（カメラ）と表示されているアイコンをタップする

-既存の動作について
--表示される画像は、デバイスに依存しない画像
--表示される画像は、ライブラリ内で生成している
--画像形式は、YUV形式の特殊な形式だと予想される

-注意事項
--Androidのソースで、”USE_CAMERA_STUB := true”の指定をはずしただけだとリンクエラーとなる
--カメラアプリで表示される画像は、モノクロとなっている
--画像形式は、YUV形式のようだが、OpenGLESがモノクロ表示のみである為、正しい指定かどうか判断できていない


**&amp;anchor(既存処理概要,option=nolink){カメラ処理概要}
カメラアプリ部分から実際の画像生成部分までの処理の概要を説明する。

カメラ処理全体の関係図は、こんな感じかな。
#image(camere_relation.jpg,height=200)
[[画像（別窓）&gt;&gt;http://www42.atwiki.jp/melodroid?cmd=upload&amp;act=open&amp;pageid=20&amp;file=camere_relation.jpg]]

***各処理概要
-カメラアプリ処理部分
--カメラアプリを選択した場合に動作するアプリケーション部分
--いわゆるSDKで作成できる部分で、フレームワーク層のクラスを利用している
--ソース該当箇所
---cupcake/packages/apps/Camera/
-カメラクラス（フレームワーク）
--アプリケーション上で、カメラ機能を使う為のフレームワーク
--フレームワークとしては、JNIを利用してのJAVA層とC/C++層の橋渡しを実施
--広い意味では、C/C++層内部でのカメラサービスライブラリまでの連結までを含めてよいのかもしれない
--ソース該当箇所
---(JNI・Java層)cupcake/frameworks/base/core/java/android/hardware/Camera.java
---(JNI・C++層)cupcake/frameworks/base/core/jni/android_hardware_Camera.cpp
---(UI内カメラクラス)cupcake/frameworks/base/libs/ui/Camera.cpp
---(メディアサーバ)cupcake/frameworks/base/media/mediaserver/
-カメラサービスライブラリ
--カメラ機能を使う為のライブラリとなる
--カメラハードウェアに対応させる場合、このライブラリをうまくカーネルとつなげば良いと考えることができる
--genericビルド時やエミュレータビルド時には、ここがスタブとなる
--ソース格納箇所：
---cupcake/frameworks/base/camera/libcameraservice
---(カメラサービス本体)CameraService.cpp
---(ハードウェア代替スタブ)CameraHardwareStub.cpp
---(上記の画像生成部)FakeCamera.cpp

-注意事項
--当たり前ですが、説明には主観が思いっきり入ってる
--そして、ソースを眺めただけなので、実際の動作と異なる可能性がある


**&amp;anchor(方針,option=nolink){USBカメラ接続方針}
カメラアプリに対して、実際のカメラデバイスを接続する基本方針について記載する。

-基本姿勢
--動けば、OK（いいのか・・）
--なので、流用できる部分は流用する
--簡単そうなので、UVCカメラを使う

-基本方針
--カメラサービス内でエミュレータ用処理をベースとする
---ハードウェア代替処理（CameraHardwareStub.cpp）をUSBカメラ用にする
---画像形式・処理については、フェイクカメラ（FakeCamera.cpp）を参考にする
--ハードウェアを操作する処理は、V4L2インタフェイスを使用する
---ドライバ部分は、カーネルコンフィグで対応
---ドライバ利用は、公開されているライブラリを流用

上記の方針を図にすると、こんな感じかな。
#image(camera_plan.jpg,height=200)
[[画像（別窓）&gt;&gt;http://www42.atwiki.jp/melodroid?cmd=upload&amp;act=open&amp;pageid=20&amp;file=camera_plan.jpg]]

-注意事項
--方針は、[[ブリリアントサービス様の記事&gt;&gt;http://d.hatena.ne.jp/bs-android/20081024/1224908863]]を（勝手に）基にしてる
--当時、V4L2インタフェイスを知る前だったので、構成の怪しさが抜群


**&amp;anchor(前提環境,option=nolink){前提環境(ソフト)}
基本方針にそって説明していく上で、前提となる開発環境について記載する。

前提となる開発環境は、[[開発環境構築&gt;Armadillo-500FX用開発環境構築]]で構築した環境とする。
実際構築したベースを記しておく。

-確認したベースバージョン
--kernelは、Armadillo-500FX用（v2.6.26-at6）
--kernel以外は、cupcake

-注意事項
--最新のほうが扱いやすいと思われるが、試してません・・。


**&amp;anchor(前提環境２,option=nolink){前提環境(ハード)}
基本方針にそって説明していく上で、前提となるハード要素を記載する。
実際に確認したハードに対して、必要そうな要素を記載する。
要素があってれば、応用はできるかも。

-&amp;anchor(前提環境３,option=nolink){Armadillo-500FX}
--ハード要素としては、USBのホスト機能が必要（たぶん、USB2.0対応が必要）
---Armadillo-500FXでは、CON3（小さい基盤の方のCON3）
---また、ホストとして使用するので、JP1をショートさせる

-注意事項
--CON3、JP1については、ハードウェアマニュアルを参照ください。
---インタフェースマニュアルは、でかい基盤用なので、違うっぽい
--High-Speedで使用しないと、遅いかも。
--念の為、Armadillo-500FXが今回の対象としているハード
---[[Atmark Technoの紹介ページ&gt;&gt;http://www.atmark-techno.com/products/armadillo/a500fx]]に説明がある


-&amp;anchor(前提環境４,option=nolink){USBカメラ}
--ハード的な要素としては、カメラがUSBの規格にそっていること
---UVC（USBビデオクラス）に準拠したUSBカメラであれば問題ないはず！

-注意事項
--UVC準拠とかかれたWebカメラを見たことがない。
--でも、UVCカメラと名の付いた商品はみたことある。
--いちおう、実際に使用したカメラは、[[実験環境]]に書いてる。
--「ドライバのインストール不要」と書かれてる商品は、準拠してる可能性が高いはず


**&amp;anchor(修正概要,option=nolink){修正概要}
基本方針にそって修正していく上の概要を記載する。

-カーネル修正
--カーネルについては、コンフィグレーションの変更で対応する
---UCV用処理等は、カーネル内にドライバソースとして存在している
---先駆者の修正にのっとり、USB OTG機能を有効にする
---V4L2インタフェイスを利用できるようにする
-ミドル修正
--V4L2を利用できるようにCameraHardwareStubを改造
---V4L2を利用するライブラリとして、[[uvccaptureのコード&gt;&gt;http://www.quickcamteam.net/software/linux/v4l2-software/uvccapture]]を使用
---あとは、構造体とインタフェイスを合わせる
---カラーにしたい場合は、画像変換を追加する

-注意事項
--uvccaptureのネタは、ブリリアントサービス様のブログから拝借
--他に、いろいろあるけど、各詳細で記載する


**&amp;anchor(修正１,option=nolink){カーネル修正}
カーネルの修正については、概要にあるように、コンフィグレーションを追加するだけになる。

-ターゲット環境（Armadillo-500FX）での方法
-+端末で、カーネルフォルダ(cupcake/kernel)内に移動する
-+「make menuconfig」をタイプする
-+-上記のコマンドで、コンフィグ設定画面が起動する
-+UVCサポートが有効になるように設定する
-++「Device Drivers」をエンターで選択する
-++「Multimedia Devices」をエンターで選択する
-++「Video for Linux」を「Y」でチェックする
-++「Video capture adapters」をエンターで選択する
-++「V4L USB devices」をエンターで選択する
-++「USB Video Class (UVC)」を「Y」でチェックする
-++「UVC input events device support」を「Y」でチェックする
-+USB OTG機能が有効（HOST設定が無効）になるように設定する
-++「Device Drivers」をエンターで選択する
-++「USB support」をエンターで選択する
-++「Allow High Speed (on OTG port)」をエンターで選択する
-++-「EUHI HCD (USB2.0) support」の下のほうにある
-++「on OTG port」をエンターで選択する
-+設定変更したコンフィグファイルを保存する
-++コンフィグのトップ階層まで戻る（「ESC」２回でひとつ上の階層に戻れる）
-++「Save an alternative Configuration File」を選択する
-+「armadillo500fx_dev_android_defconfig」に変更点をマージする
-+-kernel/arch/arm/configsにあるファイル

-それ以外の環境（予想）
-+configファイルをロードする
-+UVC サポートとUSB OTG有効（HOST有効）に設定する
-+configファイルをセーブする

-注意事項
--Armadillo-500FXでもConfigファイルをロードして変更したほうが楽な気がする
--直接ファイルを編集しても問題ないが、依存関係があるので注意が必要
--USB OTGの設定は先駆者の設定によるが、ホスト機能があれば動く気がする
---ただ、USB2.0サポートは必要かもしれない（UVCの規格上）


**&amp;anchor(修正２,option=nolink){ミドル修正}
ミドルというか、CameraHardwareStubの代替処理作成の概要について記載する。
ソース整理ができてないのと、中途半端な実装なので、ソースは謎のままに・・。

-FakeCamera代替
--V4L2インタフェイスを利用したソースを取得
---ブリリアントサービス様のページに書かれている[[uvccaptureコード&gt;&gt;http://www.quickcamteam.net/software/linux/v4l2-software/uvccapture]]
--以下２ファイルを cupcake/frameworks/base/camera/libcameraservice に格納
---v4l2uvc.c
---v4l2uvc.h
-CameraHardwareStubの代替
--FakeCameraを利用した処理を v4l2uvc,h にあるインタフェイスで置き換える
---クラス生成処理をmallocなどに置き換える
---Cソースの「#include ”～”」を「extern &quot;C&quot; {}」で囲む
---その他、もろもろ調整（ハード次第で時間かかるかも。。）
-Android.mkの修正
--代替ファイルになるように置き換え
--「LOCAL_SHARED_LIBRARIES:= libui」に「 libui libc」を追加
---場合によっては不要

-注意事項
--まとめるのが遅かったので、少しあやふやな部分がある。
--「uvccaptureコード」の扱いに注意が必要
---GPLライセンスなので、リンクさせると、コピーレフト
---利用せずに、直接書いたほうがすっきりするかも
--C++ソースとCソースのリンクに注意
---C++からCソースの関数を呼ぶ場合、おまじない（extern &quot;C&quot;）が必要
--V4L2インタフェイスに設定するパラメタは、ハードに依存する
---使用したデバイスは、YUVのみ出力、かつ、縦長だけだった
---デバイスからのデータをどこかで加工する必要がある
---OpenGLを利用する関係で、YUVはモノクロになる
---カラー希望ならば、RGBなどにする必要がある


**&amp;anchor(その他１,option=nolink){つまづいたこと}
今回実装する上でつまづいたことをまとめておく

-C/C++ソースのリンク
--C++からC関数をコールする場合、おまじない（extern &quot;C&quot;）が必要
-カメラ画像表示
--デバイス特有かもしれないが、設定したサイズを縦長とか横長にする場合有り
--ログを仕込んだりして、期待通り設定されているか知る必要有り
-カラー表示（画像形式）
--FakeCameraがYUV(packed)で実装されているが、カラーにはRGBが必要
--知らないと、画像形式の勉強をした後に、知ることに。。


**&amp;anchor(その他２,option=nolink){次回やるならば}
今回実装する上で失敗、保留した点をまとめておく

-V4L2インタフェイスの利用方針
--楽をするために流用したが、独自で実装したほうがわかりやすいかも
--インタフェイス資料はあるため、次回はカスタマイズして利用してみたい
-デバイスのアクセス権限
--カメラ接続時に、/dev/video0 が作成されるが、アクセス権限がない
--毎回ターミナルで設定すればいいが、起動時に設定されるようにしたい
-実装範囲
--プレビューがメインだったため、一部関数のみ実装したが、フル機能にしたい。
-実効速度
--カラー表示のため、YUV→RGB処理を入れたが、計算に時間がかかる模様
--浮動小数→固定小数とかで、速度向上が必要
--バッファの数見直しも必要


**&amp;anchor(参考,option=nolink){参考資料}
USBカメラ接続において参考となる資料のリンク先をまとめて記載する。

-Androidの会組込みGWの[[AndroidでUSBカメラを使う方法&gt;&gt;http://groups.google.co.jp/group/android-embedded-japan/browse_thread/thread/aba465380570b5e2]]
-ブリリアントサービス様の[[Armadillo-500上のAndroidでカメラプレビューする方法&gt;&gt;http://d.hatena.ne.jp/bs-android/20081024/1224908863]]
-V4L2ドライバの為の[[V4L2インタフェイス&gt;&gt;http://v4l2spec.bytesex.org/spec-single/v4l2.html]]    </description>
    <dc:date>2010-03-02T00:10:18+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/26.html">
    <title>Eclair開発環境構築</title>
    <link>http://www42.atwiki.jp/melodroid/pages/26.html</link>
    <description>
      *Armadillo-500 FX用Eclair開発環境構築

**概略
Armadillo-500 FX上で動作するAndroidのビルド環境構築について記載する。
記載、および、動作確認には、eclairバージョンを対象としている。
バージョンによっては、不要な手順もある。

**memo
-[[Building eclair dream-us-eng fails at libwebcore.a&gt;&gt;http://groups.google.co.jp/group/android-platform/browse_thread/thread/a06ac0b8e59d24db]]
-[[Build error on Ubuntu 9.04 (Eclair branch)&gt;&gt;http://groups.google.co.jp/group/android-platform/browse_thread/thread/f39424e86659c818]]

**memo
忘れないうちに記録。

ビルドエラーが起こる
STATIC_LIBRARIES/libwebcore_intermediates/libwebcore.a)
make: execvp: /bin/bash: Argument list too long な問題

&quot;cd external/webkit ; git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa&quot;

上記の修正内容は、[[git参照&gt;&gt;http://android.git.kernel.org/?p=platform/external/webkit.git;a=commitdiff;h=18342a41ab72e2c21931afaaab6f1b9bdbedb9fa;hp=19b276ff1f54bed5c687bef385cb6d8c33332d56]]


**memo2
[[Subject: Re: [android-porting] Re: Eclair build bootup issue on Beagle board. - msg#00048&gt;&gt;http://osdir.com/ml/android-porting/2010-01/msg00048.html]]
ブート時に問題が発生している

----
以下、元ページのコピー

**目次
-&amp;link_anchor(Armadillo-500FX){Armadillo-500 FXについて}
-&amp;link_anchor(環境構築目標){環境構築目標}
-&amp;link_anchor(ファイル取得){ファイル取得}
-&amp;link_anchor(ファイル配置){ファイル配置}
-&amp;link_anchor(カーネル修正){カーネル修正}
-&amp;link_anchor(ユーザ空間修正){ユーザ空間修正}
-&amp;link_anchor(追加ファイル){追加ファイル}
-&amp;link_anchor(パス設定){パス設定}
-&amp;link_anchor(ビルド方法){ビルド方法}
-&amp;link_anchor(ビルドスクリプト){ビルドスクリプト}
-&amp;link_anchor(ビルド生成物){ビルド生成物}
-&amp;link_anchor(未解決問題){未解決問題}
-&amp;link_anchor(検証中){検証中}

----
**&amp;anchor(Armadillo-500FX,option=nolink){Armadillo-500 FXについて}
Armadillo-500fxは、組込み向けの開発キットになる。
言い方を変えると、「高いおもちゃ」ということ。
仕様等の詳細は、公式となる[[Atmark Technoの紹介ページ&gt;&gt;http://www.atmark-techno.com/products/armadillo/a500fx]]を見てください。


**&amp;anchor(環境構築目標,option=nolink){環境構築目標}
Armadillo-500fx用の環境を作る上での目標をまとめておく。
テーマは、「手軽に、かっこよく」ってことで。
以下に、具体的な目的をまとめておく。
-コマンドひとつで、カーネル＋ユーザ層がビルドできるようにする
-eeepc701用のビルドで採用されているように、vendor配下を作ってみる
-生成物を焼きやすい形にまとめるようにする
-いろいろ手順が簡単になるようにする


**&amp;anchor(ファイル取得,option=nolink){ファイル取得}
環境を作成する上で元となるソースの取得方法について記載する。
取得するソースは、２種類に分かれる。
-AndroidのLinuxカーネル部分以外のソース
-Linuxカーネル部分のソース

***Androidのカーネル部分以外のソース
いわゆる、Androidのソースと言われる部分。
いつからか、カーネルが同時に取得できなくなったので、カーネル以外と記載している。
（Armadillo-500fxでは、カーネルも構築する必要があるためである。）
+[[Android開発環境構築]]の手順の中で、ソース取得準備まで実施する
+&amp;link_anchor(ソース取得方法１,page=Android開発環境構築){ソース取得方法(repo)}にあるように、repoコマンドでソースを取得する
+-ビルドできるバージョンを使うため、”repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake&quot;等バージョン指定を実施する
+-その後、&quot;repo sync &quot;を実施する

***Linuxカーネル部分のソース
Linuxカーネルの部分を取得する。
この部分が主にハードウェア用のカスタマイズが必要な部分となる。
また、GPLライセンスに縛られているため、どこかで取得できる。
今回は、Armadillo-500fxが対象となるので、公式から取得する。
+ブラウザ等で、[[Armadillo-500 FXダウンロード&gt;&gt;http://armadillo.atmark-techno.com/armadillo-500-fx/downloads]]を開く
+Linuxカーネルを取得（確認当時、v2.6.26-at6 でした）


**&amp;anchor(ファイル配置,option=nolink){ファイル配置}
ダウンロードしたソースの配置について記載する。
以降の説明用には、この節で記載したフォルダ構成で記載する。

+”repo init”、&quot;repo sync&quot;を実行したフォルダを「cupcake」とする
+-「cupcake」配下に、「bionic」、「framework」等のフォルダがあることになる
+ダウンロードしたカーネルファイルを展開する
+-展開すると、「linux-2.6.26-at6」というフォルダができる
+展開したフォルダの名称を「kernel」と変更する
+-「kernel」配下に、「drivers」等のフォルダがあることになる
+「cupcake」フォルダの中に、「kernel」フォルダを移動する
+-「cupcake/framework/base」、「cupcake/kernel/drivers/usb」等の階層となる

-注意事項
--階層の説明はわかりづらいかも・・。できたら、絵を追加したい。
--取得バージョンによっては、例で示すフォルダが存在しない場合がある。


**&amp;anchor(カーネル修正,option=nolink){カーネル修正}
ダウンロードしたカーネルファイルには、Android用の修正が適用されていない状態である。
その為、Android用の修正を実施するために、修正パッチの適用を実施する。
+Android用パッチを取得する
++ブラウザ等で、公式ファイルブラウザ内の[[android directory&gt;&gt;http://armadillo.atmark-techno.com/filebrowser/misc/android]]を開く
++「linux-2.6.26-at-android-tmp-081210.patch」をダウンロードする
+カーネルにパッチを適用する
++カーネルフォルダ（cupcake/kernel）内に、ダウンロードしたpatchを移動する
++端末で、カーネルフォルダ(cupcake/kernel)内に移動する
++端末で、「patch -p1 &lt; linux-2.6.26-at-android-tmp-081210.patch」を実施し、パッチを適用する
+ATDEを使用しない為、Makefileを一部修正する
++「cupcake/kernel/arch/arm/plat-mxc/sdma/Makefile」をテキストエディタで開く
++「KBUILD_CFLAGS  := -I$(KBUILD_SRC)/arch/arm/plat-mxc/sdma/iapi/include \」の行を修正する
++-「:=」の部分を「+=」に変更する

-注意事項
--patchの使い方は、うる覚え。試した人は結果ください（汗）
--Makefileの修正については、以下を参照ください。
---[[「Armadillo:04247」 「PATCH」 armadillo-500: make O= building　&gt;&gt;http://lists.atmark-techno.com/pipermail/armadillo/2009-May/004247.html]]


**&amp;anchor(ユーザ空間修正,option=nolink){ユーザ空間修正}
Armadillo-500fxでのcupcake版ビルドで、ユーザ空間で必要な修正について記載する。
カーネル、Androidバージョンの組合せに依存して発生する。
他の組合せだと不要かもしれない。
-Armadillo-500fxで動かす場合のcupcake版での問題点
--起動時、バッテリ状態が取得できない為、ローバッテリだと判断して、電源OFFしてしまう
-対策方法（例：実際できないかも・・）
-+電源管理アプリでダミー値で処理する
-+framework層（java層）でダミー値を返す
-+JNI層（Linuxアプリ層）でダミー値を返す
-+カーネル層でダミー値を返す

framework層とJNI層は、ほぼ同等で、java好きか、C++好きかになる。
ここでは、JNI層での修正方法を示す。

+対象となるファイルをテキストエディタで開く
+-”cupcake/frameworks/base/services/jni/com_android_server_BatteryService.cpp”
+バッテリ状態を返す関数の復帰値を変更する
++getBatteryStatus()
++-”gConstants.statusUnknown”を常に返すように変更
++getBatteryHealth()
++-”gConstants.healthUnknown”を常に返すように変更
++readFromFile()
++-bufに文字列”Unknown”（NULL終端付）を入れて、sizeを復帰値とした
++-（bufの領域は、自分できちんと確認してね・・壊れてるかも）
++setBooleanField()
++-関数readFromFile()をコールし、結果で判断するif処理を削除
++-変数valueを常にtrueに変更
++-（要するに、readFromFile()のコールを削除して、value固定化）
++setIntField()
++-関数readFromFile()をコールし、結果で判断するif処理を削除
++-変数valueを常に1に変更
++-（要するに、readFromFile()のコールを削除して、value固定化）

-注意事項
--上記修正は、重複もありそうだけど、良しとした。
--JNI層での修正に関しては、[[EeePc porting - Instructions for last codebase&gt;&gt;http://groups.google.com/group/android-porting/browse_thread/thread/8857e976d066ccd4]]を参考にして実施。
--framework層での修正は、[[Android 1.5 on Zaurus&gt;&gt;http://androidzaurus.seesaa.net/article/116995835.html]]に修正差分がある。（試してないけど・・）    </description>
    <dc:date>2010-02-11T01:44:35+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/23.html">
    <title>アプリ開発メモ書き</title>
    <link>http://www42.atwiki.jp/melodroid/pages/23.html</link>
    <description>
          </description>
    <dc:date>2010-01-31T01:06:57+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/25.html">
    <title>アプリ一覧</title>
    <link>http://www42.atwiki.jp/melodroid/pages/25.html</link>
    <description>
          </description>
    <dc:date>2010-01-10T15:56:58+09:00</dc:date>
  </item>
    <item rdf:about="http://www42.atwiki.jp/melodroid/pages/24.html">
    <title>出退勤簿（アプリ）</title>
    <link>http://www42.atwiki.jp/melodroid/pages/24.html</link>
    <description>
          </description>
    <dc:date>2010-01-10T15:56:02+09:00</dc:date>
  </item>
  </rdf:RDF>

