ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2012年11月21日

Android 4.2で今度こそ反応の良い楽器アプリは可能になるのか!?

以前からAndroidで良い(=実用になる)楽器アプリが存在しないのを残念に思っていた。


AndroidでiPhoneに匹敵する楽器アプリの作成が困難な理由

Android 4.0で反応の良い楽器アプリは可能になるのか




が、Android 4.2になってその状況もついに変わるかも、と思わせてくれる記述が公式ドキュメントの中にあった。


開発者にとってAndroid4.2は何が新しくなったか - Firespeed
Jelly Bean | Android Developers


Low-latency audio
Android 4.2 improves support for low-latency audio playback, starting from the improvements made in Android 4.1 release for audio output latency using OpenSL ES, Soundpool and tone generator APIs. These improvements depend on hardware support — devices that offer these low-latency audio features can advertise their support to apps through a hardware feature constant. New AudioManager APIs are provided to query the native audio sample rate and buffer size, for use on devices which claim this feature. 
(以下意訳)
Android 4.1でOpenSL ESによる低遅延再生、SoudPoolやトーンジェネレータAPIなどが改善されましたが、Android 4.2ではさらに低遅延な音声再生をサポートします。これらの改善点の恩恵を受けるにはハードウェアのサポートが必要です。低遅延再生をサポート可能なハードウェアは、アプリケーションに対してハードウェアフィーチャー定数を通じてその事を知らせます。新しいAudioManager APIを使うと、この機能をサポートしているハードウェア上でネイティブなオーディオサンプリングレートとバッファ・サイズを問い合わせる事が出来ます。

早速、先日Android 4.2に更新されたNexus 7でピアノアプリ「xPiano+」を試してみた。

このアプリは僕が今までAndroid上で試した数種類のピアノアプリの中では最も反応が良かったものだ。と言ってもiOSデバイスの楽器アプリとは全く違って、ちょっとでも速く鍵盤を叩くと遅延が気になってとても実用的に演奏出来るとは言い難かった。

4.2に更新されたNexus 7で試してみたところ、確かに前よりも反応が良くなっている!

感覚的なものなので数値に表すのは難しいけれども、「格段に良くなっている」と言える。

おそらくまだ4.2の新しいAPIを使った最適化はされていないと思うので、今後アプリ側が4.2に合わせて最適化されればもっと反応が良くなる可能性もあると思う。

ただし、まだまだiOSデバイスに匹敵するとは言い難そうだ。

これから何世代かかけてハードウェアがどんどん良くなって行ったとしても、そもそもJavaベースで動いているAndroidというOSでどこまでの「低遅延化」が可能なのかという問題がある様な気がする。

もちろんOSの深い所はC++などで書かれているみたいだし、アプリケーションもNDKを使えばC言語(C++)で開発する事は可能だ。やはり究極の低遅延化を目指そうとすればC言語で開発するしかないのだろうか。

いずれにせよ、Android 4.2で「反応の良い楽器アプリ」の実現に少し近づいた事は間違いない。今後どんな楽器アプリが登場してくるのか、(あるいはやっぱりダメなのか、)期待しながら待ってみようと思う。






2012年11月7日

Galaxy S IIIをAndroid 4.1.1 にアップデートしたらEclipseからアプリの実行が出来なくなった件


ついこの間 Galaxy S III にOSの更新の通知が来たので何も考えずにアップデートしたら、Androidのバージョンが4.1.1になった。

それはいいのだけれど、その後実機でのデバッグが出来なくなってしまった。

Galaxy S IIIをUSBでMacにつないだ状態でEclipseからアプリを実行しようとすると、「Failed to install ........ timed out. Launch canceled.」というエラーになってしまう。

検索してみた所では、このスレッドの最後(2012/10/24)に書かれているコメントが最も近いような気がする。

android - Unable to debug via eclipse on phone with Jelly Bean - Stack Overflow

『After inspecting my UMASK, I saw it's now 0000 (and it was 0077 on stock kernel), so I concluded that the wrong UMASK was the root cause of the error.
Still, as can be seen from numerous other threads on this issue out there, it's very wrong for the stock kernel to cause that problem.』

という事は Android 4.1.1自体のバグなのだろうか。

これは困った。。。

幸いな事に Android 4.1.2 の Nexus 7 の方は全く問題ないので、しばらくはそちらで開発するしかないかも知れない。

この機会にいっそGalaxy S IIIをRoot化してみるかな。^^


追記1:

下記にもある通り、Android 4.1 (Jelly Bean)からデフォルトのumask値が000ではなく077になった事が関係している模様。

[Q] Jelly bean and apk. - xda-developers
Eclipse や adb installを使わずに手動でAPKファイルを端末にコピーしてからインストールすれば動かせるらしい。でもそんな面倒な事はやってられないな〜。


追記2:

試しに

 adb install bin/[APPNAME].apk

を実行してみると、

 Failure [INSTALL_FAILED_ALREADY_EXISTS]

というエラーになった。そこで

 adb uninstall [PACKAGENAME]

をすると、Success になったので、その後もう一度、

 adb install bin/[APPNAME].apk

を行うと Success というメッセージが表示されてアプリがインストール出来た!

ただやはりEclipseから実行した場合はエラーになってしまう。変更する度にuninstallとinstallをコマンドラインでやらないと行けないのは面倒過ぎるので、何とか早く直って欲しいものだ。




2012年10月19日

Android 4.1.2へのアップデートでNexus7のホーム画面が横置きに対応!

ちょっと前にNexus7にOSの更新の通知が出ていたので、更新するとAndroidのバージョンが 4.1.2になった。

特に更新前との違いに気付かなかったので忘れていたのだけれど、今日ふと画面の自動回転を有効にして試してみると、横置きにした時のホーム画面の使いづらさが見事に改善されていた。

これは嬉しい!

これで横置き対応だけのために Nova Launcher などのサードパーティのホームアプリを入れなくても良くなった!

ロック画面もこの通り横置きに対応

横置き
縦置き




2012年8月25日

Nexus 7用のケースとスタイラスペンが届いた

Nexus 7用に注文していたケースとスタイラスペンが先週届いた。ちょうど一週間使ってみて、かなり手に馴染んできた。




i-BLASON Auto Sleep / Wake Google Nexus 7 inch Tablet 100% Genuine Leather Case Cover / Stylus for 8GB 16GB 3 Year Warranty (Blue)


このケースには先端部分がゴム製のスタイラスが付属している。ただゴムなので予想した通り「スラスラ書ける」感じではなく少し抵抗がある。

なので別途安い割に評判も悪くなかった「amPen」というものを購入した。こちらはさすがにスラスラ書ける。ほとんど抵抗が無いので感動してしまった。

これで本当に「紙のノートを置き換えて仕事でバリバリ使う」事が出来そうだ。

amPen (TM) New hybrid stylus for ipad 3, iphone 4s, kindle fire, nexus 7, galaxy S 3 (Black) [in AM Retail Packing]


大きさも見た目もほぼシステム手帳なのでこのまま持ち運んで歩いても全く違和感が無いのが嬉しい。

ケースを閉じると自動的にスリープモードになる。そして開くと自動的にONになる。これがとても便利。実はこのケースを買って一番良かった点はこれかも知れない。

電源ボタンを押す必要があるかどうかというほんのささいな差なのだけれど、これがあるのと無いのとでは日常の使い勝手がかなり変わってくると思う。




もちろんスタンドにもなる。

ただ標準のスマートフォンUIだと横置きではホーム画面に戻った時に最強に使いにくいので、最近はもっぱら縦置きで使うようになってしまった。慣れというものは恐ろしい。(笑)











.


2012年8月11日

Nexus 7で「7Notes with Mazec」を使ってみた感想

「交ぜ書き」機能と言うのがすごい。「後から変換」機能も素晴らしい。



これなら充分仕事のミーティングで使えそうだ。
しかも使えば使うほど効率が良くなって行く様な行くような気がする。

画面を横向きにすれば一気に書いて変換出来る量が増えてとても良い感じだ。

Google日本語入力など他のIMEと比べても、人と話しながら書きやすいのは Mazec の方だ。

フリック入力だと、フリック操作自体に常に集中力を奪われてしまう。
手書きだと喋りながらでも手軽に書ける点が良い。

慣れてくれば右手で書いて左手で変換候補を選択すると言うワザが使える様になって来る。これが出来ると断然入力速度が上がる。

欲を言えば、改行とBackspaceのボタンがもう少し大き目で押し易ければ最高だ。

今は指で書いているけれども、スタイラスペンを使ったらもっと快適になるのではないだろうか。Amazonで注文したスタイラスが届くのがとても楽しみだ。


しかも、手書き入力というものには思わぬ副産物が付いてくる。

これは漢字の練習にもなるのだ。日頃キーボードばかりで漢字を忘れてしまっている僕の様な人間には良いリハビリになるかも知れない。











.


「Google Nexus 7」を買って10日目の感想

●ハードウェア



ハードウェア的な仕様はこちらを参照。
【レビュー】199ドルを実現したGoogle独自タブレット「Nexus 7」を試す(外観編) (1) まずは仕様・デザインを確認 | 携帯 | マイナビニュース 
画面はまずまず見やすくてきれいだし、スピーカーの音質にも不満は無し。
バッテリーの持ち具合も今のところ結構良い感じ。


●不要なプリインストールアプリが無いのが嬉しい


Galaxy S IIIにはSamsung製のアプリがたくさんプリインストールされていてちょっと目障りだった。もちろんNexus 7ではその様な事は無い。アプリ一覧の画面もすっきりしていて気持ちがいい。




●タッチへの反応にはちょっと不満


スクロール時の滑らかさはいい感じだと思うけれど、たまにタップになかなか反応せずボタンなどを2,3回押さないと行けない事がある。これはタッチスクリーンの初期不良か何かなのか? と思ってしまう。かと思うと全く快調に反応する日もあったりして、まだ良くわからない。



●Bluetoothでキーボードとトラックパッドを接続したら便利だ!


AppleのBluetoothキーボード(英語配列)を接続してみたら、何の問題もなくすぐに使える様になった。これは便利かも。

ついでにAppleのトラックパッドもつないだ。こちらも接続は全く問題無し。

日本語入力用IMEについては、初期状態で「iWnn IME」が入っていた。外部キーボードをつないだ状態ではこれを使うのが無難そうだ。なぜかと言うと、他のIMEだと日本語変換のON/OFFが外部キーボードから出来ない場合が多いからだ。

「Google Japanese Input (Beta)」や「Shimeji」を試した限りでは、外部キーボードとの相性という意味ではやはり標準で入っているiWnnが良いみたいだ。



●ホーム画面に戻ると強制的に縦表示になってしまう


(この問題はAndroid 4.1.2への更新で解決済み。下の追記参照)

おそらくマウスやトラックパッドを接続して使う場合に最も困るのがこの点だ。アプリ画面では横向きで作業出来るのに、ホーム画面に戻った途端に強制的に縦表示になってしまう。端末自体はまだ横向きのままなのに、だ。

そして、その状態だとマウスポインタを横に動かすと見た目上は縦に動いてしまって、ものすごく使いづらくなる。

一体全体、Googleの人達は縦置きでしか使ったことが無いのか、と言いたくなってしまう。

画面の表示はそのままでもいいので、少なくともマウスポインタの動きだけは本体の物理的な向きに追従する様に出来ないものだろうか?

これは本当になんとか改善して欲しい。マウスやトラックパッドを全く使わないとしても、スタンドなどにセットして横向きで常用したい人にとっては悪夢の様な仕様だ。

下のサイトのTipsの#38に対処方法があった。ホーム画面を横向きにする事が出来るらしい。但しまずRoot化が必要との事。
http://blog.the-ebook-reader.com/2012/07/18/40-tips-and-tricks-for-google-nexus-7-tablet/
こちらに載っているのも多分同じ方法。
Nexus 7を完全なタブレットUIにするカスタマイズのスゝメ - Digital Grapher
http://digitalgrapher.blogspot.jp/2012/08/nexus-7ui.html

上の「ro.sf.lcf_density=213」の213を170に書き換えるというやり方以外に、 「launcher.force_enable_rotation=true」を書き加えるという方法もあるみたい。
Nexus 7 をタブレットUI~ホーム画面が横回転するようにした。
http://usagisaigon.blogspot.com/2012/08/google-nexus-7-ui.html
確かにこちらの方がJelly Beanらしくて良さそうだ。

出来ればRoot化しなくてもGoogleが標準で対応してくれるのが望ましいと思う。

あるいはやっぱりNexusシリーズはRoot化して自己責任で色々いじって使うのが基本なのだろうか。Nexus 7のRoot化はそれほど難しくないみたいなので、近いうちにチャレンジしてみるかも知れない。



※ 2012/9/27 追記:
コメントで別の解決策を教えてもらった。
「Nova Launcher」をインストールしてデフォルトのホームアプリにすれば横置きでも問題なく使える様になった!



※ 2012/10/18 追記:
Android 4.1.2へのアップデートでNexus7のホーム画面が横置きに対応!
これで上の不満はようやくスッキリ解決。^^/



●デフォルトではカメラアプリは無い


このアプリをインストールすればフロントカメラで写真やビデオが撮れる様になった。
https://play.google.com/store/apps/details?id=com.modaco.cameralauncher
あまり使う機会は無いと思うけど、せっかくカメラがあるのだから一応入れておこう。

でも使って見ると、フロントカメラで自分以外のモノを撮るというのは、実はなかなか難しく、実質的に実用には向かない事が判明した。(当たり前か...笑)

ちょっとしたメモ代わりに書類やホワイトボードなどを撮影してそこに手書きで何か書き込みたい、という様な場面もある(かも知れない)ので、背面カメラはタブレットでもやはり必要なのではないかと思った次第。



●PDANetを使ってテザリング


米国Sprintの携帯回線を使っていると、追加オプション(月19ドル)を契約しないとテザリング機能が一切使えない様になっている。(Wifi, Bluetooth, USBのどれもテザリング実行前にSprintのサーバーに契約の有無を確認しに行っているみたいだ。)

でも、「PDANet Tablet」というアプリを入れれば非公式にテザリングが出来る。
Nexus7をxperiaでテザリング(PDaNet利用)
http://onboradcamera.blog.fc2.com/blog-entry-12.html
携帯が Galaxy S III の場合はアプリがまだ対応していないらしく、上手く動かなかった。HTC Evo 4G で試すと問題なくテザリング出来た。




●さて、何に使うかが問題...?


さて、ハードウェア的にもまずまず不満はないしソフトウェア的には最新のJelly Beanが載っているこの素晴らしいNexus 7、あまり良く考えもせずに勢いで買ってしまったわりに実はこれと言った用途が思い浮かばないので困ってしまった。

こんな事なら250ドルをiPad Miniの為に貯金しておいた方が良かったのではないか。

いやそんな事はない。これがあれば常に最新のAndroidバージョンで自作アプリの実機確認が出来るではないか。

そうだ、アプリ開発のデバッグ用にじゃんじゃん使おう。いやそれなら既にGalaxy S IIIがあるじゃないか、画素数的にも同じだし。

では電子書籍リーダーとして...はどうせ多分使わない。音楽プレーヤーとして...は大き過ぎる。ゲーム用端末...そもそもゲームしてる時間が無い。映画鑑賞?...ならiPadもMBAもあるし。


と色々考えた末、今のところ最有力になりつつあるのは「紙のノートを置き換える」という用途。

この為に手書き入力用アプリ「7 Notes with Mazec」も買ったし、スラスラ書けそうなスタイラスペンもオーダーした。もちろん無料の「Skitch」もインストール済みだ。

これでなんとか後悔せずに済むのではないだろうか。











.





2012年7月25日

米国Sprint版「Galaxy S III」の使用感


samsung-galaxy-s-iii-galaxy-s-3-8

購入1週間後の感想。
以下、☆は良かった所、■は今ひとつな所。

☆薄くて軽いのでポケットに入れやすい! (HTC Evo 4Gとの比較で)

☆WiFiの「つかみ」がかなり速くなった。 (HTC Evo 4Gとの比較で)

☆通知領域を開くと上に出て来る各種設定ON/OFFボタンが便利!
Screenshot_2012-07-24-13-11-58

☆カメラが高機能! 連射機能とかHDRとか面白そう。

☆バッテリーの持ちは問題ないレベル。僕の使い方(使用しない時はWifi/3G/GPS/自動同期をOFF)だと50時間は充電なしで使えそう。
2日と5時間でバッテリー残量27%


☆RAMとストレージ容量に余裕があるので気持ちが楽。(これは大事。笑)


■つるつるしていて操作中に気を抜くと落としそうになる。

■両サイドの音量ボタン・電源ボタンを間違って押してしまう事がある。

■輝度100%でも直射日光の下では少し見辛い。

■戻るボタンとメニューボタンがハードウェアボタンとして付いているのはいいのだけれど、デフォルトではすぐにバックライトが消えて見えなくなってしまう。(設定で常時ONにしたら解決した。)


全体的にはとても満足。
これがあればNexus 7はもういいかな、とも思ってしまう。







.

2012年6月22日

Android: クリック時にボタンの画像を回転させる方法

押されるとカクッと画像の角度が変わるボタン。

ちょっと調べるのに時間がかかったので一応メモ。

まず res/drawable の下に例えば button_stateful.xml という名前でXMLファイルを作る。





あとは画面レイアウトのXMLファイルの中でボタンを下記の様に定義すればOK。













.

2012年4月19日

Windows上でAndroid SDK Revision 17のandroidコマンドのエラーを回避する方法

久しぶりにWindows 7上でAndroid SDKのアップデートを実行しようとして、いつもの様に

android update sdk

と打ち込んだら、エラーになった。ここに書いてあるのと全く同じ現象だ。
rTAKI0329's android ブログ: android.bat が起動しないので、こんな回避策を実施してみました
こちらでも同じ現象が報告されていた。
Issue 23648: tools\lib\find_java.bat returns Java not found in your path

 上のブログに書かれている通りに lib\find_java.bat ファイルを編集してjava.exeのパスを直接書き込んだらエラーは出なくなったので、ひとまず安心した。

でもこれを知らなかったら、このエラーを修正したアップデートが出たとしても、それを適用する為のコマンド自体がエラーになるのだから、アップデートが出来ずに途方に暮れる事になっていただろうと思う。







.

2012年4月7日

携帯電話でも動くAndroidアプリ開発環境「AIDE」を使ってみた

「AIDE」というアプリが面白い。
AIDE - Android Java IDE - Google Play

InfoQ: AIDE 開発者に聞く - Android で動作する Android Java IDE

【コラム】イマドキのIDE事情 (126) ついに登場! Android上で動作する開発環境「AIDE」

これがあればAndroid端末上でAndroidアプリを開発する事が出来る。最初はもちろん「どうせエラーで落ちまくるんじゃないの?」と半信半疑だったが、試してみた所かなり安定している。

今回は3時間ほどかけてじっくりとこの「AIDE」で遊んでみた。

多分メインの用途としてはタブレット端末に外付けのキーボードをつないで使うという事を想定しているのだろうけど、なかなかどうして画面が4.3インチしかない携帯電話(HTC Evo)の上でもしっかりと動いている。

ソフトウェアキーボードでのコード入力は確かに辛い。でもコード補完もいい感じでやってくれるので、ある程度慣れればそれなりに打ち込める様にはなりそうだ。

まず何を試そうかと思ったのだが、以前に自分で作ったオセロゲームのEclipseのプロジェクトをそのまま読み込ませてみた。それなりの行数のコードなのでこれが問題なくビルド出来て動かせるのであれば、実際の開発でも使えそうだという事になる。

AIDEはGitに対応しているので、GitHubの公開リポジトリを指定して「Clone」を押すとなんの問題もなくソース一式を開く事が出来た。素晴らしい。

Gitのリポジトリを指定して「Clone」を押せばソースを取得してくれる。便利!
このサンプルのURLは、https://github.com/mikehibm/MiReversi.git
もしくは git://github.com/mikehibm/MiReversi.git

ソースに入っていた日本語のコメントも問題なく表示されている。
(ただし日本語の入力にはちょっと問題がある。)


ソースを取得した後、早速メニューから「Run」を選択して実行。

実行するとAPKファイルが作成され自動的にこの端末にインストールされる。

オセロゲームのアプリが問題なく起動した!

PC上のEclipseで作成したプロジェクトを開いてビルド・実行が出来る事が確認出来た。もちろんGitリポジトリからPullするだけでなく、ソースを変更した後、Commit/Pushする事も出来る。



つまり、これで通勤時間中に開発したり、ちょっとした空き時間にデバッグしたりという事が携帯だけで出来る、という事だ。ちょっと興奮してしまう。もちろん実際にやるかどうかは別だけれども、「やろうと思えば出来る」という事が凄いのだ。

さて次に、AIDEだけを使って小さなサンプルを一からコーディングしてみる事にした。

プロジェクトの新規作成画面。


新規作成後、res, src, gen, bin, assets などEclipseでも見慣れたフォルダが自動的に作成されている。

とりあえず、レシピ本の「No.88 カメラを呼び出す」サンプルを入力する。

IntentがImportされていないので赤い波線が表示された。

画面を長押しすると「Fix」というメニューが出てくるのでこれを選択。



さらに「Add Import ...」を選択すると、自動的にImport文を生成して追加してくれる。この辺りはEclipseと同等の使い勝手を実現している。



メニューボタンを押すと出てくるメニュー。




ソフトウェアキーボードと格闘しながらコードを入力する事約20分、AIDEだけで作ったミニアプリが出来上がった。ボタンを押すとカメラが起動して、撮った画像の縮小版がImageViewに表示される。



携帯でここまで出来るのだから、タブレット端末ならもっと快適だろうと思う。ましてや外付けキーボードなんかがあったら、もしかするとPC上でエミュレータを起動したりUSB経由で実機をつないだりするよりも快適かも知れない。

ただ、ひとつだけ欠点がある。AIDEでは現状ではデバッグ実行の機能が無い。もし将来的にデバッグ実行機能が付いてブレークポイントとかが設定出来るようになったら、本当に凄い事になるかも知れない。









.

2012年3月23日

Android SDKをRevision 17に更新したらエミュレータがサクサクに!

Android SDK ToolsがRevision 17にアップデートされたので早速更新した。今回は比較的大きな更新になっている様だ。
Android SDKアップデート、Windows/Macでエミュレータが高速に | マイナビニュース

Updated SDK Tools and ADT revision 17 | Android Developers Blog

特に興味を惹かれたのが、
WindowsおよびMac OS Xにおいてエミュレータが仮想モードでAndroidx86システムイメージをサポートし、Androidが高速に動作するようになった。
という部分。

早速ここに書かれている手順通りにやってみた。
Using the Android Emulator | Android Developers


ただし、Intel VTによる仮想化支援を使うには、次の制限があるとの事。
  • ARMベースではなくx86のシステムイメージを使ったエミュレータしか動かせない。
  • 仮想化された環境内では動かせない。
  • 同一PC上でIntel VTを使う他の仮想化ソフト(VMwareやVirtualBoxなど)と同時に動かす事は出来ない。
  • OpenGL ESを使うアプリのパフォーマンスは実機ほどは出ない。



まずは、「Android SDK Manager」でx86のシステムイメージをインストールする。
現時点では、APIレベル10(Android 2.3.3)用のものしか無いみたいだ。


次に、SDK Managerのリストの一番下の方にある「Extras」の中の「Intel Hardware Accelerated Execution Manager」を選択してこれもインストール。
インストール後、コマンドラインから
sc query intelhaxm
を実行して、
SERVICE_NAME: intelhaxm
       ...
       STATE              : 4  RUNNING
       ...
と表示されればOK。



インストール完了後、AVD作成ダイアログのターゲットに「Intel Atom x86 System Image」が追加された。これを選択してAVDを作成すると、エミュレータ実行時にIntel VTによる仮想化支援機能が使われて動作が速くなるという事らしい。



早速エミュレータを起動してみると...

お、確かにブラウザが一瞬で起動する様になっている。

サンプル「APIDemos」を動かしてみる。
従来のエミュレータだとかなりカクカクしていたOpenGL ESのデモも、上述の様に実機ほどのパフォーマンスは出ないと但し書きはあったものの、x86イメージのエミュレータだとかなりスムーズに動いている。

(上)従来のエミュレータ (約8.5FPS)
(下)x86システムイメージを使ったエミュレータ (約27FPS)



普段からエミュレータ上で開発をしている人にはかなり嬉しい改善になりそうだ!


と思ったのだけれど...、

ここまで書いてから、さてVirtualBoxでいつも使っている仮想マシンを起動しようとしたら、「仮想マシンを起動出来ません...云々」のエラーが出てしまった。。。

「なんださっきインストールしたIntelのHAXMとか言うサービスを止めればいいんでしょ。」と思ってコマンドラインから、
sc stop intelhaxm
を実行。サービスが止まっているのを確認してから再度VirtualBoxの起動を試みても、やっぱり同じエラーが出る。検索したらMacでもやはり同じ問題に遭遇している人が居た。
HAXM stops VirtualBox fro ... - Intel® Software Network
PCを再起動しても同じなので、結局あきらめて「Intel Hardware Accelerated Execution Manager」をアンインストールする事にした。

アンインストール後は無事VirtualBoxの仮想マシンが起動出来たので、このIntelのHAXMサービスが原因だった事は間違いないと思う。

という事で、VirtualBoxとの相性は良くないみたいだ。残念。:-(









.

2012年3月21日

小さな子を持つ親としてAndroidタブレットに欲しい機能

我が家の子供達にひらがなやカタカナの練習をさせたいと思って、たまに初代iPadを使わせている。

ただ、子供にタブレット端末を使わせる場合、何も設定しないと大きな問題がある事に最近気付いた。というのも、子供達がYoutubeの使い方を覚えて、放って置くと1時間でも2時間でもアニメ(主にアンパンマン)の動画ばかり見続けるという状態になったからだ。

これではだらだらとテレビやDVDを見ているのと変わらないから、きっと教育上よろしくない。

そういう時に便利なのが、iOSの「機能制限」の設定だ。ここでYoutubeの使用を制限する事が出来る。さすが Apple、よく出来ている。


それはそれでいいのだけれど、せっかくだから出来れば自作のアプリでひらがな・カタカナを練習させたいなあと思い始めていて、そうなると今からiOSの勉強は大変なのでやはり子供用にAndroidのタブレット端末を買おうかなという事になる。

そこで気になるのが、Youtubeの存在だ。

Android端末でYoutubeのアプリを使用不可にする事は出来るのだろうか。少なくとも手元のAndroidスマホでは出来なさそうだ。

なんらかの方法で仮にYoutubeアプリを使えなく出来たとしても、多分ブラウザからは見る事が出来てしまう。

今年の5月か6月頃に出ると噂されているGoogle製の7インチタブレットには、ぜひこういったかゆい所に手が届く機能をOS標準の機能として付けてもらいたい。
Google タブレットは7インチ、 ASUS 製、5月発売? - Engadget Japanese

本当に200ドル前後という低価格で販売されるのだったら、iPad1台分の値段で2台買ってもまだお釣りが来る! 期待してしまうだけに、こういう細かい点がどうなるのかなあ、と気になる。




.

2012年3月17日

良い習慣付けをサポートしてくれそうなAndroidアプリ達

この記事を読んだのがきっかけで「習慣付けをサポートしてくれるアプリ」が気になりだした。
日記が全然続かない僕がたどり着いた『4行日記』を習慣化する為に行った方法 | ライフハック | Yu_notes.
僕も日記を続けようと思っていてなかなか続かないので何か良い方法はないかなと思っていた所だったので、Androidでも「21日習慣づけ」と同様のアプリが多分あるだろうと思って探してみた。

選んだ基準は、

  1. 見た目がシンプルでデザインが良い事。
  2. 入力が簡単そうな事。
  3. カレンダー表示やグラフ表示が出来る事。

の3つ。

とりあえず次の7つをインストールして試し中。

Routinely


Success Log: Goal Tracker


Habit Streak


My Effectiveness Habits (beta)


Habitlog - Habit Builder


GoalTracker


MyChain


一週間ほど使ってみて、どれが最も気に入ったかまた書こうと思う。






.

2012年2月16日

Sony Tablet Sを数時間触ってみた感想

仕事でたまたまAndroidタブレット用アプリの開発案件が入って来た。
ターゲットの端末は今の所「Sony Tablet S」の予定なので、試しに実機を触らせてもらった。

Googleアカウントは設定せずに単にOSの設定画面やプリインストールのアプリをいじっただけなのだけれど、数時間ほど触った現時点での感想を書いてみたい。

1.外観


背面がプラスチックっぽくて少しチープに見えるけれども、慣れれば違和感は無くなりそうだ。手に取った時の体感的な重さはiPadとほぼ同じか少し軽いぐらい。片側が厚くなっているので持ちやすいのは確か。

2.液晶画面 


見やすく綺麗だけど照明の具合によっては指紋が目立ってしまう。

3.UIの反応


動作は軽快で快適。特にブラウザの起動は速く感じる。

4.最大の問題


OS(Android 3.2)のフリーズが何回か発生した。普通に設定画面を操作しているだけなのに、下の画面の様に「システムUI」のエラーが出て、「強制終了」ボタンを押すしか無くなる事がある。

アプリではなくOSの設定画面で「システムのエラー」が出るとは。


最悪なのは、その後、画面左下に3つ並んでいるバックボタン、ホームボタン、タスク一覧ボタンが消えてしまい、全く何も操作が出来なくなる事だ。

こうなると結局電源ボタンを長押しして端末を再起動するしか無く、本当にストレスが溜まる。

ちなみに、「タブレット情報」の画面で確認すると、
Androidバージョン:3.2
カーネルバージョン: 2.6.36.3
ビルド番号: 1.10.001100001
だった。

Androidのバージョンが4になれば改善するのかも知れないが、ソニーがOS標準のUIにだいぶ手を加えている様なので、その辺りとの兼ね合いで本当に不具合が完全に無くなるのか疑問が残る。

正直、ハードメーカーには、OSのカスタマイズには手を出さずにひたすら丈夫で軽くてバッテリーの持ちが良いハードウェアを作る事に徹してくれた方が有り難いと思う。












2012年1月6日

Android SDKのサンプル「LunarLander」でエラーが出るので修正してみた

Android SDKに含まれている「LunarLandar」というサンプルを試していて、エラーが出る事があるのに気付いた。

Homeキーなどで他のアプリケーションに移ってから LunarLander に戻って来た時に「Thread is already started」というエラーになる。

surfaceDestroyed で破棄されたThreadに対して、surfaceCreated で再び start() を呼んでしまっている事が原因らしい。

それにしても、標準のサンプルがどうしてこんな状態で放置されているんだろう。。。

ターゲットのVersionを1.5, 2.2, 4.03に変えて試してみたけれどもどれも同じ。
同じくSurfaceViewを使っている「JetBoy」というサンプルも試して見た。これも同じだった。

検索しても日本語の情報はあまり見つからなかった。
SurfaceViewとThreadのonPause、onResumeの処理について - shumach217の日記

英語だといくつかもう少し詳しい説明が見つかった。
Fixing the Lunar Lander example: a threaded gameloop for Android at michi's log 

Android - How to pause/unpause thread in games | Robert Green's DIY

Android crash when app is closed and reopened - Stack Overflow


対策方法としては以下の3つの選択肢が考えられそうだ。

  1. surfaceCreated で thread.start() する前にスレッドが無効な状態ではないか確認する。無効な場合はスレッドを新規作成(new)してから start する。
  2. surfaceDestroyed でスレッドを終了させずに、フラグを用いて擬似的に一時停止状態にする。
  3. surfaceDestroyed でスレッドを終了させずに、 object.wait() を用いてスレッドを一時停止状態にする。

まず1の方法でLunarLanderのソースを修正して試して見た。

これだとエラーは出なくなったけれども、復帰後の画面が真っ暗なまま何も表示されない。おそらく他の変数の内容が復元されていない状態になってしまうからだと思うが、きちんと動くようにしようとすると結構面倒そうなので、あきらめた。

次に2の方法。
変更点は以下の通り。
  • LunarThreadクラスに変数 mInBackground を追加。
  • isInBackground() and setInBackground() メソッドを追加。
  • run() メソッドで、isInBackground() をチェックして true なら 100ms スリープする様に変更。
  • surfaceDestroyed() メソッドでスレッドを停止しない様に変更。
  • surfaceCreated() メソッドで isInBackground() をチェックして true ならスレッドを start() するのではなく setInBackground(false) を呼ぶ様に変更。
変更後のLunarViewクラスのソースはこちら。
Fixed LunarView class in Android SDK Sample LunarLander. — Gist

これで一応問題なくバッチリ動く様になった。^^

ただ、100msのスリープを入れて擬似的にスレッドを一時停止状態にしているだけ、というのが、ちょっと気になる。

どうせならJavaの標準として定義されているwait/notifyの仕組みを使った方が良さそうな気がする。多分その方がCPUリソースの消費が少なくなりそうな気がする。多分。。。

ということで3の方法も試して見た。

変更点は、 run() メソッドでスレッドを待機させる時に sleep() ではなく wait() を使う様にした点だ。

変更後のLunarViewのソースはこちら。
Fixed LunarView class in Android sample LunarLander, using object.wait() method. — Gist


実際に2と3でCPUリソースの消費に違いがあるのか、Eclipseのデバッグモードでスレッドの状態を確認して見た。



2の方法の場合、Statusの表示が「timed_wait」になった後、何もしなくても utime, stimeの値が少しずつ増えていく。やはり少しずつCPUリソースを消費している様だ。

それに対して3の方法だと Statusが「wait」になり、utime, stime の値はピタっと止まったまま増えない。

端末のバッテリーにも多分この方が優しいだろうと思う。

ということで、スレッドを待機状態にする場合は、object.wait() と notify()/notifyAll() メソッドを使う方が良いみたいだ。












2011年11月23日

Android: Theme.Dialogを適用したアクティビティを最大化して表示したい時は

マニフェストファイルに下の様に書くだけでアクティビティがダイアログ風に表示されるのはとても便利。
<activity android:label="Help" android:name=".WebViewActivity"   android:theme="@android:style/Theme.Dialog">
</activity>
ただ、これで表示されるダイアログの大きさは、その中に表示する内容によって変わる。 

たまたま、WebViewとButtonをFrameLayout上に配置して幅・高さともにfill_parentを指定した時に、内容が見えないくらいにダイアログが小さくなってしまって困った。

 こんな感じになってしまう。


検索したらやっぱり同様に困っていた人がいた。
android - How can I get a Dialog style activity window to fill the screen? - Stack Overflow
ここにある通り、onCreate内でsetLayoutをすれば意図した通りダイアログが最大化されて表示された。


こんな感じで一件落着。

ついでに、ダイアログのタイトルバーが不要なので消したい。

まず、res/values/styles.xmlファイルを作る。

あとはマニフェストで @android:style/Theme.Dialog の代わりに @style/Theme.MyDialog を指定すればOK。













2011年10月22日

Android 4.0で反応の良い楽器アプリは可能になるのか

以前こんな記事を書いた。

AndroidでiPhoneに匹敵する楽器アプリの作成が困難な理由

先日Android 4.0のAPIが公開されたので、Audio関係が何か改善されたのかな、と思ってざっと検索して見た。

Issue 3434 - android - need NDK support for real-time low latency audio; synchronous play and record - Android - An Open Handset Alliance Project - Google Project Hosting http://code.google.com/p/android/issues/detail?id=3434

このスレッドが開始されたのが2009年の7月。それから2年以上も経つのにほぼ何の進展も無い事に驚かされる。

今日の時点での一番最新のコメント(#214)がこれだ。
I'm looking at the 4.0 API diffs now - I don't see any promising audio changes. 
4.0 APIの差分を見てるけど、Audio関係で期待出来そうな変更は何も無いよ。。。

他のコメントにもたくさん書かれている通り、まともなAudio APIが無いせいでAndroid用の楽器アプリの開発をあきらめざるを得ない開発者がたくさんいる様だ。

楽器アプリの少なさに幻滅してiPhone/iPadに流れるユーザーもきっとたくさんいると思う。

Googleの優秀なエンジニア達がこの問題を知らないはずはない。きっと多様なハードウェアに対応する為にソフトウェアがかなり抽象化・多層化されていて、簡単には改善出来ないのだろうと思う。

まあそれにしても、Android 5.0(?)ではぜひとも改善して欲しいものだ。




2012/11/20 追記:
4.2になって少し改善されたみたいだ。

Android 4.2で今度こそ反応の良い楽器アプリは可能になるのか!?






 

2011年9月26日

Androidでオセロゲームを作ってみる (5) 裏返しアニメーションを付けてついに完成!

Androidでオセロゲームを作ってみる (1)
Androidでオセロゲームを作ってみる (2) ゲームロジックの実装
Androidでオセロゲームを作ってみる (3) 思考ルーチンの実装
Androidでオセロゲームを作ってみる (4) 文字列をぐるぐる回す方法
Androidでオセロゲームを作ってみる (5) 裏返しアニメーションを付けてついに完成!


さて、いよいよ今回は石を裏返す時のアニメーションを作ってこのアプリを完成させたい。


背景と石の描画に画像を使う


その前に、ちょっと見栄えが良くなる様に、盤面の背景と石の描画に画像を使って見た。盤面も少しだけ小さくして周りに枠が出来る様に調整した。

こんな感じで、劇的にとは行かないまでも大分見た目が良くなったと思う。




背景の画像は無料素材サイトで見つけたものを利用させてもらった。
黒と白の石の画像はInkscapeを使って何とか自分で描いた。円にグラデーションを付けただけだけど、ベタで描くよりは断然良くなったと思う。


Android 1.5でエラー発生!


さて、自慢してやろうと思ってヨメの携帯にこのアプリを入れて見た。機種は第一世代AndroidのHTC Heroだ。起動すると、何やらエラーが出て起動しない。よく見たらAndroidのバージョンが1.6ではなく1.5だった。

マニフェストのSDK VersionとプロジェクトのターゲットSDKバージョンを3に変更してやって見てもやっぱりダメだ。

Logcatを見ると、「リソースが見つからない」というエラーの様だ。Android 1.5以下では画像ファイルは res/drawable-mdpi ではなく res/drawable フォルダに配置しないと行けないのだった。

知っていれば何でもない事なのだけど、解決するまでに1時間も費やしてしまったので、忘れない様に一応書いておこう。


石を裏返すアニメーションを作る


前回の記事でTextViewの文字列をぐるぐる回すアニメーションを作った。 これはAndroid標準のアニメーション機能を使って簡単に出来た。ただ、石を裏返すアニメーションの方は標準のアニメーション機能ではちょっと難しそうだ。盤面と石の描画をカスタムViewで行っているからだ。

もし標準のアニメーションを使うのであれば、カスタムViewの上にImageViewなどをオーバーレイしてそれをアニメーションさせれば良いかなとも思ったけれど、同時に裏返される石の数は毎回異なるのでかなりコードが複雑になってしまいそうな気がする。

一方、自分でアニメーション処理を実装するのであれば、別スレッドでタイマー処理を行って一定時間ごとに描画が更新される様にすれば良い。処理の概要は次の様な感じになる。

  • タイマーイベントが発生する毎に石の横幅を変化させて描画する。
  • アニメーションにかける時間の半分を使って横幅を100%から0%まで減らし、残りの半分の時間で0%から100%まで戻して行く。
  • その際、最初の半分は元の色、残りの半分は裏返した後の色を使う。
  • 裏返し対象の石は複数あり得るのでArrayListに入れておいて、描画ルーチンの中でループして処理する。

いろいろ試した結果、0.6秒かけてアニメーションさせて、その間に15回のタイマーイベントを発生させるぐらいがちょうどいい感じになった。
Viewを使った場合は最高でも4FPSぐらいしか出ないという事を読んでいたので、もっと荒いアニメーションにしないと行けないかと思っていたけれど、実際にやって見た限りではこれぐらい細かくタイマーイベントを発生させないとアニメーションがスムーズに見えなかった。


裏返しのアニメーションを付ける前がこれ。


裏返しのアニメーションを付けた最終形がこれ。




ビットマップ画像を拡大/縮小して表示する


最初はアニメーション中に石の横幅を変えて表示する際に、サイズを指定して drawBitmap を呼んでいた。でもこれだと毎回拡大/縮小の処理をする分遅くなるので、起動時にアニメーションで必要になる分の Bitmap を createScaledBitmap を使って生成して配列に保持しておく様にした。これでスムーズに表示される様になった。
参考: Android 奔走記: Bitmap を使ってみた





ソースコード


プロジェクト全体のソースコードはこちら。
mikehibm/MiReversi at ver4 - GitHub

これでこのプロジェクトはついに完成!
6月の第一回目からちまちまと作って来て、ほぼ3ヶ月かかってしまった。。。

せっかくここまで作ったので、近いうちにマーケットに一般公開できる状態まで持って行きたいと思う。いくつか面白い機能追加のアイデアはあるので、その部分を作り込んだらぜひアップしたい。

このプロジェクトでは、SurfaceView を使わなくても普通の View でここまで出来るという事が分かった。次は SurfaceView を使って何か作りたい。その次は GLSurfaceView の攻略だ。

まだまだ先は長いな。(笑)

Androidでオセロゲームを作ってみる (1)
Androidでオセロゲームを作ってみる (2) ゲームロジックの実装
Androidでオセロゲームを作ってみる (3) 思考ルーチンの実装
Androidでオセロゲームを作ってみる (4) 文字列をぐるぐる回す方法
Androidでオセロゲームを作ってみる (5) 裏返しアニメーションを付けてついに完成!











2011年9月5日

今注目すべき7インチAndroidタブレットは?

iPadは下に置いて使う分にはいいのだけれど、仰向けに寝転がって使うには重さがあり過ぎる。

そこで自然と300グラム台のタブレットが欲しくなる。。。となると7インチだ。

試しにAmazon.comで7インチのAndroid タブレットを検索して見たら、あまりにもたくさんヒットしたので驚いた。1年前と比べると格段に多くの選択肢があって嬉しい。

ただこれからAndroidタブレットを買うのなら、CPUは1GHz以上でOSのバージョンは3.x以上のものにしたいところ。

もしクリスマス頃に余裕があったらどれを買うかなあ、などと考えながらいくつか注目すべき機種をピックアップして見た。



速報:サムスン Galaxy Tab 7.7発表、スーパー有機ELプラス & 1.4GHzデュアルコア、335グラム








国内初のAndroid 3.2搭載7インチタブレット「GALAPAGOS A01SH」の発売日が決定。8月30日より販売開始
イーアクセス、Android 3.2搭載の7インチタブレット「GALAPAGOS(A01SH)」 - YouTube
2011-09-05 - 新・たけぞう瀕死の日記 | GARAPAGOS A01SH買った





動画:レノボから199ドルの7型 Androidタブレット IdeaPad Tablet A1







Android 3.2搭載の7インチタブレット「MediaPad」、Huaweiが発表 - ITmedia ニュース







Camangi、Android 3.1搭載7インチタブレット「Mangrove 7・WiFi」を正式発表。8月中旬に発売へ







2011/09/27 追記: これもいいかも。

7インチAndroid 3.2搭載タブレット「Acer ICONIA Tab A100」開封の儀 - ガジェット通信

Iconia Tab A100 Review - SlashGear





う~ん、スペック的にはサムスンのGalaxy Tab 7.7が最先端を走っている感じ。デュアルコアで1.4GHzとは、相当早そうだ。

最先端のスペックを求めないのであれば、レノボのIdeaPad A1というのも良さそうだ。$200ドルを切るのであれば、ヨメにも気軽に「買っていい?」と言えそうな気がする。^^
ただこれはOSがAndroid 2.3との事。3.2以上にアップデートされるなら真剣に考えたい。



最後にこちらにも注目! 意外と良いかも。

AmazonがKindleタブレットを7インチにとどめたのは賢明―モックアップ写真あり!

iPadに強敵現る? Amazon Kindleタブレット、こんな感じです! : ギズモード・ジャパン