トップ 最新 追記
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2011/06/05(Sun) GALAXY S買った。Smartiaはあきらめた。 [長年日記] 編集

_ [Windows][Android][GALAXY S] GALAXY SをPCと接続しストレージ(内蔵SD、外付SD)にアクセスする(Samsung Kies)

参考:

http://keitai-price.com/contents/view/369
http://someya.tv/galaxys/100/manual04.php

Androidで遊びたい!ということで、一時はSmartiaを買う気だったのだが、近くの中古屋でgalaxy sが25,000円だったので、こちらを衝動買いしてしまった。

付属のマイクロUSBで接続するだけでは、PCにドライバが入っていないため、正常に認識されない。

そのため、まずはドライバを入手する。

こちら(http://jp.samsungmobile.com/pc/lineup/SC-02Bdownload.html)から「Samsung Kies」をDLし、インストール。

※閲覧時に音が出るので注意!

これで、Samsung携帯向けのデータ管理ツールとともに、ドライバがインストールされる。 インストールが終わったら、Samsung Kiesを起動し、付属のUSBケーブルでGALAXY SとPCを接続。

すると、GALAXY Sが接続中になり、GALAXY S側にもドライバがインストールされる。

自動的にドライバがインストールされるまで、しばらく放置。

この段階で、PCの「コンピューター(マイコンピュータ)」にはリムーバブルディスクが「2つ」表示されているはず。

が、このままではまだアクセスできないため、GALAXY S側での設定を行う。

ストレージデバイスとして直接接続する(カードリーダーモード)

インストールが終了したら、GALAXY Sのホーム画面の上部にあるステータスバーに「ドロイドくん」が表示されているはず。

※USBデバッグが有効な場合のみ?

これをばーっと下に引っ張ると、

USBが接続されています

という通知があるので、これを選択。

すると、左手がUSBコネクタになった「ドロイド君」が表示されるので、その下にある

USBストレージの接続

というボタンをクリック。これで、「コンピューター(マイコンピュータ)」からストレージとしてアクセスできるようになる。

もし通知領域に表示されない場合(もしくは接続時に自動的にカードリーダーモードを立ち上げたい場合)は、GALAXY S側の「設定」→「無線とネットワーク」→「USB接続」に行き、

「カードリーダーモード」

を選択すれば、USBを接続するだけで自動的に上記の

USBストレージの接続

が表示されるようになる。ただし「USBデバッグ」を有効にしている場合、「USB接続」を開く段階で警告が出て無効にされてしまう点に注意すること。

※通知領域から開いた場合には聞かれない。が、自分で「USBが接続されています」をクリックして接続するという手間がかかるので、どっちがいいかは各自の好みで。

※なお、USBをはずす際には、必ずGALAXY S本体のメニュー画面から接続を解除してから行うよう注意する。

Samsung Kiesを介して接続

『USBをはずした状態で』GALAXY S側の「設定」→「無線とネットワーク」→「USB接続」から「Samsung Kies」を選択。

ホームに戻り、PCとGALAXY SをUSBで接続。

すると、自動的に「SB-02B」というポータブルデバイスが認識され、GALAXY Sのストレージにアクセスできるようになる。

※ただしこのモードでは「.」から始まる隠しフォルダは表示されない。カードリーダーモードなら表示できる。

※なお、USBをはずす際には、必ずGALAXY S本体のメニュー画面から接続を解除してから行うよう注意する。

このモードで接続している場合、Samsung Kiesを使うことで、さまざまな機能(バックアップや同期、コンテンツの閲覧やデータの交換等)が利用できる。

が、こいつがかなり『クセモノ』。

というのも、このSamsung Kies、かなり重い。そもそも推奨がRAM 1GB以上とか。どこにそんなメモリを使っているのか正直わからん!

まあ、便利なことはまちがいないので、高スペックなPCを使っている場合には有効かと。

あと、ファームウェアのアップデートにもこれ(Samsung Kies)で行うらしいので、とりあえず使える状態にしておく方がいいかも。

以上!

_ [Windows]VLC Player(1.1.7)で起動時に「フォントキャッシュの再構築」をするのを止める

どうも、フォントキャッシュを読み取り専用にするのが手っ取り早いっぽい。

なお、公式の方法ではないので、やる場合は自己責任で!

Windows7の場合

C:\Users\ユーザ名\AppData\Roaming\vlc

内の「.cache-3」(もしくは.cache-2)ファイルを読み取り専用にする。

WindowsXPの場合

C:\Documents and Settings\ユーザ名\Application Data\vlc

内の「.cache-3」(もしくは.cache-2)ファイルを読み取り専用にする。

以上!


2011/06/07(Tue) やべえ。会社寝過ごしそう。 [長年日記] 編集

_ [Windows]ショートネームの調べ方(古いWindowsでディレクトリが指定できない等)

コマンドプロンプトで

dir /x

と打てばOK。

例えば、「Documents and Settings」は「DOCUME~1」、「Program Files」は「PROGRA~1」で指定できることが分かる。

パスの指定で空白が入って困る場合にも使えるかも。

以上!

_ [Android][GALAXY S][Windows]純正のAndroid NDKを使ってAndroid上でOpenCV2.2を動かす(OS:Windows7 64bit)

参考:

http://team-hiroq.com/blog/android/android_opencv_setup_environment2.html
http://opencv.willowgarage.com/wiki/AndroidTrunk#Windows.28native.29
http://team-hiroq.com/blog/android/android_opencv_sample2.html

調べてみると、C++に対応するように拡張したNDKを使う方法が多く見られたが、NDK version5でC++に対応したので、使わなくてもいけるかとも思って調べたところ、やはり公式NDKでもいけるようになったっぽい。

ただ、やっぱりcygwinがうっとうしい。正直、Ubuntuでやればよかったとつくづく思っている!

まあ、それはそれとして。

基本的に、OpenCVの公式wiki(http://opencv.willowgarage.com/wiki/Android?highlight=%28%28Android2.2%29%29)に書いている、「AndroidTrunk」の方法そのもの。

あと、こちら(http://team-hiroq.com/blog/)をかなり参考にさせてもらっています。

始める前に

前提として、NDKとcygwinの基本的なインストールは終わっているものとしてまとめる。

cygwinにsvnをインストール

今回、OpenCVのソースのDLにsvnを使うため、cygwinで新たにsvnをインストールする必要がある。

※多分develにあるので、選択してインストールしておく。

cmakeのインストール

※cygwinのはディレクトリの指定方法が違うらしく、流用できないので注意!

まず、こちら(http://www.cmake.org/)からcmakeのWindows用バイナリを入手。

インストーラ形式でインストールしてもいいが、zipを入手して適当なディレクトリに解凍でもOK。

makeのインストール

※cygwinのはディレクトリの指定方法が違うらしく、流用できないので注意!

続いてこちら(http://code.google.com/p/mingw-and-ndk/downloads/list)からmakeのWindows用バイナリm(ake-3.7z)を入手。7z形式なので、WinRARとかその辺りので解凍する。配置は適当でOK。

swigのインストール

※これが無くてもOpenCV自体はコンパイルできる。が、それだとサンプルがコンパイルできないので、ついでにインストールしておく。

こちら(http://www.swig.org/download.html)からswigのWindows用バイナリを入手。(現状の最新はswigwin-2.0.4.zip)

適当なディレクトリに解凍し、配置すればOK。

Antのインストール

※これが無くてもOpenCV自体はコンパイルできる。が、それだとサンプルがコンパイルできないので、ついでにインストールしておく。

こちら(http://ant.apache.org/bindownload.cgi)からswigのWindows用バイナリを入手。(現状の最新apache-ant-1.8.2-bin.zip)

これも適当なディレクトリに解凍し、配置すればOK。

OpenCVのソースを入手し、環境に合わせて修正

cygwinを起動し、

$ svn checkout https://code.ros.org/svn/opencv/trunk/opencv

と入力して、ソースを取得。

取得したソースのトップディレクトリ(opencv)の下に、「android/scripts」フォルダがあるので、それをWindowsのエクスプローラーで開く。

すると、そのディレクトリ内に『wincfg.cmd.tmpl』というファイルがあるので、これをその場でコピーし、コピーしたファイルの名前を『wincfg.cmd』に変更する。

コピーしたファイル(wincfg.cmd)を適当なテキストエディタで開き、NDK、cmake、makeのパスの設定を自分の環境に合わせて書き換える。

自分の場合、以下のようになった。

:: variables required for OpenCV build ::
:: Note: all pathes should be specified without tailing slashes!
SET ANDROID_NDK=C:\android-ndk-r5b
SET CMAKE_EXE=C:\android-cv-tools\cmake-2.8.4-win32-x86\bin\cmake.exe
SET MAKE_EXE=C:\android-cv-tools\make.exe

また、OpenCV自体のコンパイルには必要ないが、サンプルをコンパイルできるように、Swig、android sdk、ant、javaのパスも設定しておく。

自分の場合、以下のようになった。

:: variables required for android-opencv build ::
SET SWIG_DIR=C:\android-cv-tools\swigwin-2.0.4
SET ANDROID_SDK=C:\Program Files (x86)\Android\android-sdk\
SET ANT_DIR=C:\android-cv-tools\apache-ant-1.8.2
SET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24

OpenCVのコンパイル

コマンドプロンプトを開き、先ほどDLしたOpenCVのディレクトリ直下にあるandoridというディレクトリに移動する。

※自分の場合は、以下のようになった。

cd \opencv\android

最後に、

scripts\cmake_android.cmd

と入力し、OpenCVをコンパイル。

なお、コンパイルには非常に時間がかかるので注意すべし!(多分30分ぐらい?)

[100%]と表示されれば、コンパイル完了。

ライブラリの作成自体はこれで終了のはず。

サンプルプロジェクトのコンパイル

コマンドプロンプトを開き、opencvの下の「android\android-opencv」ディレクトリへ移動。

※自分の場合は、以下のようになった。

cd \opencv\\android\android-opencv

ここで、

cmake_android.cmd

と打つと、コンパイルが開始される。

BUILD SUCCESSFULと表示されればコンパイルは完了!

ただし!64bit版Windowsの場合、Javaが見つからずにエラーが出ることがある。

※「Program files (x86)」にインストールされている場合など。

その場合は、「Program files」にインストールしなおすか、こちら(http://stackoverflow.com/questions/3052743/android-create-call-fails-in-windows-7-missing-jdk)を参考に自力で修正してください。

※最悪、Program files (x86)のをそのままコピペすれば動く・・・はず。

ここで出来たサンプルプログラムを元に、自作のプロジェクトを作っていくことになる・・・のかな?

wiki見ながら順番通りにやってるので、正直今後これをどう使っていくのかが分かってない点が多々ある・・・。

まあ、それはそれとて!次!

サンプルプログラムのコンパイル

コマンドプロンプトを起動し、opencvの下の「android/apps/OpenCV_SAMPLE」ディレクトリに移動して、以下のコマンドを打つ。

cd /cygdrive/c/opencv/android/apps/OpenCV_SAMPLE
cmake_android.cmd

これでコンパイルができた。

後は、

C:\android-cv-tools\apache-ant-1.8.2\bin\ant debug

としてantでapkパッケージを作り、実際に端末にインストールすればおそらく実行できるはず!

この辺についてはまだ自分もよく分かっていなくて手探りの状態なので、そのうちまとめるかも!

最後のほうとかかなりぐだぐだだが、とりあえず、以上!

※自分の環境では、GALAXY Sできちんと動きました。


2011/06/08(Wed) Android、おもちゃとしては面白いけど携帯電話としては使いたくない [長年日記] 編集

_ [Ubuntu][FC][Linux][Debian][Android][GALAXY S]Ubuntu上でAndroidの開発環境を整える(Android SDKのインストールからeclipseでのAVDの起動まで)

参考:

http://techbooster.jpn.org/andriod/environment/492/
http://linux-buddy.blogspot.com/2011/04/install-sun-java-jdk-on-ubuntu-1104.html

今回は、Ubuntu11.04で行った。基本的な流れはWindowsの場合と同じ。

JDKのインストール

まず、JDKをインストール。

以前だとこちら(http://akihiro-i.net/~akihiro-i/diary/?date=20100130#p02)に書いた方法でさくっと入れられたのだが、最近はどうもそのままではaptでインストールできないっぽい。

なので、以下のようにリポジトリを追加してからインストールする。

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

さらに、以下のコマンドでデフォルトのJavaを「sun-java」に変更する。

$ sudo update-alternatives --config java

Android SDKのインストール

こちら(http://developer.android.com/sdk/index.html)から「android-sdk_r11-linux_x86.tgz」をDLし、適当な場所に展開する。

自分は、ホーム下にandroidというディレクトリを作って展開した。

$ cd
$ mkdir android
$ cd android
$ wget http://dl.google.com/android/android-sdk_r11-linux_x86.tgz
$ tar zxf android-sdk_r11-linux_x86.tgz

続いて、android-sdkにパスを通すため、「~/.bashrc」に以下の行を追加する。

export PATH=$PATH:/home/「ユーザ名」/android/android-sdk-linux_x86/tools

さらに、追加した内容を適用するために以下のコマンドを実行する。

$ source ~/.bashrc

Eclipseのインストール

こちら(http://www.eclipse.org/downloads/)から「Eclipse IDE for Java Developers」のLinux版をDLし、適当なディレクトリに解凍。

せっかくなので、自分はホーム下のandroidディレクトリにまとめた。

$ cd ~/android
$ tar zxf eclipse-java-helios-SR2-linux-gtk.tar.gz

eclipseのインストールは以上で完了。

EclipseにAndroid plig-inをインストール

Eclipseを起動して「ヘルプ」→「新規ソフトウェアのインストール」を開き、作業対象に

https://dl-ssl.google.com/android/eclipse/

を追加し、「次へ」。

ウィンドウに「開発ツール」というのが現れるので、チェックして「次へ」を選択。途中でいろいろ聞かれるが、特に難しいことは無いはず。

ウィンドウが消え、Eclipseのメイン画面だけが残るが、右下に「インストール中」の表示があると思うので、インストールが終わるまで待つ(0%のまま進まないこともあるが、時間がかかっているだけなので、おとなしく待つ)。

終わったらEclipseを再起動するよう促されるので、素直に再起動。

再起動後、「ウィンドウ」→「設定」から「Android」を選択すると「SDKロケーション」を聞かれるのでAndroid SDKフォルダ(自分の場合は「C:\Program Files (x86)\Android\android-sdk」)を指定し、「適用」。これでインストールが出来たはずなので、「OK」を押す。

AVD(Androidエミュレータ)の作成

せっかくAndroidアプリケーションを作っても、実際に試せなければ意味が無い。そのため、AVDと呼ばれるエミュレータを使って自作プログラムを動かしてみる。

まず、Eclipsを起動し、「ウィンドウ」→「Android SDK and AVD Manager」をクリック。

左ツリーの「Installed Packages」をクリックし、目的のバージョンの「SDK Platform Android ~」があることを確認するOK。

ない場合は「Availabel Packages」をクリックし、インストールしたいPlatformの項目にチェックを入れ、「Install Selected」をクリックする。あとは画面に従えばOK。

続いて、左ツリーの「Virtual Devices」をクリックし、「新規」をクリック。

「Name」に任意の名前(例えば、「Android2.1_HVGA」)を入力し、「Target」で目的のAndroidのディストリビューションを選択。

必要であれば、「SD Card」に任意の値(例えば、「64M」)を入力。

「Skin」で適当な画面スキン(基本はDefaultでOK)を選択。

後は、「Create AVD」ボタンをクリックし、AVDを作成する。

「Android SDK」画面で作成したAVDを選択状態にし「Start」をクリックすると、エミュレーターが起動する。

この際、異常なぐらいに時間がかかる(初回は特に?)が、我慢強く待つこと!

(エラーメッセージが出ていなければ)動きが異様に重いだけなのでいつかは起動する・・・はず。初回時は特に遅いが、まあ気長に待つしかない(最悪、10分近くかかるかも)

環境構築は以上で終了。あとは実際にプログラムを書いて動かすのみ!

以上!

_ [Ubuntu][FC][Linux][Debian][Android][GALAXY S]AndroidでHello World!(Linuxバージョン)

Windowsでやったのと完全に同じ。

なので、こちら(http://akihiro-i.net/~akihiro-i/diary/?date=20110522#p02)を見てください。

以上!

_ [Ubuntu][FC][Linux][Debian][Android][GALAXY S]Ubuntu11.04でAndroid NDKを使ってみる(C/C++でAndroid開発)

基本的にはWindowsでの設定(http://akihiro-i.net/~akihiro-i/diary/?date=20110523#p01)と一緒。cygwinがいらない分、むしろ簡単かも。

NDKのインストール

Android NDKをこちら(http://developer.android.com/sdk/ndk/index.html)からDL。

※Linuxの場合、最新は「android-ndk-r5b-linux-x86.tar.bz2」。

DLしたファイルを適当なフォルダに置き、解凍。

自分の場合は、ホーム下のandroidディレクトリに解凍するので、以下のようにした。

$ cd ~/android
$ wget http://dl.google.com/android/ndk/android-ndk-r5b-linux-x86.tar.bz2
$ tar jxf android-ndk-r5b-linux-x86.tar.bz2

インストール自体はこれで完了!

PATHの設定

ホームディレクトリにある「.bashrc」ファイルを適当なテキストエディタで開き、最後にPATHとANDROID_NDK_ROOTを追記する。

自分の場合(ホーム下のandroidディレクトリ内に配置)では、以下の2行を追加した。

export ANDROID_NDK_ROOT=/home/「ユーザ名」/android/android-ndk-r5b
export PATH=$PATH:/home/「ユーザ名」/android/android-ndk-r5b

修正したら、以下のコマンドで反映させる。

$ source ~/.bashrc

念のため、以下のコマンドを打ってパスがきちんと通っていることを確認する。

$ echo $ANDROID_NDK_ROOT
$ echo $PATH

正しく通っていれば、設定したパスが表示されるはず。

これで設定は完了。

最後に、サンプルプログラムを使って、正しく実行できることを確認する。

「Hello JNI」を実行(NDK付属のサンプルプログラム)

「hello-jni」というサンプルプログラムがついているので、それを使って環境が整っているかを確認する。

端末での作業

サンプルプログラムはNDKのインストールディレクトリの直下にあるsamplesディレクトリ以下にあるため、まずはそこに移動。

$ cd ~/android/android-ndk-r5b/samples/hello-jni/

プロジェクトの場所(.project , AndroidManifest.xml があるディレクトリ)に移動したら、「ndk-build」コマンドでNativeの実行ファイルを作成する。

$ ndk-build

これで、「android-ndk-r5b/samples/hello-jni/obj/local/armeabi/libhello-jni.so」 というライブラリが生成されたはず。

続いて、作成されたライブラリを使用し、Eclipse上でプログラムを生成する。

Eclipse上での作業

「新規」からAndroidプロジェクトを開き、「外部ソースからプロジェクトを作成」を選択して、先ほどのサンプルプロジェクト(~/android/android-ndk-r5b/samples/hello-jni)を参照する。

あとは、通常と同様にプロジェクトを作成し、「実行」すればOK!

AVD上でもちゃんと動くはず。

以上!

_ [Ubuntu][FC][Linux][Debian][Android][GALAXY S]純正のAndroid NDKを使ってAndroid上でOpenCV2.2を動かす(OS:Ubuntu 11.04)

参考:

http://opencv.willowgarage.com/wiki/AndroidTrunk#Windows.28native.29

これもWindowsの場合とほぼ同じ。

基本的に、OpenCVの公式wiki(http://opencv.willowgarage.com/wiki/Android?highlight=%28%28Android2.2%29%29)に書いている、「AndroidTrunk」の方法そのもの。

というか、明らかにLinuxのほうが楽です。

必要となるプログラム(make、cmake、ant、swig)のインストール

面倒なのでaptで入れてしまおう。

$ sudo apt-get install cmake
$ sudo apt-get install ant
$ sudo apt-get install swig

OpenCVのコンパイル

svnを使ってOpenCVのソースを入手。

$ sudo apt-get install subversion
$ cd ~/android/
$ svn checkout https://code.ros.org/svn/opencv/trunk/opencv

DLしたOpenCVのディレクトリに入り、コンパイル用のファイル群を作成。

$ cd opencv/android
$ sudo ln -s ~/android/android-ndk-r5b /opt/android-ndk-r5b
$ sh ./scripts/cmake_android.sh

出来上がったbuildディレクトリに入り、OpenCVをコンパイル。

$ cd build
$ make -j8

なお、コンパイルには非常に時間がかかるので注意すべし!(多分30分ぐらい?)

[100%]と表示されれば、コンパイル完了。

ライブラリの作成自体はこれで終了。

サンプルプロジェクトの作成

$ cd android/android-opencv
$ sh ./cmake_android.sh
$ cd build
$ make -j4
$ cd android/android-opencv
$ sh project_create.sh
$ ant compile
$ ant debug

正直、これが何をやってるかがよくわからん。

とりあえず、debug用のapkも作れるので、実際に動かして見ればわかるかな?

※カメラから画像を取得するだけのサンプルプログラムでした。

サンプルプログラムのコンパイル(断念)

まず、「opencv」下の「android/apps/OpenCV_SAMPLE」に移動し、コンパイル。

$ cd ~/android/opencv/android/apps/OpenCV_SAMPLE
$ mkdir build
$ cd build
$ cmake ..
$ make

で、プロジェクトを作成してantでコンパイル。

$ cd android/apps/OpenCV_SAMPLE
$ sh project_create.sh
$ ant compile

これでapkファイルが出来あがる。

公式では

$ ant install

までやっているが、とりあえず、apkを作成して自分で移動させてインストールしたほうが分かりやすいと思う。

あとは、実際にapkファイルからインストールを行い、動くことを確認すれば完了!

・・・のはずなんだが、cmakeでコケてしまってコンパイルできない。

エラーとしてはこんな感じ。

CMake Error at jni/CMakeLists.txt:10 (find_package):
  Could not find module FindOpenCV.cmake or a configuration file for package
  OpenCV.

  Adjust CMAKE_MODULE_PATH to find FindOpenCV.cmake or set OpenCV_DIR to the
  directory containing a CMake configuration file for OpenCV.  The file will
  have one of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

CMake Error at jni/CMakeLists.txt:11 (FIND_PACKAGE):
  Could not find module FindAndroidOpenCV.cmake or a configuration file for
  package AndroidOpenCV.
  Adjust CMAKE_MODULE_PATH to find FindAndroidOpenCV.cmake or set
  AndroidOpenCV_DIR to the directory containing a CMake configuration file
  for AndroidOpenCV.  The file will have one of the following names:
   AndroidOpenCVConfig.cmake
   androidopencv-config.cmake
-- Configuring incomplete, errors occurred!

cmakeわかんねー。何でandroid-opencvの方はコンパイルできるんだ?

とりあえず今日のところは以上!

そのうち原因を究明する・・・かも。

_ [Ubuntu][FC][Linux][Debian] proxy認証が必要な環境においてLinuxのapt-getやwgetを使う方法

参考:

http://discypus.jp/wiki/?Linux%2Fapt.conf
http://d.hatena.ne.jp/taiyo/20080401/p2
http://pamo.dip.jp/blog/archives/000327.html

synapticについてはGUIで設定できるので省略。

apt

aptについては、「/etc/apt/apt.conf」に以下の要領で設定を追記すればOK。

Acquire::http::Proxy "http://username:password@proxy.hoge.jp:80";
Acquire::ftp::Proxy "ftp://username:password@proxy.hoge.jp:80/";

この場合、「proxy.hoge.jp」というプロキシサーバの80番ポートに、「username」というユーザで「password」というパスワードを使って接続するという設定になっている。

また、認証が無い場合は、

Acquire::http::Proxy "http://proxy.hoge.jp:80";
Acquire::ftp::Proxy "ftp://proxy.hoge.jp:80/";

でOK。

適宜、自分の環境にあわせて変更すること。

wget

wgetを使いたい場合は、「/etc/wgetrc」を

https_proxy = http://username:password@proxy.hoge.jp:80
http_proxy = http://username:password@proxy.hoge.jp:80
ftp_proxy = http://username:password@proxy.hoge.jp:80

use_proxy = on

のように修正すればOK。

認証が要らない場合は、

https_proxy = http://proxy.hoge.jp:80
http_proxy = http://proxy.hoge.jp:80
ftp_proxy = http://proxy.hoge.jp:80

use_proxy = on

でOK。

以上!

_ [Windows][雑記] Windows上でVMWare Playerをインストールすると無効化されてしまう、ドライブのAutorun機能を復活させる

参考:

http://inspiron1720.seesaa.net/article/51007703.html

WindowsにVMWare Playerをインストールすると、VM上のOSからのアクセスに備えてドライブのAutorun機能(CDとかDVDを入れると『自動再生』うんぬんとか言ってくるアレ)が無効化されてしまう。

基本的にはこれで問題は無い(というか、ホストOSからのアクセスを考えると無効化するのはおかしな動作ではない)のだが、アンインストールしても設定を戻さないのは困り者。

なので、以下の方法でドライブのAutorun機能を復活させる。

まず、「ファイル名を指定して実行」(7の場合は「プログラムとファイルの検索」)に「regedit」と入力し、レジストリエディタを起動。

続いて、「検索」で「NoDriveTypeAutoRun」を探し、その値を255(16進数ではff)から145(16進数では91)に変更する。

これでOK!

再起動後にはAutorun機能が復活しているはず。

_ [Windows][Ubuntu][FC][Linux][Debian] proxy認証が必要な環境においてeclipseの「新規ソフトウェアのインストール」を使う方法

eclipseを起動し、「Window」→「Preferences General」→「Network Connection」を選択。

「Active」を「Manual」に変更し、「HTTP」および「HTTPS」の設定を行えばOK。

なお、プロキシ側にsocksの設定が無い場合、下手に「SOCKS」を設定してしまうと接続できなくなるので注意!

_ [Windows][Ubuntu][FC][Linux][Debian][Android][GALAXY S]proxy認証が必要な環境において、eclipseからAVDをインストールする方法

参考:

http://d.hatena.ne.jp/inouema/20100408/1270684891

proxyが設定された状態で「Android SDK and AVD Manager」からAVDをインストールしようとすると、以下のようなエラーが出て止まってしまう。

"Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml, reason: dl-ssl.google.com,"

google先生に聞いてみると、『「Android SDK and AVD Manager」を開き、「setting」からproxyの設定をすればいい』とか言われるが、少なくとも自分の環境では、eclipseから「Android SDK and AVD Manager」を起動しても「setting」なんてメニューは見つからない。

更に調査を続けた結果、驚きの結果が!

実は『eclipseから』「Android SDK and AVD Manager」を開くのではなく、直接「Android SDK and AVD Manager」を起動すればきちんと「setting」が表示される模様。

なんだそれー。

※ちなみに、Windowsの場合はSDKの直下の『SDK Manager.exe』、Linuxの場合はSDKの直下にある「tools」ディレクトリ内の「android」が「Android SDK and AVD Manager」の実体。

なので、eclipseを介さずに直接こいつを起動し、proxyの設定をすればOK!

なお、proxy認証が必要な場合は、サーバのアドレスとポート番号さえ設定しておけば、接続時にユーザ名とパスワードを聞いてくれる。

proxyの設定が終わったら、とりあえず「Android SDK and AVD Manager」(起動していれば「eclipse」も)を閉じる。

これで次からはプロキシの設定が反映されるはず。

以上!


2011/06/11(Sat) 休日ー [長年日記] 編集

_ [雑記] GoogleAdsenseのアカウント、完全停止

5/28に連絡して、6/11に「検討した結果、AdSense アカウントの再開は不可能」という旨のメールが来た。

異議申し立てしてから大体2週間か。

結局なにが原因だったのかはわからんが素直にあきらめるしかないか。

というわけで、HPに埋め込んでいたAdsense削除ー。

google検索の方はどうしよう?Adsense無効になってもまだ使えるのか?

※やっぱり駄目だった。普通のgoogle検索に戻すか。

_ [雑記]楽天アフィリエイトの「楽天モーションウィジェット」がいろいろ凄い

Google Adsenseが使えなくなったので、代わりに楽天アフィリエイトを始めてみた。

楽天のアカウントは既に持っていたので、サイトのURLを登録するだけで使えて楽ちん、ってのが一番の理由だったりする。

どうせ収益とかは期待していないしね。

ただ、記事ごとにわざわざ商品を貼って・・・てのが面倒だなぁ、と思っていたのだが、どうやら「楽天モーションウィジェット」(http://affiliate.rakuten.co.jp/widget/)というのを使えば、勝手に商品を紹介してくれるらしい。

これを実際に使ってみたのが、下のほうにある横長いヤツ。

基本的には記事に沿った商品を紹介するらしいが、訪問者の楽天会員の場合は、その履歴を元におすすめ商品を紹介してくれるっぽい。

・・・これ、HPを作る側としては便利だけど、訪問者にとっては、すっっごい気持ち悪いよね。

初めて来たサイトで、自分の趣味に完全にマッチした商品が並んでるとか、恐怖以外の何者でもない。

ということで、下のバーに、自分の趣味にマッチしたいろいろとアレな商品がズラリと並んでいても、それは私のせいじゃないです。

まあ、この「おすすめ商品を掲載」は無効にも設定できるし、記事の内容に関係なく楽天市場のランキング上位の商品を掲載することも出来たりと、かなり便利ではある。

さて、どうなることやら。

_ [雑記]Amazonアソシエイトに登録してみた

ついでにAmazonアソシエイトも登録してみた。

楽天の「楽天モーションウィジェット」が優秀なので、amazonにもそれっぽいのがないのか調べたところ、「Amazonおまかせリンク(R)」(https://affiliate.amazon.co.jp/gp/associates/network/build-links/optimized/main.html)ってのがそれっぽい。

縦の長さが楽天のより短いので、HPの上部にAmazon、下部に楽天という配置にしてみた。

あと、「サーチボックスリンク」(https://widgets.amazon.co.jp/Amazon-Search-Widget/?dt=compact)てのが、普通に便利そうだったので試してみる。

とりあえず一番バランスがよかった「楽天モーションウィジェット」の横に並べてみた。

・・・別にこれって怒られないよね?


2011/06/14(Tue) 配属されてから2週間か・・・ [長年日記] 編集

_ [雑記]Wikiページ作った

こちら(http://akihiro-i.net/~akihiro-i/wiki/)。

なんか左上のほうに謎のリンクが出来ているが、これがそれです。

基本的にはこの日記で書いた情報の中で、少しは役に立ちそうなものを再構成して載せていきます。

が、名前の通り【チラシの裏】なので、これに関係なく書きたいことがあれば自由に書いてください。

FrontPageの注意書きさえ守ってもらえれば、どんな使い方をしてもOKです。

_ [Android][tDiary][GALAXY S][tDiary][雑記] tDiaryで作ったHPをAndroid/iPhone向けにカスタマイズ(一部の記述を無効化する)

参考:

http://www.tdiary.org/20100404.html

ヘッダやフッタの記述を「<% unless @conf.iphone? %>」と「<% end %>」で囲むと、その部分がAndroid/iPhoneからのアクセスに対して反映されなくなる、というメソッドを利用するのが一番楽。

例えば、

<% unless @conf.iphone? %>
<div class="sidebar">
   :
</div>
<% end %>

とすると、Android/iPhoneからのアクセスに対しては、<div class="sidebar">から</div>までの記述が反映されなくなり、サイドバーを無効化できる。

実際に見てみるとわかるが、サイドバーがあると表示がかなり圧迫されるうえ、とてもカッコ悪い。

そのため、参考元でも言われているように、とりあえずサイドバーは無効化しておいたほうがいい。

これ以外については、自分自身で細かく修正しながら試行錯誤するしかない。

例えば、自分の場合、タイトルの表示を

<div style="text-align:right; margin:1em auto; font-size:3.5em;
line-height:0.6em; color:#f5f5f5;"><b><%= @html_title %></b></div>

と記述していたのを、

<div style="text-align:right; margin:1em auto;
<% unless @conf.iphone? %>
font-size:3.5em;
<% end %>
line-height:0.6em; color:#f5f5f5;"><b><%= @html_title %></b></div>

と書き直すことで、Android/iPhoneから見たときにはタイトルの文字を大きくしないように設定した。

ただ、この方法だと元々のHPのレイアウトを削っていくことしか出来ないので、PCとまったく違う表示にしたい場合には、新しくページをつくりなおすか、CSSを直接いじる必要があると思われる。

以上!ガンバレ。


2011/06/15(Wed) (キムチ+めんつゆ+卵)*ご飯=謎どんぶり [長年日記] 編集

_ [Windows]「Windows Genuine Advantage (WGA) Notifications」のインストールが終了しない場合

主にXPで発生?

参考:

http://www.monster.ne.jp/~hal/blogb/log/eid109.html

WindowsUpdateでWGA( KB 905474 )をインストールすると、次の起動時に自動的にインストールウィザードが起動する。

が、時折このインストールウィザードが途中で止まってしまい、インストールが完了しない場合がある。

具体的には、80%ぐらいまでは進むものの、「インストールを終了しています」「インストール後にプロセスを実行しています」という表示で固まってしまう。

しかもタスクマネージャーから強制終了しても次の起動時にはまた起動するという嫌がらせ!

WGA自体、そっちの都合で入れてるようなもんなんだから、インストールぐらいまともにしろといいたい。きちんと正規版使ってる人間に迷惑かけるなっての。

それはそれとして。

とりあえず確認するのは以下の点。

・ウィルス対策ソフトの設定(妨害していないか等)
・ネットワークの設定(プロキシが設定されているか等)

または単純にスペック不足か。

これらのどれも該当しない場合、次の方法でうまくいくことがある。

1.「インストールウィザード」を強制終了

普通の方法では終了してくれないので、タスクマネージャを使ってプロセスを削除。

2.次回起動しないように、スケジュールされたタスクを削除

「コントロールパネル」から「タスク」を開き、登録されている「WGAsetup」のタスクを削除。

3.Windowsを再起動

もし万が一、インストールウィザードが立ち上がってしまった場合、とりあえず何もせずに放置し、次のステップに進む。

4.「WgaTray」を起動後、「WGAsetup」を起動する

「インストールウィザード」を行う前に、「WgaTray」を実行する。

実行ファイルは「c:\windows\system32\WgaTray.exe」(実行はダブルクリックでOK)。

なお、起動しても何の反応も無いので注意。多分何回起動させても大丈夫なので、心配なら数回やっとけば安心。

続いて「インストールウィザード」を起動。

実行ファイルは「c:\windows\system32\KB905474\wgasetup.exe」

後は普通にウィザードを進めていけばOK。

これでも固まる場合は知らん。

以上!


2011/06/18(Sat) さて、一人カラオケでも行くか [長年日記] 編集

_ [Android][Windows][Linux][Debian][Ubuntu]eclipseでAndroidのプロジェクトが実行出来ない(出来なくなった)場合

もちろん大半はプログラムがおかしいのが原因。

が、実際には『プログラムには絶対に間違いなどない!』『さっきまでコンパイルできたのに・・・』『何も変更していないのに急にコンパイルできなくなった!』という状況でもエラーが出ることがある。

それは、『xmlファイルを選択した状態で』実行(デバッグ)を行った場合。

具体的には、以下のようなエラーが出る。

Error in an XML file: aborting build.
res\layout\main.out.xml:0: error: Resource entry main is already defined.
res\layout\main.xml:0: error: Resource entry main is already defined.
main.out.out.xml:1: error: Error parsing XML: no element found
main.out.xml:1: error: Error parsing XML: no element found

これは、xmlファイルを選択した状態で実行(もしくはデバッグ)を行うと、『**.out.xml』という空のファイルが自動で生成されてしまうために起きる。

なので、解決方法としては、この生成された『**.out.xml』(**の部分は元になったxmlファイルによる)を全て削除し、『xmlファイル以外を選択した状態で』実行(もしくはデバッグ)を行えばいい。

さて、これはいったいどこのバグなんだろうか?

_ [Android][Windows][Linux][Debian][Ubuntu]AVD(Androidのエミュレータ)の方向を変える

参考:

http://techbooster.jpn.org/andriod/ui/721/

画面の向きを変えたいエミュレータのウィンドウを選択し、「CTRL + F11」を押せばOK。

押すたびに横、縦、横・・・と変わる。

_ [雑記][VPS][tDiary]googleに登録されている自分のサイトの情報を確認

参考:

http://www001.upp.so-net.ne.jp/wakan/Others/GoogleDeleted.html

「info:」という演算子をつけて検索することで、googleに登録されている情報が確認できる。

例えば、この日記の場合は、googleで

info:http://akihiro-i.net/~akihiro-i/diary/

と検索すればいい。

_ [雑記][VPS][tDiary]googleにサイトを登録するには

こちら(http://www.google.co.jp/addurl/)から登録したいURLを指定するだけ。

また、削除したい場合も同様にこのページからURLを指定すればいい。


2011/06/20(Mon) そろそろ新入社員の試用期間クリアだ・・・! [長年日記] 編集

_ [雑記]バッファローの外付けHDDに使われているディスクのメーカーを見分ける方法

参考:

http://anti.dmz-plus.com/2008/01/25/buffalo_usb_hdd_sale/
http://pub.ne.jp/spitz/?entry_id=609119
http://bbs.kakaku.com/bbs/05384012697/SortID=7243973/
http://bbs.kakaku.com/bbs/05384013143/SortID=8650221/

バーコード付近の小さなシールの色と形でHDDのメーカを識別できるらしい。参考元のサイトの情報をまとめると、以下の説が有力。

黒丸:Maxtor
赤丸:東芝
黄丸:Seagate
緑丸:富士通
橙丸:日立
白丸:Sumsung
白角:IBM
青角:NEC
赤角:WesternDigital

ただし、信憑性のほどは不明。所詮は噂レベルなので、もし狙ったものが入ってなくても自分は責任持てません。


2011/06/21(Tue) ここのタイトルを考えるのがたまに面倒になる [長年日記] 編集

_ [雑記]Webページの表示にかかる時間を分析してくれるサイト(自分のHPの重さをチェック)

さて、これは重いと見ていいんだろうか?

_ [Android][Debian][Ubuntu][Linux][FC][GALAXY S][Windows]AndroidのプロジェクトファイルをJavadocにかける際に生じうるエラーの対処法(文字化け,パッケージが見つからない)

具体的には以下のようなエラーが出た場合の対処法について書く。

hogehoge.java:60:警告:この文字は、エンコーディング MS932 にマップできません。
* 菴懈?占???シ壻シ願陸譎?螟ァ
         ・
         ・
import android.app.AlertDialog;
hogehoge.java:10: パッケージ android.os は存在しません。
import android.os.Bundle;
hogehoge.java:12: パッケージ android.widget は存在しません。
         ・
         ・                                        ^
hogehoge.java:31: シンボルを見つけられません。
シンボル: クラス Activity
public class MyActivity extends Activity
         ・
         ・

これには2つの原因があるので、それぞれ解決していく。なお、ここではEclipseを使ってのJavadocの実行について述べるが、コマンドの場合も同様の手法で解決できる。

文字化けを直す

参考:

http://www25.atwiki.jp/dotcom/pages/318.html

こちらは単純に、ソースコードのエンコードが想定していたのと違うことが原因。

Windowsの場合Eclipseが吐き出すコードはUTF-8なので、Javadocのオプションに文字コードとしてUTF-8に指定して実行すれば解決できる。

Linuxの場合はディストリビューションによってデフォルトの文字コードの設定が違うため、nkfや適当なテキストエディタで文字コードを調べておく必要がある。

オプションの指定方法は以下の通り。

  1. Eclipseを起動し、「ファイル」から「エクスポート」を選択
  2. 「エクスポート」から「Java」⇒「Javadoc」を選択し、「次へ」
  3. 「Javadocコマンド」に「Javadoc.exe」をフルパスで指定し、「次へ」
  4. さらに「次へ」
  5. 「Javadoc引数を構成する」という画面になるので「追加のJavaDocオプション」のところに以下の行を追加
-encoding UTF-8 -charset UTF-8

ここではUTF-8を指定しているが、この部分は自分の環境に合わせた文字コード書き換えること。

この状態で完了を選択すれば、文字化けのエラーは消えたはず。

パッケージおよびシンボルが見つからないのを直す

参考

http://osdir.com/ml/Android-Discuss/2010-02/msg00134.html

こちらも、Javadocのオプションから「android.jar」のクラスパスを指定することで解決できる。

オプションの指定方法は上と同じなので省略。

「追加のJavaDocオプション」に以下の記述を追加すればいい。

-classpath "C:\Program Files (x86)\Android\android-sdk\platforms\android-7\android.jar"

なお、「android.jar」のパスは環境によって異なるので適宜修正すること。また、対象とするAndroid OSのバージョンによっても「platforms」以下が変わってくることに注意すべし。

まとめ

Javadocを実行する際にオプションで以下を指定すればいい。

-encoding UTF-8 -charset UTF-8 -classpath "C:\Program Files (x86)\Android\android-sdk\platforms\android-7\android.jar"

これはコマンドから実行する場合でも同様。


2011/06/24(Fri) ですのっ!って多分一生使うことの無い言葉だよなぁ [長年日記] 編集

_ [Windows][Linux][Ubuntu][FC][Debian][Firefox]Firefox5.0(4.0)で互換性の無いアドオンを使えるようにする(「Force Addon Compatibility」)

参考:

http://gigazine.net/news/20110323_firefox4_uncompatible/

6/21から、Firefox5.0がインストール可能になった。

なので、自分も早速試してみたのだが、日ごろお世話になっている「Inline Translator」(選択したテキストを即座に翻訳してくれるアドオン)がまだ5.0に対応しておらず、無効化されてしまった。

これは困る。

ということで、互換性のないアドオンを強制的に使えるようにするアドオン「Nightly Tester Tools」を使うことにした。

入手は「アドオンの検索」から簡単に出来るので省略。とりあえずインストールしてFirefoxを再起動する。

使い方は、

1.「ツール」から「Nightly Tester Tools」を選び「Force Addon Compatibility」をクリックし、
2.「Restart」をクリックしてFirefoxを再起動

するだけ。

これで、互換性の無いアドオンが使えるようになる。

ただし、あくまで『互換性の無いアドオン』なので、問題が起きても自己責任でお願いします。

以上!


2011/06/25(Sat) Firefox5.0の違いが分からん! [長年日記] 編集

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidでlayout_widthを全体の割合(%)で設定する

参考:

http://www.atmarkit.co.jp/fsmart/articles/android05/android05_2.html
http://y-anz-m.blogspot.com/2010/09/androidlayoutweight.html
http://wikiwiki.jp/android/?UI%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FLinearLayout.LayoutParams

この場合、android:layout_widthではなく、android:layout_weightを使ってしていすればいい。

android:layout_weightは、配置する際のオブジェクトの占める割合を、重み付けにより指定するもの。

なので、android:layout_weightが1のオブジェクトAと、android:layout_weightが3のオブジェクトBを並べて配置した場合、画面に占める割合は、

A:B = 0.25:075

となる。なお、未設定のオブジェクトは0として扱われる。

具体例として、2つのボタンをそれぞれ50%の割合で配置したい場合は、xmlレイアウトに次のように書く。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/TestWeight"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
       <Button android:id="@+id/Button1"
               android:layout_width="0dip"
               android:layout_weight="1"
               android:layout_height="wrap_content"
               android:text="left"/>
       <Button android:id="@+id/Button2"
               android:layout_width="0dip"
               android:layout_weight="1"
               android:layout_height="wrap_content"
               android:text="right"/>
</LinearLayout>

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidでボタンをクリックした際に呼ばれる関数(ボタンハンドラー)をxmlファイルから設定する(SDK1.6以降)

参考:

http://www.taosoftware.co.jp/blog/2009/10/_androidonclick_layoutsdk16.html

匿名クラス等を使ってボタンごとに書いていくのもいいのだが、うまく書かないと、ソースがごちゃごちゃしてしまう。

そこで、xmlレイアウトでそれぞれのボタンごとに呼び出される関数の名前を指定しておき、ソースにその実体を書くという方法を説明する。

なお、この方法はAndroid SDK1.6以降で導入された模様。

具体例を以下に示す。まずxmlファイルに、

<Button android:text="@+id/button1"
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:onClick="button1_click_handler"></Button>

と書く。ここで重要なのは、最後の行の、「android:onClick」に「"button1_click_handler"」というハンドラーを指定している部分。

続いて、ソースファイルを開き、アクティビティのクラス内に先ほど指定して関数(button1_click_handler)の実体を記述する。

public class hogehoge extends Activity{
    ・
    ・
    public void button1_click_handler(View view){
        Log.v(TAG,"Button1 clicked");
    }
}

これで、button1をクリックすると「button1_click_handler」が呼ばれるようになった。

なお、ログはデバッグ画面やlogcatで確認できる。

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]AndroidでEditText(TextView)のカーソル位置を取得する

参考

http://developer.android.com/reference/android/widget/TextView.html
http://developer.android.com/reference/android/widget/EditText.html

カーソル位置は、EditTextの関数である

getSelectionStart()

もしくは

getSelectionEnd()

を使うことで取得できる。それぞれ、文字列の選択されている位置の先頭および末尾の位置をintで返す関数。カーソルが無い場合は-1が返ってくる。

なお正確には、これらはEditTextではなく継承元のTextViewで定義されている関数なので、詳細を調べたい場合には注意。

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidで自作アプリ起動時に自動的にソフトキーボードが立ち上がるのを防ぐ

参考:

http://y-anz-m.blogspot.com/2010/05/android_17.html

Activityの起動時に、フォーカスがEditText等の編集可能なオブジェクトに当たっていると、自動でソフトキーボード(softinput)が起動することがある。

※この辺りのデフォルトの動作についてはあまり規定が無いようで、同じアプリでも機器によってはソフトウェアキーボードが起動しないこともある。経験上、AVDでは立ち上がらないことが多い。

これを防ぐためには、以下のようにソフトキーボードのモードを設定する。

import android.view.WindowManager;
   ・
   ・
   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
       setContentView(R.layout.main);
   }

setSoftInputModeのパラメータについては、こちら(http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html)を参照のこと。

なお、「SOFT_INPUT_STATE_ALWAYS_HIDDEN」を指定した場合でも、テキストボックスをタップすることでソフトキーボードを起動できる。

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidで静的なオプションメニューを作成する

参考:

http://android.roof-balcony.com/activity/optionmenu/
http://www.adakoda.com/android/000085.html

onCreateOptionsMenu()を実装すればいい。なお、この関数はActivity生成時に一度だけ呼び出されるものなので、動的なオプションメニューを設定したい場合には使えない。

具体的を以下に示す。

   public static final int MENU_1 = Menu.FIRST+1;
   public static final int MENU_2 = Menu.FIRST+2;
   public static final int MENU_3 = Menu.FIRST+3;
   public static final int MENU_4 = Menu.FIRST+4;

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       MenuItem menu_1 = menu.add(Menu.NONE, MENU_1, Menu.NONE, "menu1");
       MenuItem menu_2 = menu.add(Menu.NONE, MENU_2, Menu.NONE, "menu2");
       MenuItem menu_3 = menu.add(Menu.NONE, MENU_3, Menu.NONE, "menu3");
       MenuItem menu_4 = menu.add(Menu.NONE, MENU_4, Menu.NONE, "menu4");
       return super.onCreateOptionsMenu(menu);
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
       default:
           ret = super.onOptionsItemSelected(item);
           break;
       case MENU_1:
           break;
       case MENU_2:
           break;
       case MENU_3:
           break;
       case MENU_4:
           break;
       }
       return ret;
   }

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidでオプションメニューにアイコンを設定する

参考:

http://www.taosoftware.co.jp/blog/2008/11/android_5.html
http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=55

MenuItemの関数である「setIcon()」を使えばいい。

具体的には以下のような記述を行う。

MenuItem menu_cancel = menu.add(Menu.NONE, Menu.FIRST+1, Menu.NONE, "Cancel");
menu_cancel.setIcon(android.R.drawable.ic_menu_close_clear_cancel);

menu.addについての説明は省略。

ここで、アイコンとして「android.R.drawable.ic_menu_close_clear_cancel」を設定しているが、これは元々Androidが持っているシステムアイコンである。

Android 1.5ではあるが、こちら(http://kapsencode.com/android_drawable/ )のサイトで全アイコンを図付きで紹介してくれているので参考にされたし。

また、自作アイコンを使いたい場合は「./res/」内の3つのdrawableディレクトリにそれぞれ使用したいアイコンの画像を置き、「R.drawable.ファイル名(拡張子無し)」の書式で記述すればいい。

なお、それぞれのディレクトリに置くアイコンのサイズは、ldpiが36x36ピクセル、mdpiが48x48ピクセル、hdpiが72x72ピクセルである。

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidでクリップボードを使用する

参考:

http://d.hatena.ne.jp/LuckOfWise/20090819/1250691018

まず、クリップボードマネージャを宣言する。

ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

そしてクリップボードへ値()をコピーしたい場合は以下のように書く。

cm.setText("この文字列をコピーします");

また、クリップボードの値を取得したい場合は、

String str = cm.getText();

とすればいい。

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidでタイトルバーを非表示にする

参考:

http://www.adakoda.com/android/000155.html

「Activity.setContentView()」よりも前に「Activity.requestWindowFeature(Window.FEATURE_NO_TITLE)」を呼ぶことで、タイトルバーを非表示に設定できる。

import android.view.Window;
  ・
  ・
   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       requestWindowFeature(Window.FEATURE_NO_TITLE);
       setContentView(R.layout.main);
   }

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]Androidで画面の向きを固定する(回転させない)

参考:

http://se-suganuma.blogspot.com/2010/02/android_10.html
http://wikiwiki.jp/android/?%B2%E8%CC%CC%A4%CE%B8%FE%A4%AD%28ScreenOrientation%29

静的に設定したい場合は、AndroidManifest.xml内のActivityにandroid:screenOrientationの設定を加えればいい。

<activity android:name="hogehoge"
 android:label="@string/app_name"
 android:screenOrientation="portrait"/>

上記の例では「portrait」(縦固定)を指定しているが、他にも「landscape」(横固定)や、unspecified(システムに従う)等がある。

詳細についてはこちら(http://wikiwiki.jp/android/?%B2%E8%CC%CC%A4%CE%B8%FE%A4%AD%28ScreenOrientation%29)を参照されたし。

また、プログラム内で動的に向きを指定したい場合は、以下のようにする。

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       this.setRequestedOrientation((ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
       setContentView(R.layout.main);
   }

setRequestedOrientation()で指定できるパラメータについてはこちら(http://developer.android.com/reference/android/content/pm/ActivityInfo.html#screenOrientation)を参照のこと。

_ [GALAXY S][Android][Windows][Linux][Ubuntu][FC][Debian]AndroidでViewFlipperを使ってビューの切替えを行う

参考:

http://techbooster.jpn.org/andriod/application/1816/
http://d.hatena.ne.jp/Kazzz/20100420/p1

xmlレイアウトにViewFlipperを設定

layout/main.xml にViewFlipperを追加する。例えば、page1.xmlとpage2.xmlを切り替えたい場合は以下のように記述する

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   xmlns:android="http://schemas.android.com/apk/res/android">
   <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/main"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent">
   <include android:id="@+id/secondlayout" layout="@layout/page1" />
   <include android:id="@+id/firstlayout" layout="@layout/page2" />
   </ViewFlipper>
</LinearLayout>

なお、page1.xmlとpage2.xmlは、通常のレイアウトxmlと同様に設定すればいい。

プログラムからViewFlipperを操作

基本的な操作方法は以下の通り。

まず、ビューフリッパーを宣言する。

ViewFlipper viewflipper = (ViewFlipper) findViewById(R.id.main);

そして、ビューをひとつ戻したい場合には以下のようにする。

viewflipper.showPrevious();

また、、ビューをひとつ進めたい場合には以下のようにする。

viewFlipper.showNext();

その他、自動でスライドショーを行うようにしたり、切り替え時のアニメーションを設定したりと、簡単な記述でいろいろな機能が実現できる。

そのあたりについてはこちら(http://techbooster.jpn.org/andriod/ui/1916/)が詳しい。