Galaxy S2(SC-02C) ROM変更

4.0.3がリリースされた。
本家でも不具合がある為という理由でアップデートが取り消されている。

  • 取り消される前にアップデートしてしまった。
  • 使い勝手が悪くイライラする。

為、自己責任の元でROMの変更を行い快適に操作出来ていた2.3.6に戻す
事にした。

手順として

  1. オリジナルのROMの取得
  2. ROMの焼きこみ
  3. ファクトリーリセット

を実施する事でROMを完了出来る。

■オリジナルのROMの取得
2種類の方法がある

■ROMの焼きこみ
http://forum.xda-developers.com/ からOdin3 をDL

■ファクトリーリセット
ROMを焼いただけでは起動時にアプリが死にまくる。そして先に進めない。
ボリュームアップキー+HOMEキーを押しながら電源をONする。
リカバリーモードで起動するので、各種リセットする。

windows7 64bit での androidアプリ開発

r17のSDKからwindows7 64bitにJava SDK 7を導入した環境では
SDK Managerの起動に失敗する。

これはJavaの実行ファイルの検出に失敗しているからである。
検出しているのは、
tools\lib\find_java.bat
なので、このファイルをr16のものに差し替えれば起動する。
起動出来なくする事に意味があるのかは不明であるが64bitの環境でも
開発が出来た方がいいと思うのになぜこの様になったのかは不明である。

Eclipseを使ってandroidとOpenCVを連携させる

OpenCVのダウンロード
http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.3.1/
から、OpenCVの2.3.1用の環境をダウンロードする。

解凍すると、
OpenCV-2.3.1
・samples
フォルダが存在するはず。

■使う時の手順

  1. EclipseからAndroidアプリを新規で作成する
  2. パッケージエクスプローラから、作成したアプリを選択
  3. 右クリック→プロパティーを選択
  4. タブ:Java Build Pathを選択
  5. Link Source...を選択
  6. Linked Folder Locationに解凍時に出来た、『OpenCV-2.3.1』を指定する
  7. タブ:Androidを選択
  8. Libraryを選択
  9. Add...を選択し、OpenCVを追加する

以上で、AndroidアプリからOpenCVを使う事が出来る。
実行時に、『NoClassDefFoundError』のエラーログが出ていたら上記を再度
確認すべき。

Buttonレイアウト拡張(画像つきButton)

Buttonのコンポーネントに画像を表示させると
Buttonを押した時の動作をイメージしやすく出来る等の効果が得られる。

WPFではXAMLを使用する事でコンポーネントのレイアウトを自身で定義
する事が容易に出来る。

拡張に当たり、

  • ContentTemplate
  • DataTemplate

を使用する方法を以下に示す。

<Button>
	<Button.ContentTemplate>
		<DataTemplate>
			<StackPanel Orientation="Horizontal">
				<Ellipse Fill="Red" Width="20" Height="20"/>
				<TextBlock Text="Sample"/>
			</StackPanel>
		</DataTemplate>
	</Button.ContentTemplate>
</Button>

上記の例では
赤い丸と「Sample」の文字から構成されるButtonを表示させる事が出来る。
Ellipseの要素をImageにし、Sourceへ任意の画像を指定する事で画像つき
Buttonを表示させる事も出来る。

DataTemplate内に任意のレイアウトを記述する事で自由にレイアウトを拡張
出来てしまうのは魅力的な機能だと思う。

Ubuntu 11.04にてandroidのソースを取得する

以下にubuntuの端末に実行させるコマンドを記載する。

  • sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
  • mkdir $HOME/bin
  • export PATH=$PATH:$HOME/bin
  • echo $PATH
  • curl http://android.git.kernel.org/repo >~/bin/repo
  • chmod a+x ~/bin/repo
  • mkdir android
  • cd android
  • repo init -u git://android.git.kernel.org/platform/manifest.git
  • repo sync

以上で、androidフォルダにソースが格納される。

x64 OSにてOpenCV2.2を動作させる

大きく分けて

  1. ツールのインストール(VS2010、CMake)
  2. ソースの取得
  3. CMakeでVS2010のソリューション作成
  4. VS2010にてコンパイル
  5. binとlibを適度な位置に配置
  6. 配置したPathを通す

工程で実施出来た。

  • ソースの取得

TortoiseSVNをインストールし、任意のPathにソースをExportする。
ソースは
https://code.ros.org/svn/opencv
にある。

  • CMakeでソリューション作成

source code
は取得したソースコードのPath
binaries
は出力したいバイナリのPath
を指定。
Configre
を押し、VS2010 x64を選択する。
Generate
を押す。

後は、CMakeのbinariesに指定したPathにVS2010のソリューションが出力
されているのでコンパイルする。
結果のBinとLibを任意のPathに移動する。
環境変数にBinのPathを追加する。

Shader実装について

XNA4.0にて独自のShader(以降シェーダー)を使用する時の手順について
簡単にまとめて見た。

  1. ContentにEffectファイルを追加する
  2. Content.Load("任意");でContentからEffectを読み出す
  3. 独自の頂点領域を作成する場合は、IVertexTypeインターフェースを実装する
  4. VertexDeclarationをgetするアクセッサを実装する
  5. ここで生成したVertexDeclarationが頂点シェーダーに渡される
  6. Drawメソッド内で頂点領域をGraphicsDeviceに設定する
  7. DrawIndexedPrimitives等で描画する

後は独自のシェーダー内を実装すれば動作する。