2010年5月9日

Androidアプリのメニューに標準アイコンを指定する方法(xml編)

Androidアプリを作成するにあたって、アプリのメニューで利用するアイコンを他のアプリと共通にする目的でAndroidの標準アイコンを使いたいことがあると思います。(アイコンを作るのが大変というケースもあるかと思いますが…)

xmlでアイコン指定をする方法は、iconとして"android:drawable/アイコン名" を指定します。
例えば、以下のような形で res/menu/menu.xmlファイルを指定します。
  android:icon="@android:drawable/ic_meu_info_details"


指定可能なアイコン名については、タオソフトウェアさんのブログが参考になります。
  参考リンク:Android メニューアイコンタオソフトウェアさんブログ

2010年5月5日

NetBSD5.0のBluetoothをデバッグする方法

最近、NetBSD5.0でBluetoothを利用して色々と試しています。

カーネルのBluetoothスタック関連でのデバッグを行う方法をメモ代わりに書いておきます。
デバッグの種類としては、"Bluetoothスタックのデバッグ"と"ドングルのデバッグ"の2種類があります。
ここでは、ドングルとしてはUSBタイプのドングルを利用するものとして記載します。(ちなみに私が使用しているのは、PlanexのBT-MicroEDR2です)

まずはカーネルでデバッグオプションを有効にしてカーネルをビルドします。設定するオプションは、BLUETOOTH_DEBUG と UBT_DEBUG の2種類。カーネルのコンフィグファイル(e.g. /usr/src/sys/arch/i386/conf/GENERIC)に以下のように追記します。
   options BLUETOOTH_DEBUG
   options UBT_DEBUG

この設定でカーネルをビルドし、ビルドしたカーネルにて起動します。ただ、これだけではデバッグ文は出てきません。デバッグ文を表示するには、sysctlコマンドにてデバッグレベルの設定を行います。例えば、以下のような形式です。
  # sysctl -w net.bluetooth.debug=11
  # sysctl -w hw.ubt_debug=51

これでデバッグ文が出力されるようになります。ちなみにsysctlで設定する値(上記の例では"11"とか"51")はデバッグレベルで値が大きいほどより詳細なデバッグ文が出力されます(その文、デバッグ文の量が増えます)。このあたりは、NetBSDでの他のドライバのデバッグと同じところですね。上記設定を行うと全てのデバッグ文が有効になります。デバッグ文を減らしたい場合は、値を小さく設定すればよいかと思います。

2010年5月3日

Javaの命名規則に関して…

元々Javaはほとんどやったことがない(Cばかり)だったんですが、最近Javaのコードをよく読んでます。
Javaのコードを読んでいて、"mなんちゃら"とプレフィックスに"m"がつく変数がよくでてくるのですが、この意味が分からなかった…。Sun(Oracle)が出しているコーディング規約にも、言及されている部分は見つからず。

Webで色々と調べてみたところ、変数のスコープを明示するために付けているスコープ接頭辞とのこと。
"m"が付いているのは、その変数がメンバー変数であることを表している模様。

なるほどー。

2010年1月11日

Androidアプリのパーミッション設定

Androidアプリケーションを作成するにあたって、例えばネットワーク接続等を行なうアプリケーションはパーミッションの設定を行なう必要があります。
それに関して、簡単な覚書。

パーミッションの設定を行なうためには、アプリケーションのAndroidManifest.xmlに設定を記述必要がある。これについては、以下のドキュメントが参考になります。


Manifest.permissionクラスのjavadoc

2010年1月10日

Androidアプリの勉強中

最近、Androidアプリを勉強しています。
少しWebを調べれば分かることだけれども、個人的な覚書として少しずつ記録していきます。

Activityのライフサイクル
Androidのアプリケーションは、基本的に"Activity"という単位で管理される。
各Activityは個別のライフサイクルを持っており、(アプリケーションが個別に実装した内容以外にも)特定のタイミングでシステムからコールされるメソッドがある。
アプリケーションを作成するにあたっては、これらのメソッドをオーバーライドする形で実装を進めていく。ライフサイクルに関連するメソッドは以下の通り
onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()


詳細は、Androidのリファレンスを参照のこと

2010年1月3日

JNI(Java Native Interface)で、ネイティブからJavaのコードを呼び出す(の参考サイト)

最近、Javaプログラミング(Androidプログラミング)に勤しんでます。
Javaの基本的なところは知っているつもりだったけど、JNI(Java上でNative(CやC++)のメソッドを利用する)は初めてやってます。

Javaからネイティブを読み出すのは色々と参考になるサイトもそろっており、それほど難しくないのだけれども、ネイティブ側からJavaのコードを読み出すのは四苦八苦。
動きとしては、Javaからネイティブ関数を呼び出し、そのネイティブメソッド関数からJavaメソッドを呼び出すというもの。

以下のサイトが参考になります。
  その1
  その2

2009年11月3日

Java開発環境(SDK)のセットアップ

Javaの開発を行う必然性が生じて、環境のセットアップを行う。
開発環境自体はpkgsrcを用いてセットアップする。その作業の覚書。

まずは、インストールするSDKのバージョンを決める。
Package一覧を見ると、J2SE1.4, J2SE5.0, J2SE6.0がある。最新版のJ2SE6.0をインストールすることにする。

まずは、/etc/mk.confに以下のエントリを追加する。
  ACCEPTABLE_LICENSES+= sun-jdk6-license

インストールを行うためにはバイナリファイルを自分でダウンロードしてくる必要がある。(ライセンスの関係?)
http://java.sun.com/products/archive/から"JDK 6u14"と"JRE 6u14"のLinux版をダウンロードし、/usr/pkgsrc/distfilesにファイルをおく。

以下のコマンドでインストール作業を実行
  $ cd /usr/pkgsrc/lang/sun-jdk6/
  $ make
  $ make install
  $ make clean
  $ make clean-depends

続いて、/etc/fstabに以下を追記する。
  procfs   /emul/linux/proc    procfs   rw,linux

インストールしたjava関連コマンドは /usr/pkg/java/sun-6/bin/ 配下に置かれるので、PATHの設定を行う。これでOK!

2009年11月2日

Adobe Readerのインストール

これまでNetBSDではPDFファイルは見ていなかった(Windowsですませていた)のだけれども、いい加減使い勝手が悪いので、Adobre Readerをインストールすることにする。

まずは、pkg_addでバイナリをインストールしようと試みるもエラー発生。
調べてみると、pkgsrcではバイナリ版のパッケージは用意されていなかった。(おそらくライセンス関係の問題だと思われる)

では、ソースコードからのビルドを実行。今度はビルドエラーが出た。
  $ cd /usr/pkgsrc/print/acroread7/
  $ make
  ERROR: This package has set PKG_FAIL_REASON:
  ERROR: acroread7-7.0.9nb2 has an unacceptable license condition:
  ERROR:     adobe-acrobat-license
    (以下略)
エラーメッセージにある通り、ライセンスの関係から意図的にエラーとしている模様。
エラーメッセージの内容にしたがい、/etc/mk.conf に以下のエントリを追加
  ACCEPTABLE_LICENSES+= adobe-acrobat-license
この修正を加えた上で、以下のコマンドでインストール成功!
  $ cd /usr/pkgsrc/print/acroread7/
  $ make
  $ make install
  $ make clean
  $ make clean-depends

ただ、これだけだと日本語のフォントがインストールされていないので、acroread7-jpnfontもインストールする。これでOK!

2009年11月1日

ath0: device timeout

NetBSD5.0を使用していて、無線LANドライバで以下のような警告(?)メッセージが表示される。
ath0: device timeout (txq 1, txintrperiod 5)
ath0: device timeout (txq 1, txintrperiod 4)
ath0: device timeout (txq 1, txintrperiod 3)
ath0: device timeout (txq 1, txintrperiod 2)
このメッセージが何なのかはサッパリ分からない。
調べてみると、NetBSDのメーリングリストで以下の解決策が記載されていた。

/etc/sysctl.conf  に以下を追加する。
  hw.ath0.txintrperiod=1
これで、とりあえず警告メッセージは表示されなくなった。

2009年10月1日

Goole Android を試してみる。

Google Androidが気になっていて、今回開発環境にトライしてみる。
基本的には、"Android Developers"のサイトに従ってインストールおよびHelloAndroidプロジェクト実施。しかしながら、エミュレータの動作が非常に遅くて、なかなか難航しています。

エミュレータの動作が遅いのは、Googleで調べると色々なところで指摘されている模様。
私の環境では、「仮想デバイス」を作成して初回の実行ではうまく動作するが、2回目以降はいつまでたっても起動しなかったり・・・。今後、この点についてちょっと調べないとなと思っています。

Androidの仮想デバイスに関する操作については、JavaDriveさんのサイトが大変参考になります。
  JavaDrive : http://www.javadrive.jp/android/index.html

ちなみに、個人で使用している環境は以下の通り。
  OS : Windows XP Professional SP3
  Eclipse : Eclipse 3.5 (Galilero)
  Android SDK : Android SDK 1.6R1 (Windows用)
  CPU : Pentium-M 1.7GHz
  メモリ : 1GB

# 余談。Android携帯には興味があるが、私的な理由で個人的にauにしたいと思っています。(現在はSoftbank)現時点ではNTT DocomoからしかAndroid携帯は発売されていませんが、来年('10年)にはAUからも発売されるのかな?