PhoneGapコマンドでAndroidネイティブを実行するときの実行時エラー
PhoneGapさんのインストール&アプリ作成
npm install -g phonegap phonegap create hoge cd hoge phonegap run android
PhoneGapさんからの熱いメッセージ
Error: ERROR : executing command 'ant', make sure you have ant installed and add ed to your path.
antが必要だ!パスに入れてね!
antは、androidプロジェクトのビルドをコマンドラインから実施するために必要なものらしい。
npmを利用して、antをインストール
npm install -g ant
以下のディレクトリを見ると、antが入ってきている。
%APPDATA%\npm\node_modules
Antのパスを設定
システム環境変数を作成
変数名:ANT_HOME
変数値:C:\Users\[ユーザー名]\AppData\Roaming\npm\node_modules\ant\ant
システム環境変数Pathに対して、以下の値を追記
;%ANT_HOME%\bin
Android SDKのパスを設定
システム環境変数Pathに対して、以下の値を追記;C:\Users\[ユーザー名]\android-sdks\platform-tools;C:\Users\[ユーザー名]\android-sdks\tools;
リラン
phonegap run android
再びPhoneGapさんよりエラー
JDKのパスが環境変数%JAVA_HOME%に見つからない ようなメッセージ。JAVA_HOMEを設定
システム環境変数を作成変数名:JAVA_HOME
変数値:(JDKのbinフォルダ)
リラン そして エラーへ
An error occurred while emulating/deploying the android project.
どうやら、以下のサイトを見た感じだと、ANDROID_HOMEという環境変数が必要みたいだ。
http://stackoverflow.com/questions/19278072/phonegap-3-android-deploy-install-error
You need to create a new Environment Variable called "ANDROID_HOME".
The value for this variable is your sdk location. In my case, I put: "C:\Users\Jesualdo\Desktop\sdk\sdk\tools".
もう出勤時間が来てしまったので、仕事から帰ってから続きを書くこととする。
リファレンスと国語・英語辞書を両手に、C#で何かができるまで003
データバインドって何でしょう
Kinect for Windows Developer Toolkitの中で、FaceTrackingBasics-WPF(MainWindow.xaml.cs)を読んでいたときにふと思った。
var faceTrackingViewerBinding = new Binding("Kinect") { Source = sensorChooser }; faceTrackingViewer.SetBinding( FaceTrackingViewer.KinectProperty, faceTrackingViewerBinding );
データバインディングを利用すると、データ表示や操作を簡単に行うことができる。
データ表示(UI)とデータ(オブジェクト)の管理は分離されているが、UIとオブジェクトの接続(バインド)を確立することで、データがその間を簡単に移動できるようになる。
http://msdn.microsoft.com/ja-jp/library/windows/apps/hh758320.aspx
上記の例でいくと、
System.Controls.UserControlクラスを継承したFaceTrackingViewerをMainWindow.xamlのビューとして利用している。
<local:FaceTrackingViewer x:Name="faceTrackingViewer" />
つまり、KinectSensorChooserがデータ(ソース)であり、その内容をfaceTrackingViewerオブジェクト内で参照するための接続(バインド)を行っているようだ。
ちなみに、FaceTrackingViewer内には以下のようなソースが書かれている。
public static readonly DependencyProperty KinectProperty = DependencyProperty.Register( "Kinect", typeof(KinectSensor), typeof(FaceTrackingViewer), new PropertyMetadata( null, (o, args) => ((FaceTrackingViewer)o).OnSensorChanged((KinectSensor)args. OldValue, (KinectSensor)args.NewValue));
DependencyProperty.Register メソッド
入力パラメーターにしたがって、パラメーター化したプロパティを持つDependencyPropertyクラスの新しいインスタンスを作成する。
http://msdn.microsoft.com/ja-jp/library/ms605349(v=vs.100).aspx
public static DependencyProperty Register( string name, Type propertyType, Type ownerType, PropertyMetadata defaultMetadata ); /* 引数:name DependencyPropertyの名前 引数:propertyType プロパティに含めることのできる値のType 引数:ownerType 依存プロパティのオーナーのType 引数:defaultMetadata 追加のプロパティオプション 上記例でいくと、PropertyMetadataインスタンス生成時に自クラス内のOnSensorChangedをコールバック(PropertyChangedCallback)とするラムダ式を指定している。 */
Kinect for Windows関係の単語整理
連番(続き) | 単語 | 意味 | 例 |
---|---|---|---|
7 | dependence | 依存 | DependencyProperty |
8 | supress | 抑圧する,鎮圧する | GC.SuppressFinalize(this) |
9 | context | 背景,状況 | DrawingContext |
10 | virtual | 仮想メソッド | protected virtual void Dispose(bool disposing){} |
11 | enumrate | 列挙する,数え上げる | private EnumIndexableCollection |
12 | geomerty | 幾何学 | GeomertyGroup |
日本語の整理(念のため)
連番 | 用語 | 意味 | 例 |
---|---|---|---|
1 | 修飾 | 美しくつくろい飾ること ある語句で他のごくの意味を限定すること |
virtualキーワードはプロパティ、メソッド、 インデクサー等の宣言を修飾する |
本日のMFS(My Favorite Sourcecode)
// WPFでDrawingVisualに描画した画像や文字をRenderTargetBitmapとして格納し、BitmapEncoderでファイル出力する DrawingVisual drawVisual = new DrawingVisual(); DrawingContext drawContext = drawVisual.RenderOpen(); drawContext.DrawImage( new WriteableBitmap(50, 50, 96, 96, PixelFormats.Bgr32, null), new Rect(0, 0, 50, 50) ); // 日付文字列の作成 DateTime date = DateTime.Now; string dStr = d.Year + "/" + d.Month + "/" + d.Day + " " + d.Hour + ":" + d.Minute + ":" + d.Second + "." + d.Millisecond; // 日付の埋め込み drawContext.DrawText(new FormattedText(dStr, System.Globalization.CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, new Typeface("Verdana"), 10, Brushes.MediumSprintGreen), new System.Windows.Point(10, 10)); drawContext.Close(); // 空のRenderTargetBitmapを用意。 RenderTargetBitmap targetBmp = new RenderTargetBitmap(50, 50, 96.0, 96.0, PixelFormats.Pbgra32); targetBmp.Render(drawVisual); BitmapEncoder enc = new JpegBitmapEncoder(); enc.Frames.Add(BitmapFrame.Create(targetBmp)); using(FileStream stream = new System.IO.FileStream(ANY_DIR + ".jpg", FileMode.Create)) { enc.Save(stream); }
リファレンスと国語・英語辞書を両手に、C#で何かができるまで002
問題意識
ソースを書いていて、よく思うことがある。クラス、ライブラリの利用等、プログラミング時には英単語を少なからず読むのだが、それぞれ単語が示す本来の意味、役割を理解できているのだろうか。
例えばC#で画面作ってて思うのがこれ(ContextMenuStrip)
え、Context?何それ?
といった形で、意味をよく理解しないまま、クラスを利用していることが頻繁にある。
dic:Context
(事件,行動などの)背景、事情
仮説を立ててみる
不明な単語があった場合に、調査して自らの知恵にできた場合、ソースコードが読みやすくなるのではないだろうか実践してみる。Kinect for Windows関係の単語整理
連番 | 単語 | 意味 |
---|---|---|
1 | component | 構成している |
2 | depth | 深さ |
3 | stride | またぐ、ひとまたぎ |
4 | rect(Rectangle) | 長方形 |
5 | stream | 流れ |
6 | frame | 枠 |
①component
WPFアプリケーションのInitializeComponentで必ず見かける単語。
構成の初期化といった意味が適切。
②depth
// import略
KinectSensor kinect = KinectSensors.FirstOrDefault(x => x.Status == KinectSensor.connected);
kinect.DepthStream.Enable();
深度関係の値を取得する際によく利用する単語。
英語辞書では、「深さ」と記載があった。
③stride
// フレーム横幅 * 1バイトあたりのピクセル数 int screenStride = kinect.DepthStream.FrameWidth * kinect.ColorStream.BytesPerPixel;
strideは、またぐ、ひとまたぎといった記載。
④rect
Int32Rect rectanble = new Int32Rect(0, 0, (int)Math.Ceiling(_bmp.Width), (int)Math.Ceiling(_bmp.Height));
rectangleは長方形
⑤stream
kinect.SkeletonStream.Enable();
流れを意味する。
データを取得する際の個人的なイメージとしては、流れる水をバケツですくうようなイメージを持っている。
⑥frame
using(ColorImageFrame colorFrame = e.OpenImageFrame()) { //... }
枠を意味する。
結果
①意外とコードがスラスラ頭に入ってくる②続けてみないと何ともいえない