SyntaxHighlighter

2012年7月8日日曜日

PlayStation Stuite Studioが起動しなかった時の対処のメモ

PlayStation Suite Studio(以下、PSS Studio)に興味を持ったので、早速インストール(入手はこちら)してみたら、起動時に強制終了を食らって起動しなかったので、その時の対処をメモ。

とりあえず、「PlayStation Suite Studio 起動しない」や「pss suite 起動しない」でググったら、「libgtk-win32-2.0.0.dll」が影響しているらしいというのがわかった。

そこでコマンドプロンプトで「where libgtk-win32-2.0.0.dll」をしたら2つヒット。
1つは、PSS Studioをインストールした際に一緒にインストールされるGTK#。
もう一つは、別にインストールしていたGIMP。

そもそもGTKはThe GIMP ToolKitらしいので、当然といえば当然なのかもしれません。

そこで、試しにGIMPのbinフォルダに入っている「libgtk-win32-2.0.0.dll」をリネームしたらPSS Studioが起動。GIMPの方はエラーが出るけど一応起動。
次に、GTKsharpの方をリネームすると、GIMPは起動して、PSS Studioは起動しない。

ということでこれが原因と特定できたので、あとはどう対処するか。

ググった際に、バージョンが違うとどうのこうの、とあったので、サクっとGTKSharpの方からGIMPへとコピーしたところ、すんなり両方立ち上がるようになりました。

ちなみに逆にコピー(GIMPフォルダ→GTKSharpフォルダ)した場合はPSS Studioは起動しませんでした。

もしかするとGIMPを最新版にすれば大丈夫なのかもしれません(うちのGIMPは2.6なので…)が、PSS StudioバンドルのGTK#に入っているDLLを使うのが妥当なようです。
#GIMPの動作を見ていないので、GIMPで動作不良を起こすかも…?

(2012年7月11日追記)
サンプルを試しに動かしてみようと、実行しようとしたらデバッグでエラー(エラーをメモするのを忘れました^^;)。
何事かと調べてみたら、どうやら「.NET Framework 4.5」がインストールされているとデバッグできないらしい(.NET Framework 4.0が必要)。
.NET Framework 4.5は、Visual Studio 2012 RCをインストールした時に一緒にインストールされます。
Visual Studio 2012 RCをアンインストールするか、.NET Framework 4.5をアンインストールすればよいのですが、私の場合、.NET Framework 4.5をアンインストールしてデバッグできるようになりました。

2012年5月13日日曜日

UbuntuでXampp+Mongrelを使ってRedmine 1.3.3を動かす

最近、RedmineをUbuntuで動かしてみているので、インストールについてのメモ。
サーバーの環境は全てデフォルトのまま、セキュリティ面など特に何も気にした設定にはなっていないので、その点ご了承ください。
Ubuntuは12.04 日本語Remixを使用し、VirtualBoxにインストールしてあります。
Ubuntu 12.04 日本語 Remixの入手はこちら
Redmineの入手はこちら。今回は1.3.3を使用します。

◆XAMPPをインストール
  1. こちらからXampp for linuxを入手
  2. 入手先に記載してある手順で圧縮ファイルを展開
    sudo tar zxvf xampp-linux-1.7.7.tar.gz -C /opt
  3. xamppを起動する
    sudo /opt/lampp/lampp start

これで、apache、MySQLが起動します

◆Ruby環境のインストール
以下のバージョンをインストールしていきます。
  • Ruby 1.8.7
  • rubygems 1.3.7
  • rake 0.8.7
  • rack 1.1.1
  • mongrel
  • その他付随するもの
  • (railsはRedmineのパッケージにバンドルされているものを使用) 

    • Ruby 1.8.7のインストール
      sudo apt-get install ruby1.8
      バージョンは「ruby -v」で確認します
      • rubygems 1.3.7のインストール
        1. こちらから「rubygems-1.3.7.tgz」を入手
        2. 任意のフォルダで解凍
          sudo tar rubygems-1.3.7.tgz
        3. 解凍したフォルダに移動
          cd rubygems-1.3.7.tgz
        4. rugygemsをセットアップ
          ruby setup.rb
        5. (※こちらは必要な方のみ任意で)
          このままだとgem実行の際「gem1.8」と入力しなければならないので「gem」で実行できるようシンボリックリンクを作成する
          cd /usr/bin
          sudo ln -s gem1.8 gem
          バージョンは「gem -v」で確認します
      • rake 0.8.7のインストール
        sudo gem install rake -v=0.8.7
        (sudo gem1.8 install rake -v=0.8.7)
        バージョンは「rake --version」で確認します
      • rack 1.1.1のインストール
        sudo gem install rack -v=1.1.1
        (sudo gem1.8 install rack -v=1.1.1)
      • mongrelのインストール
        sudo gem install mongrel
        (sudo gem1.8 install mongrel)
      • その他インストール
        sudo apt-get install ruby1.8-dev redmine-mysql 
      インストールしたgemの一覧とバージョンを確認する場合は
      gem list --local
      とすることでみることができます

      ◆Redmineの入手と設定
      基本的にはRedmine公式ページのインストール方法に従っています。
      1. こちらから1.3.3をダウンロード
      2. 任意のフォルダに展開
        sudo tar zxvf redmine-.1.3.3.tar.gz
      3. MySQLにredmine用のデータベースを作成
        /opt/lampp/bin/mysql -u root -p
        mysql >になったら
        create database redmine character set utf8;
        create user 'redmine'@'localhost' identified by '(任意のパス)';
        grant all privileges on redmine.* to 'redmine'@'localhost';
      4. (GUIで操作します)database.ymlを設定する
        config/database.yml.exampleをコピーしてdatabase.ymlを作成し、以下のように設定します
        production:
          adapter: mysql
          database: redmine
          host: localhost
          username: redmine
          password: (設定したパスワード)
          socket: /opt/lampp/var/mysql/mysql.sock
      5.  Redmineを展開したフォルダに移動
      6. セッションストア秘密鍵を生成
        rake generate_session_store
      7. データベースのマイグレーションを実行
        RAILS_ENV=production rake db:migrate
      8. デフォルトデータベースを登録
        RAILS_ENV=production rake redmine:load_default_data
      9. (必要に応じてtmp、log、filesのパーミッションを変更してください)
      ◆mongrelでサーバーを起動する
      1. (カレントディレクトリは引き続きRedmineを展開したフォルダです)
        下記のコマンドでmongrelを起動する
        ruby server/script mongrel_rails -e production
        (ポート3001の場合:ruby server/script mongrel_rails -e production -p 3001)
      2. 以下のような感じで出ていれば起動成功です
        => Booting Mongrel
        => Rails 2.3.14 application starting on http://0.0.0.0:3001
        => Call with -d to detach
        => Ctrl-C to shutdown server
      3. サーバーが起動しましたので、アクセスしてみる(ポート3000の場合)
        ブラウザでURL「http://localhost:3000」にアクセス

      これで一通り完了です。
      それと、このままではxamppもmongrel_railsも自動起動しないので、/etc/rc.localにコマンドを追記してシステム起動時に実行されるようにしておきましょうか。
      追記するコマンドは以下のとおり。
      /opt/lampp/lampp start
      ruby /(redmine保存先までのパス)/redmine-1.3.3/script/server /usr/bin/mongrel_rails start -d -e production

      2012年5月4日金曜日

      USBストレージまたはSDカードにインストールできませんでした

      IS05いじってたらハングアップして、リセットボタンで再起動後、アプリのアップデートなんかをする時、SDカードに移しているアプリで
      USBストレージまたはSDカードにインストールできませんでした
      てなエラーが出てインストールやアップデートが上手くいかなくなってしまった。

      で、ググったら以下のページを発見したので、忘れはしないだろうけどφ(..)メモメモ。
      SDカードにアプリをインストール出来ない現象 - 価格.com掲示板 -
      http://bbs.kakaku.com/bbs/-/SortID=12922435/
      なんでも「.android_secure」フォルダにある「smdl2tmp1.asec」を削除すればいいのだとか。
      削除する場合は、PCと接続してPC上から操作をする。ESファイルエクスプローラーでSDカード内を見たときは表示されませんでした。
      IS05に限らず、Android端末であれば起きるっぽいですね :(

      2012年4月9日月曜日

      右クリックからクリップボードにパスをコピーするツール

      ググるといろいろなツールが出てくるパスのコピーツールですが、なんとなくコンテキストメニューに表示される文字とか、追加したい種類とかがまちまちでどうにもちょうどいいのがなかったので、作ってみました。

      ドロップボックスにアップしましたので、使ってみたい方はこちらからダウンロードしてください。
      ◆Path Copy in Context Menu
      http://dl.dropbox.com/u/XXXXXXX/pathcopy.zip
      CodePlexに移しました。
       https://pathcopy.codeplex.com/



      コンテキストメニューに追加した状態
      設定画面
      readme.txtにも書いていますが、仕組みは簡単で、実行ファイルに2つの引数を渡して渡された引数を元にクリップボードにパスをコピーする、という動きになっています。

      このため―レジストリを直接操作することになってしまいますが―コンテキストメニューに表示される文字列も書き換えることができます(実行ファイルから再設定すると元に戻ってしまいますが^_^; )。

      本当ならコンテキストメニューに表示される文字列も自由に設定できるようにしたかったんですが、最近脱線しっぱなしなのでここでやめてしまいました。

      簡単にプログラムの解説をしますと、

      第一引数をswitch文で振り分けて、第二引数を「System.IO.Path.GetFullPath(args[1])」などとしてパスを取得し、「Clipboard.SetDataObject(取得したパス)」でクリップボードにコピーしています。

      引数が2つ未満の場合や第一引数が指定の値以外だった場合は、設定画面が表示されるようになっています。

      という単純な作りです。

      2012年3月10日土曜日

      Androidの各Density用に画像を変換するツール

      1つの画像を選択して、各Density用に変換・フォルダーに格納するツールを作ってみました。

      Image Resize For Android
      (Dropboxのパブリックフォルダーに入れましたが、ちゃんとDL出来るのかな…)

      CodePlexに移しました。
       https://irfa.codeplex.com/


      DLしたZIPを解凍して、exeファイル実行で起動できます。
      readme.txtやevolus pencilで作ったモックアップもあるので、御覧ください。
      また、実行には「.Net Framework 4.0」が必須となりますので、インストールしていない場合はインストールが必要になります(こちらからダウンロードできます)。
      WPF(?)&C#が初めてということもあり大雑把な作りなので、甘いところは多めに見て頂くか、こっそり教えていただけたらと思います。


      細かい経緯や使い方などは下記に書いていきますが、端的に申しますと

      ”毎回同名でサイズの違う画像を用意するのが面倒”
      ”SDK付属のアイコンを使うにしても、各フォルダーからそれぞれのフォルダーにコピーするのも面倒”

      ということで、ひとつの画像を選択することで、必要なサイズの画像と対応するフォルダーを用意するアプリケーションがあったらいいなと思い、いっその事作ってしまえ、と作った次第です。

      Androidアプリ開発をする時、ホーム画面やドロワーなどのアイコンやメニュー、タブなどのアイコンを作成するにあたって、いろいろな画面サイズに対応させるために複数のサイズの画像を用意して、それぞれの画面サイズに対応するdrawableフォルダーに追加しないといけません。
      drawableに一つの解像度を用意するだけでも良いかもしれませんが、アイコンが綺麗に表示されなかったりもするので、やはり各画面サイズに対応したアイコンを用意したいところです。

      ちなみに、各画面サイズに対応させるための方法について、Android Developersの「Supporting Multiple Screens」に記載されていますが、簡単に言うとresフォルダ下に
      • drawable-xhdpi
      • drawable-hdpi
      • drawable-mdpi
      • drawable-ldpi
      • drawable-nodpi
      • drawable-tvdpi
      というフォルダを用意してそれぞれのフォルダに「同名」の画像ファイルやXMLファイルを格納し、プログラムやLayoutでそのリソースを指定することで、対応する画面サイズに対応するサイズのアイコンが表示されるという仕組みになっています。

      Android SDKに入っている標準アイコンを使用する際も、hdpiのファイルをコピーし、mdpiのファイルをコピーし、hdpiのファイルをコピーし…イメージが違ったら一からコピーしなおし…を繰り返していて、日頃からもっと楽にできたらいいなと思っていた次第です。

      で、誰かのお役に立てればと、公開してみようかと思ったので、公開してみました。

      2012年2月20日月曜日

      自分でスマホをいじってみてわかったこと

      デバッグ用にとIS05を買ったわけですが、実際にスマホを所有するのはこれが初めて。

      それで触ってみて気付いたことをメモがてら忘れないようにと書き留めておきます。

      ◆Androidマーケットのアプリ紹介画像は、全部縦長(Portrait)のほうが良さげ
      横長の画像をアップしていると、縦持ち(Portrait)でその画像を表示した後、次の画像へスワイプしようとすると縦方向(Landscapeで横方向)にスワイプしないといけなくなる。ちょっとややこしい上面倒なので、アップする画像は全て横か縦に統一したほうが良さげ。

      ◆更新情報の自動付加される「1. 2.」は無視したほうが良さげ
      「1. 2.」が自動付加されるのはPCからみた時のみで、マーケットアプリから見たときは入力したままに表示されるようなので、
      Ver 1.0.0
      ・ファーストリリース
      Ver 1.0.1
      ・バグ修正
      のように書いていったほうが良さげ。

      ◆ボタンはある程度大きいほうがいい
      当たり前の話だけど、アプリによってはボタンがやたら小さかったり細かったりして、人差し指の”先”でタップしないとなかなか反応してくれなかったり。片手持ちの場合、持ち手の親指で操作することになるけど、その場合ほぼ反応してくれない。

      ◆SDカードへのインストールは許可しておいたほうが無難
      本体の容量が意外と手狭なので、SDカードへのインストールが出来るようにしておいたほうがユーザーフレンドリー


      ◆使用するPermissionの説明をアプリ概要に書いておいたほうが良さげ
      必要とするPermissionの一部しか使わない場合でもマーケット上やアプリ情報ではいろいろな情報を取得されているというように見えるので、どういった意図でそのPermissionを使用しているのか書いておいたほうが多少なりともユーザーに安心感を与えるかも。そのうち、各Permissionとマーケット上やアプリ情報で表示される内容の対応表でも作ろうかな(誰かもう作ってそうだけど)。

      ◆プリインストールアプリはアンインストールできない?
      アプリの評価を見ていると、「アンインストールできない」とか「アンインストールできるようにしてください」てな内容もあり、見ているとどうやらプリインストールされているアプリがアンインストールができない場合がある様子。端末メーカーによる仕様なので、アプリにどうこう言ってもしょうがないんだけどね。それでも使わないアプリが容量を占拠しているのはある意味ウィルス…

      ここからはIS05を使っての感想。SIM使ってないので、ケータイアップデートが出来ず、そのおかげでメジャーアップデート(2.2.1→2.3.4)もできない状態なので、アップデートをすれば改善される点もあるかもしれません。

      ・本体データ容量が少ない
       400MBですが、アプリをほいほい入れていったらあっと言う間になくなりました。SDカードに移せば、と思うところですが、次に出てくる弊害が…

      ・SDカードにアプリを入れておくと再起動後にしばらくアプリが見えない
      バッテリー切れや意図的に電源OFFして再起動させた後、SDカードに移しておいたアプリがしばらく表示されませんでした。突然インストールしたアプリが消えてはじめは何事かと思いましたが、共通してSDカードに移動したアプリだったこともあり、しばらく待ってみたらポコポコと現れてきました。そんなこともあり、SDカードに移動するアプリもあまりサイズが大きくないものや頻繁に利用するもの以外を中心に移動しています(アプリ情報だけなら大小関係ないかもしれませんが)。

      ・ホーム画面にショートカットを増やしたら挙動が…
      壁紙やウィジェットが表示される画面にショートカットを増やしていったら、ホーム画面をスワイプして移動する際にプチフリーズすることがしばしば。3ページ分がある程度埋まるくらいショートカットを置いた状態でアプリをあれこれいじっていたらフリーズ(電源ボタンも効かないので背面のリセットスイッチをポチ)。なので今は頻繁に使う分だけに厳選して置いてます。
      追記:ホームアプリを入れると結構そちらでは調子いいので、現在はGO LAUNCHER EXを利用しています。

      ・イヤフォンジャックカバーェ…
      IS05のイヤフォンジャックカバー、ただ差してあるだけなんですねw びっくりしました。しかもちょっと出っ張ってるし…なんか…ださい…
      上がカバー装着時。下が外した状態
      ・スクリーンショットが取れる (・∀・)イイ!!
      これは端末ごとに状況が異なるんでしょうか。IS05の場合、電源ボタンを押したままホームキーを押すとスクリーンショットが取れるんですね。端末をルート化しないといけないとか、ルート化しなくても済むアプリはあるけど登録が必要とかいろいろ情報を見ていた分、端末に標準でスクリーンショットが付いているのはありがたいですね。

      こんなところですか。IS05はサイズが小さい分画面サイズも小さいですが、手にすっぽり収まるサイズで普段使用するにはこのくらいの大きさがちょうどいいのかな、と思いました。店頭でデモ機を触ってる感じでは、大きくても4インチくらい、それ以上になると大きすぎて扱いにくそうな印象がありました。

      最近になってようやくAndroid 4.0対応端末の情報もちらちら出てきて、シャープもハイエンドモデルを中心にバージョンアップをする計画があるようですし、 Android 4.0端末が待ち遠しいですね。もうAndroid5.0(Jelly Bean)の発表が6月かも、という情報も出てきていますが。

      ちなみに、IS05を2.3.4にバージョンアップするには、まず端末のビルド番号が「1.00.07」以上でなくてはなりませんが、私の持っている端末は「1.00.02」。ビルドを上げるにはケータイアップデートをしなければなりませんので、SIMが必要になります。SIMを利用できるようにするには事務手数料2100円かかります。2.2.1のまま使うか、2.3.4にあげるか。Android DevelopersのResourcesにあるPlatform Versionsを見るとAPI Level 10が58.1%(2012年2月20日現在)になっているので、デバッグ用としても2.3.4にあげたほうがいいのかなぁ。などと思案中。

      2012年2月13日月曜日

      Action Bar実装編(前回の続き)

      前回の続きです。

      メニュー用のリソースも出来ましたので、メニュー表示をプログラムに実装して使えるようにしましょう。

      と言っても今回はいろいろ工夫したりしているわけではないので、Android Developersの「Menus」にあるようなリファレンスどおりの作り方になりますが(^^ゞ

      onCreateOptionsMenu()はこんな感じ。

      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.menu_main, menu);
       return true;
      }

      ちょこっと解説。
      MenuInflater でXMLからメニューの情報を使用します。
      で、nflater.inflate()で、作成したmenu_main.xmlをIDで指定します。

      次に、メニューが選択された時の動作、onOptionsItemSelected()はこんな感じです。
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
       switch( item.getItemId() ) {
        case R.id.appfinish:
         finish();
         break;
        case R.id.howto:
         showHelp();
         break;
        case R.id.about:
         showCredit();
         break;
       }
       return super.onOptionsItemSelected(item);
      }

      こちらは簡単ですね。
      switch 文を使って、 受け取った MenuItem の getItemId()で選択されたメニューアイテムのIDを取得して、caseで各IDを指定します。
      IDはmenu_main.xmlで各メニューアイテムに指定したIDを利用します。

      これでAndroid3.0以上の環境で実行すると Action Bar として実行され、Android 3.0以前では従来のようなメニューで表示されます。

      Action Barでの表示方法は前回書きました、show As Action の指定の方法で変わってきます。実際に設定して動かしてみると違いがよくわかると思います。

      最後に、アプリのバージョンアップです。

      マニフェストファイルの Version Codeを前回よりも大きい数字(今回の私の場合、1 → 2)に変更して、Version Nameも任意の値を指定(今回は1.0.0 → 1.1.0)、アップロード用の apk ファイルを作成したらAndroidマーケットのデベロッパーコンソールでアップロード済みのアプリを選択し、「APKファイル」タブを選択して、新規のAPKファイルをアップロード。アップロードが完了したら新しい方のパッケージを有効にして、必要に応じて「商品の詳細」タブでRecent Changes(更新情報)を記入して、「保存」をクリック。

      すぐ見ても反映されませんでしたが、一晩たった時点では反映されていました(最短どのくらいかは…あとで調べてみようと思います)。
      ちなみに、更新情報に

      あああ
      いいい

      というように書いたらそのまま出るのかと思ったら、
      1. あああ
      2. いいい
      というように、各行が番号付きで表示されるようでした。

      2012年2月12日日曜日

      今までのメニュー表示からActionBarを利用したメニュー表示に変更

      前回のエントリーでAction Barを使ってみようということで軽く調べてから、Androidマーケットにアップしている「シンプル電卓」を改良して、ついでにバージョンアップのテストもやってみようかという企画(?)です。

      一般的なMenuの作り方は
      private static final int MENU1_ID = Menu.FIRST;
      private static final int MENU2_ID = Menu.FIRST + 1;
      pivate static final int MENU3_ID = Menu.FIRST + 2;
      
      というような感じで、Menu用のIDを作って、
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
       boolean result = super.onCreateOptionsMenu(menu);
       // メニューアイテムを追加する
       menu.add(0, MENU1_ID, Menu.NONE, R.string.menu1Label).setIcon(R.drawable.ic_menu_close_clear_cancel);
       menu.add(0, MENU2_ID, Menu.NONE, R.string.menu2Label).setIcon(R.drawable.ic_menu_info_details);
       menu.add(0, MENU3_ID, Menu.NONE, R.string.label_about).setIcon(R.drawable.ic_menu_notifications);
       return result;
      }
      
      と、onCreateOptionsMenu()でMenuボタンを押した時に表示されるメニューを作成し、
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
       switch( item.getItemId() ) {
        case MENU1_ID:
         finish();
         break;
        case MENU2_ID:
         showHelp();
         break;
        case MENU3_ID:
         showCredit();
         break;
       }
       return super.onOptionsItemSelected(item);
      }
      
      てな感じで、onOptionsItemSelected()でメニューが選択された時の動作を決定するわけです。

      これを、Action Barを使用した作りにします。
      まずは、作成しているアプリのmin SDK VersionとTarget SDK Versionを決定します。
      Action Barが使えるようになったのはAndroid 3.0(Level 11)からなので、Target SDK Versionは11以上に設定しましょう。min SDK Versionは自分のアプリの最低条件をつけてやりましょう(私の場合はAndroid 1.6なので4です。)。

      次に「project.properties」にあるTarget SDKにも先ほど設定したTarget SDK Versionと同じ数字を「Android-xx」の「xx」につけましょう。そして、eclipse再起動。私の場合、eclipse再起動で後ほど設定するshow As Actionが有効になってくれました。

      下準備が整いましたので続いて、menu用のリソースを/res/menuの下に作ります(resの下のmenuフォルダはresを右クリックして[新規]-[フォルダー]です(eclipseの場合))。
      「Android XML File」を新規作成し、Resource Typeに「Menu」を設定、ファイル名を入力して(ここでは menu_main)完了。
      こんな感じの画面になります(Itemなどすでに追加済みですが…)
      res/menuのxml編集画面
       xmlを直接記述でもいいですが、ここはGUIで操作をしましょう。
      はじめは Menu Elements には何もありませんので、Add ボタンをクリックして、「Group」か「Item」を選択してOKを押します。
      すると、Menu Elements に一つデータが追加されました。
      後はそのアイテムのIDやTitle、Iconを設定します。
      次に、ようやくここで show As Action の設定です。
      show As Actionの右側の Select ボタンを押すと
      • never … Action Barには表示されない
      • ifRoom … Action Barにスペースがあれば表示する
      • always … 必ずAction Barに表示する
      • withText … Action BarにIconと共にテキストを表示する(Land Scape時のみ?)
      • collapseActionView … action viewを関連付けることで折り畳めるメニューを表示(Level 14から)
      の選択肢が表示されます。
      collapseActionViewですが、エミュレータで確認した限りでは、WVGA800では通常のMenuと同様にポップアップ表示、WXGA720ではひとまとめになって表示されました。
      collapseActionView
      なので、「ある程度の解像度から」と書きました。が、間違っていればご指摘をお願いいたします(他に設定すればWVGA800でもひとまとめ表示になるよ、など)。
      ※訂正:Nagoya0さんからのコメントにありますとおり、collapseActionViewを指定したために通常表示やまとまった表示になっていたのではなく、action viewを指定していないためにデフォルトの動作になっていただけのようです。
      collapseActionViewを使用する場合はandroid.widget.SearchViewのようなaction viewと関連付けて使用することで伸縮するメニューを利用することができるようです。
      SearchView を使った例。上が閉じた状態、下が展開した状態


      と、とりあえず、今回はここまで。次回は続きとAndroidアプリのバージョンアップについて書きたいと思います。

      次回:Action Bar実装編

      2012年2月6日月曜日

      ActionBarを使ってみようかと…

      android developers blogの「Say Goodbye to the Menu Button」でActionBarを使おうって言ってるので、とりあえず軽く触ってみて、ついでに、テストアップしたアプリもActionBar対応にしようかと思ったのですが…

      Dev GuideのAction Barのページ(こちら)を参照しながら作ってみると、res/menuのmenu.xmlで「android:showAsAction」を使おうとするとエラーでアプリがビルドできず。

      さてどうしたもんかと、Menu Resource(こちら)のページを見てみると「Introduced in API Level 11.」という記載が。

      Min SDK : 4、Target SDK : 14でやっていたのを両方11にしたら動くようになりましたが、はて、11以外では動かないのかな?
      それともサボってソースとその周辺だけ読んでいるせいでなんか見逃してるのかな?
      ちなみに、Min SDK:11だけでTarget SDKをなしにしてもダメでした。

      もうちょっと調べてみよう。

      追記:
      調べた結果、というか動かしているうちにMin SDK : 4、Target SDK : 14でも動くようになったので、更に見てみると「project.properties」のtarget-SDKも「android-14」にすることと、eclipseを再起動することで使えるようになりました。
      res/menu/menu.xmlを編集する際にGUI編集画面に「show as action」の入力欄が出ていない時はビルド出来ず、表示されるようになればビルドできるようになりました。

      あ、調べるついでに、Androidのマスコットの名前を再調査しました。
      以前調べた時には、もうなくなったページの配布画像の下に「droid : jpeg」とあったので、droidかなぁ、と思っていました(droidもロボットの意味でしょうけど)が、実際は「公式の名前はない」ということらしいです(こちらを参照)。Brand Guidelinesでも「Android Robot」ってしか書いてないですしね。
      他に、Googleの中の人たちはマイクと読んでいたり、犬のマスコットをアレックスと読んでいたり。
      まあそれでも、今後も言いやすいので「ドロイドくん」 と呼ぼうと思いますが。

      ちなみに、WikipediaのAndroidを見ると「正式名称はGoodies」と書いてありますが、もうなくなった「http://www.android.com/media/goodies.html」というページ(こちらの記事でスクリーンショットが見れました)に画像やらフラッシュバナーがあったのですが、このページのファイル名「goodies」やサムネイルの上の「Goodies」を名前と勘違いしたんだと思います。Goodiesは「グッズ」っていう意味でしょうからね。

      2012年1月27日金曜日

      Android Marketにテストアップしてみた

      Androidマーケットへ開発者登録が無事完了(前回エントリー)しましたので、続いてテストアップして見ました。

      手順としては、
      1. アップロード用のapkファイルを作成
      2. デベロッパーコンソール画面からアプリケーションをアップロード
      3. 「商品の詳細」で必要事項を設定
      4. 設定が終わったら、上の方にある「公開」ボタンをクリック
      5. apkファイル画面に「有効にする」というリンクがあるのでクリックする
        おそらく有効にしないと公開されないと思われます。
      これで完了。
      アップロード用のapkファイルは署名を付けないといけないのですが、私はASCII.jp
      これで作れる! Androidのアプリケーション ― 第11回
      を参考に作成しました。
      また、アップロード時の参考にThinkIT
      第4回 アンドロイドマーケットにアプリを公開しよう!(その2)
      を参考にしました。
      「アプリケーションをアップロード」をクリックするとこんな画面が出ます

      こちらはアップロード後&有効にした後です

      必要事項を設定
       スクリーンショットは2枚以上必須。高解像度アプリケーションアイコンというのはAndroidマーケット上の各所で表示されるときのアイコンになります。
      「マーケティングの除外」というのは、これを有効にすると「GoogleがAndroidマーケットやGoogleが運営しているサイトなど以外ではマーケティングしないでください」という意思表示になるようです。
      商品の説明を記入
      言語を設定(今回の場合、日本語のみに設定)して、タイトルと詳細説明(Description)を記入。ファーストリリースなので、Recent Changesは未記入。プロモーション画像なども無いので、Promotion Textも未入力です。
      あとはアプリケーションタイプとカテゴリを選択して、コピー防止(近々なくなるのでどちらもで変わらないらしいです)、レーティング、価格、公開地域、連絡先を入力し、同意事項をよく読んで同意したら「公開」です。

      公開後、Androidマーケットから検索してもすぐにはヒットしません。
      PCなどのWebからアクセス限定ですが、直接アプリのページや自分が公開しているアプリ一覧を表示する方法があります。
      一応、一晩立ってからAndroidマーケットの検索機能で検索して表示されるようになりましたが、アップ後直ぐに自分でダウンロードテストしてみたい場合は上記の方法を試してみてください。ちなみに、現在も同じかはわかりませんが、自分のアカウントで自分の有料アプリを購入することはできないようです(Google Groupsの日本アンドロイドの会のこちらを参照)。

      2012年1月24日火曜日

      Android Market開発者登録完了!

      昨日のエントリー(こちら)でAndroid Marketの開発者登録をしたけど処理中で完了しないから問い合わせした、ということを書いたけど、ついに登録完了しました!

      問い合わせ後のメールに返信して、それの回答メールのタイムスタンプが6:30頃なので、その頃に対応してくれたようです。

      登録処理が進むと以下のような画面になります。
      販売/配布契約書
      この契約書を読み、「同意して次へ」を押すと登録完了です。
      そして、自分のデベロッパーコンソール画面が以下のようになります。
      承認されました
      これでようやくアプリを公開できるようになったわけです。よかったよかった:-)

      Android Marketへ開発者登録。しかし…

      Twitterでもつぶやいてますが、Android Marketへデベロッパー登録から現時点(1/24 1:15)までの状況を。

      Androidアプリの公開にあたって、一番手っ取り早いのはGoogleが運営しているAndroid Marketに登録・公開する方法です。Android Marketに開発者登録をする場合、25USドルの登録料クレジットカードで決済する必要があります(執筆時点のレートが1ドル約77円なので約1925円)。

      私は逆引きAndroid入門というサイトの「開発者登録するには」というところを参考に実施しました。詳細はこちらをみていただくとして、下に簡単な手順を記します。

      1. (持っていない場合)Googleアカウントを作成する
      2. http://market.android.com/publish/にアクセスし、ログインする
      3. 必要な情報を入力し先にすすめる
        ここで電話番号を入力しますが、私の場合、携帯番号を「+81-90-xxxx-xxxx」と入力しました
      4. クレジットカードの情報と各必須項目を入力します
      5. 全て入力が終了したら注文を確定する
      6. 完了画面が表示されたら、「Android Market Developer Site」というリンクをクリックして開発者サイトに移動します
      7. すると以下のような画面が表示されます
      デベロッパーコンソール
       この画面の上部にある「Androidマーケットへの登録はまだ処理中です。」が消えれば、アップロードしたアプリが公開されるようになるのですが…私の場合、一晩経っても変わらないまま(´・ω・`)
      もう少しまとうかとも思いましたが、ググると、別アカウントで再登録したらすぐに処理が完了して、アプリを公開できるようになったということでしたので、とっとと問い合わせを出すことにしました。
      その問い合わせ先がこちらの右にある「サポートに連絡」へ進みます。アクセスするとわかるかと思いますが、この連絡先、英語しかありません。なんということでしょう\(^o^)/
      しかし、戸惑っていても仕方がありませんので先に進み、「Android Market Developers: Publishers & Merchants」から「Registration or Account Issues」の入力フォームに。

      必須項目を入力しつつ、Issue Typeに「I can not complete developer registration」を設定しFull Descriptionに(英語で)「注文処理したけど未だに処理中なんですが」的な内容を書いてsubmit!

      すると即効でメールが一通。こんなことをやってみてねという内容で大雑把に書きだすと以下のとおり。
      1.  Known Issue Pageを見てみてね
      2. そのアカウント、以前にAndroid MarketでSuspendedしてない?
      3. 違うクレジットカードで試してみて
      4. Cookieや履歴を削除してから試してみて
      5. JavaScriptを有効にしてね
      6. 違うブラウザで試してみてね。その際、拡張機能は全て止めてね
      7. それでもダメならこのメールに返信してね。ついでにスクリーンショットとOSのバージョンとブラウザのバージョンとブラウザのエラー情報やらhttpログやらがあったら頂戴
      このへんの情報もググッたときに見ていたので(クレカ以外)実施済み。ということでこちらも速攻で返信。

      で…その後、まだ「処理中」のまま。まあ、問い合わせしたばかりだし、とりあえず、もう一日待ってみることにして、進展があったら追記します。

      2012年1月21日土曜日

      Windows 7でイベントビューアーにいくつかのエラーを対処

      イベントビューアーを見たら色々エラーでてました。

      その中でMSのサポートなどに情報があり、無視しても良いものや対処方法が見つかったものを記載。
      • ソース:WMI「クエリ…云々…使用できませんでした」(Event ID 10)
        Windows Vista Service Pack 1、Windows 2008、Windows 7 または Windows Server 2008 R2 をインストールした後にイベント ID 10 がアプリケーション ログに記録されます。
        無視していいそうですが、リンク先にvbsのソースがあってそれを実行するとエラーが出ないようになるようです。
      • ソース:Kernel-EventTracing「セッション"ReadyBoot"の最大ファイルサイズに達しました」(Event ID 4)
        Error: "Session "ReadyBoot" stopped due to the following error: 0xC0000188" in Windows 7

        こちらも無視していいそうで対処方法などは書いてありませんが、ネットで調べるとレジストリを書き換て最大ファイルサイズを変更する方法が載ってました。
        ※ レジストリの変更は自己責任でお願いします
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\ReadyBoot\
        にある「MaxFileSize」を「14(16進数)」から「60(16進数)」などに変更する
      • ソース:Kernel-EventTracing 「セッション "Microsoft Security Client OOBE" が次のエラーで停止しました: 0xC000000D」(Event ID 3)
        MSのサポート情報はありませんでしが、MS Answersに同じような現象がありました(リンクはこちら)。
        Security EssentialsとSecurity Clientの違いがありますが、同じ対処をして一応治まってます。
        C:\ProgramData\Microsoft\Microsoft Security Client\Support\EppOobe.etl」を削除して再起動(私はそのまま削除しましたが、一応Safe Modeを使ったほうが良いと思います)。
      その他、私の環境では、内蔵有線LANアダプターでのエラーが出ていたり(無線LANアダプターを使用しているので有線LANの「ローカルエリア接続」を無効に)、DNS関連エラーが出ていたり(IPv6を無効に) していましたが、それぞれ対処してまだちょっと残ってはいますが、だいたい落ち着いた感じです。

      あ、ちなみに、私は知らなかったのですが、 管理ツールの中に「Windowsメモリ診断」てのがあって、内容を見るとMemTest86+のようなチェックをしているようです。
      実行して再起動をするとWindowsが起動する前にメモリチェックを行ない、終了後Windowsを起動して診断結果をポップアップ表示しました。
      メモリのチェックは3段階あり、今回は標準で実施。特に問題なしとのことで一安心。
      Windowsメモリ診断の詳細はMSの「コンピューターのメモリの問題を診断する」を参照してみてください。

        2012年1月19日木曜日

        ブログにファビコンを設定してみました

        サイトにアクセスした際に、アドレスバーやタブに表示されるアイコン「ファビコン」を当ブログでも設定して見ました。

        使用した画像はTwitterと同じ画像です。

        Bloggerの場合、ファビコンの設定が簡単なんですね。
        設定画面のレイアウトから左上のファビコンにある編集をクリック、使用したい画像を選択して設定するだけ(今回はPNGファイルをアップしました)。
        ファビコンにある編集を選択し






        画像を選択するとサムネと「削除」が表示されアップ完了
        通常は、16x16の.icoファイルを作って、favicon.icoという名前にし、サイトのルートにファイルを配置して<head></head>にタグを追加(タグの内容はFavicon - Wikipediaを御覧ください)…なんてことをしなければならないけど、Bloggerは上記のようにファイルをアップするだけで自動変換して設置してくれました。

        簡単で良いですね。

        それにしても「Snipping Tool」は便利 :-)

        2012年1月16日月曜日

        Androidアプリで使用するサイズの単位

        Android Developers - Dev Guide - Dimension

        Androidアプリで各サイズを指定するときの単位は以下のものがある。

        dp(dip) - Density-independent Pixels
        160dpiの画面に対して1dp(1dip)=1pxとして扱い、実際のピクセル数はユーザーが利用している端末の解像度に応じて変化する。dpもdipも同じだが、dpを使ったほうがspとの関係がわかりやすい

        sp - Scale-independent Pixels
        dpに似ているが、ユーザーが設定しているフォントサイズに応じて変化する。このため、フォントサイズの指定はspを使うことが推奨されている。実際のピクセル数は解像度とフォントサイズに準ずる

        pt - Points
        物理的な画面サイズの1/72インチを1ptとして扱う

        px - Pixels
        使用している画面のピクセル数。デバイスによってピクセル数が異なる場合があるため、この単位は推奨されない

        mm - Millimeters
        物理的な画面サイズでのミリメートル単位の長さ

        in - Inches
        物理的な画面サイズでのインチ単位の長さ

        res/valuesの下にdimens.xmlなどで大きさを定義することができる
        <?xml version="1.0" encoding="utf-8"?>
        
            25dp
            150dp
            30dp
            16sp
        
        

        アプリケーションコードから参照する場合は
        float font_size = getResources().getDimension(R.dimen.font_size);
        
        と書き、xmlから参照する場合は
        
        
        と書くようです。

        2012年1月15日日曜日

        Androidアプリのデザインガイド

        Android DevelopersのBlogの以下のエントリーで紹介されてます。
        Introducing the Android Design site

        詳しい内容はこちらのページ。
        Android Design