[Arduino] MacOS XにArduino IDEをインストールする

■環境
MacOS 10.9.4
(Java 6)
Arduino IDE 1.0.5

■ダウンロードサイト
http://arduino.cc/en/Main/Software

■手順 (10分くらい)
1.ダウンロードされたarduino-1.0.5-macosx.zipファイルを展開
2.Arduinoアプリケーションをクリック
3.完了(sketchが立ち上がる)

■ドライバーのインストール
O’Reillyの書籍「Prototyping Lab(2011年第1版3刷)」にはドライバーのインストールが手順として記載
だが、ダウンロードされたIDEにはFTDISerialDriverが表示されていない
→Macにドライバーが必要なのはArduino Duemilanove以前の場合のみ
 Uno 初代.R2,R3には不要

[Android] AndroidAnnotations ViewByIdのメンバ名について

■状況
AndroidAnnotationsを利用すると、
====================================================
MainActivity.java

@ViewById
TextView titletext;
====================================================
のようにしてActivityに設定してあるxml内のTextViewを指定できる。
その時のメンバ名の名前とxml内のid名との関係を確認した。

■試してみた結果
@+id/titletext -> titletext
@+id/titletext -> TitleText
@+id/titletext -> Title_Text
@+id/title_text -> titletext
大文字小文字は関係ない。
アンダースコア(_)は双方向で無視される。

■やりたかったこと
メンバ名のプリフィクス設定
====================================================
MainActivity.java

@ViewById
TextView mTitleText;
main.xml
@+id/m_title_text
====================================================
とでもしようかな…

[Android] AndroidAnnotation利用時のコード例

■実施例
□MainMenuActivity.javaの元コード

package com.example.appname;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainMenuActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // setContentViewよりも前に呼び出す必要がある
  requestWindowFeature(Window.FEATURE_NO_TITLE);

  setContentView(R.layout.activity_main_menu);
 }
}

□MainMenuActivity.javaの元コードAndroidAnnotation利用時

package com.example.appname;

import android.app.Activity;

import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.NoTitle;
@NoTitle
@EActivity(R.layout.activity_main_menu)
public class MainMenuActivity extends Activity {
 // lauout fileは先頭で指定してるのでonCreateも必要ない!
}

□AndroidAnnotation利用時に自動生成されるMainMenuActivity_.java

// DO NOT EDIT THIS FILE, IT HAS BEEN GENERATED USING AndroidAnnotations.

package com.example.timershutter;

import android.app.Activity;

public final class MainMenuActivity_ extends MainMenuActivity
{

 @Override
 public void onCreate(Bundle savedInstanceState) {
  init_(savedInstanceState);
  super.onCreate(savedInstanceState);
  setContentView(layout.activity_main_menu);
 }

 private void init_(Bundle savedInstanceState) {
  requestWindowFeature(Window.FEATURE_NO_TITLE);
 }

 private void afterSetContentView_() {
 }

 @Override
 public void setContentView(int layoutResID) {
  super.setContentView(layoutResID);
  afterSetContentView_();
 }

 @Override
 public void setContentView(View view, LayoutParams params) {
  super.setContentView(view, params);
  afterSetContentView_();
 }

 @Override
 public void setContentView(View view) {
 super.setContentView(view);
 afterSetContentView_();
 }

 public static MainMenuActivity_.IntentBuilder_ intent(Context context) {
  return new MainMenuActivity_.IntentBuilder_(context);
 }

 public static class IntentBuilder_ {

  private Context context_;
  private final Intent intent_;

  public IntentBuilder_(Context context) {
   context_ = context;
  intent_ = new Intent(context, MainMenuActivity_.class);
  }

  public Intent get() {
   return intent_;
  }

  public MainMenuActivity_.IntentBuilder_ flags(int flags) {
   intent_.setFlags(flags);
   return this;
  }

  public void start() {
   context_.startActivity(intent_);
  }

  public void startForResult(int requestCode) {
   if (context_ instanceof Activity) {
    ((Activity) context_).startActivityForResult(intent_, requestCode);
   } else {
    context_.startActivity(intent_);
   }
  }
 }
}

[Android] AndroidAnnotations の使い方

■AndroidAnnotation
http://androidannotations.org/

気がつくと何度も書いているfindViewByIdとか、
setContentViewとかをアノテーション(@で始まる一文字)で簡単に記述することができる
画期的なツール!
プロトなんかの高速作成に役立ちそう。

■AndroidAnnotationの種類
https://github.com/excilys/androidannotations/wiki/AvailableAnnotations

■使い方
□jarの設定
https://github.com/excilys/androidannotations/wiki/Download
からjarをダウンロード

1.libsフォルダにandroidannotations-X.X.X-api.jarをコピーする

2.compile-libsフォルダを作成し、androidannotations-X.X.X.jarをコピーする
compile-libs:レポジトリ管理可能、でもAndroidに直で影響しないフォルダの利点
3.Properties>JavaCompilerのEnable project Specific settingsにチェック
4.Properties>JavaCompilerのCompiler compliance level:を1.6にする
5.Properties>JavaCompiler>Annotation ProccessingのEnable project Specific settingsにチェック
6.Properties>JavaCompiler>Annotation ProccessingのEnable annotation processingにチェック
7.Properties>JavaCompiler>Annotation ProccessingのGenerated source directory:に gen と入力
8.Properties>JavaCompiler>Annotation Proccessing>Factory PathのEnable project Specific settingsにチェック
9.Properties>JavaCompiler>Annotation Proccessing>Factory PathのAdd JARSでcomplie-libsのjarを指定
10.ワークスペースのリビルド(選択肢が表示される。Yesで自動で走る)

□コードの設定
1.Activityのクラス上部に@EActivity(R.layout.xxxx…) を記載する
import com.googlecode.androidannotations.annotations.EActivity;
が自動で設定される
※R.layout.xxxx…. は該当のActivityのlayoutファイルid
2.Activityのクラス上部の@EActivity(…)の前の行に@Notitleを記載する
import com.googlecode.androidannotations.annotations.NoTitle;
が自動で設定される
※簡単に確認できるAnnotationならNoTitleでなくとも何でもOK
3.AndroidManifest.xmlのActivityのandroid:nameの最後にアンダースコア(_)をつける
※例)アノテーション記載したsrc/MainActivity.javaから自動生成されたgen/MainActivity_.javaのうち、
実際に実行されるのはgenのMainActivity_.javaになるため
4.ビルド、実行して該当のActivityがNoTitleになることを確認する

[tips] devious

■意味
1遠回りの,曲がりくねった; 回りくどい.
a devious explanation 持ってまわった説明.

2率直でない,すなおでない; (奸智にたけて)人を欺くような,よこしまな.
There’s something devious about him. 彼はどこかすなおでないところがある.

■場面
coverityの注意書きにあった…
ImputStreamとかBufferReaderとかのread,writeはデフォルトの
文字コードを暗に使っちゃうらしいけど、それにしてもこの単語はどうだろう…

[tips] swap

■意味
入れ替える

[tips] resume suspend

■場面
プログラミングしてて出会ったが意味がいまいちわからなかった単語

■意味
suspend 
休止

resume
復帰、再開
RSMもこの略か…!

[tips] explicit

■意味
明示的な〜

■反対語
implicit

[tips] dereference

■意味
《ポインター》 から参照先の値を取得する
《変数やリンク》 の(表わす)参照を解釈する, 参照先のデータを取得する.

■例文
・This expression *ptr dereferences ptr to yield i as an integer.
この *ptr という式によって (ポインター) ptr の参照先の値 i が整数として取得される.
《変数 ptr で表わされたアドレスに書かれている値を取得する》

・Cannot dereference non-pointer type.
《表示》 ポインター型でない変数を参照として解釈することはできません.
間接参照演算子 (“*”) のオペランドはポインター型でなければなりません.

・use this base URL to dereference relative URLs
この基準 URL を使って間接 URL が指している場所にアクセスする

[Android] アプリ公開時に必要な画像

■場面
アプリ公開に必要な画像がいくつかあるので調べてみる

■調査結果
・必須
スクリーンショット2枚
アイコン512×512

アプリに入れているアイコンはだいたい小さいので注意