Posts tagged ‘Android’

Nexus7 2013 LTE 版 Lollipop アップデート時のトラブル

なぜか Nexus7 2013 LTE 版だけ放置されていた Lollipop がようやく正式公開されたので、手元の端末をさっそくアップデートしたら、いきなり 4G 通信が出来ない状態に。検索するとあちらこちらで同様のことが起こっているようだ。自分の端末では設定メニューから「モバイルネットワーク設定」 → 「通信事業者」に行って、明示的に事業者名を再設定することで、4G 通信が使えるようになった。ただ、その後もう一度事業者一覧を表示しようとしたところ、なぜか検索中のままになってしまい一覧を表示することが出来なかった。それでもいまのところ一応 4G 経由の接続は出来ている模様。

Android エミュレータの DNS 設定 — その2

前回の記事に書いた Android エミュレータにおける DNS 設定の件で、さらに理解できたことがあったのでメモ。プライマリの DNS サーバが落ちて名前解決が出来ていないときの状況では、net.dns1 の値が 10.0.2.3 になっているものの、net.dns2 には何も値が設定されていなかったことは前回にも書いた。

$ adb shell
# getprop net.dns1
getprop net.dns1
10.0.2.3
# getprop net.dns2
getprop net.dns2

#

たまたま入手した「ANDROID HACKS」(オライリー・ジャパン)によると、ここに出てくる 10.0.2.3 から 10.0.2.6 までの IP アドレスは、ホストマシンが参照している DNS サーバのエイリアスになっていることが分かった。したがって上記の状態ではホストマシンのプライマリに設定してある DNS しか参照しないことになり、該当する DNS サーバが落ちていたりすると名前解決が出来なくなってしまう。しかし net.dns2 に 10.0.2.4 を設定しておけば、ホストマシンのセカンダリ DNS 設定を参照するようになり、結果的に名前解決が可能になる。

#setprop net.dns2 10.0.2.4
setprop net.dns2 10.0.2.4
#

実際にこの手順で問題が解決したことを確認できた。ただしこのままだとプライマリの DNS が落ちているときは常に手動での設定操作が必要になり煩わしい。net.dns2 の値を恒常的に設定しておく方法を探す必要がある。

Android エミュレータの DNS 設定

突然にAndroid エミュレータがインターネットへ接続できなくなってしまった。調べたところまさに同じ状況についてのブログ記事があった。

Androidのエミュレータがネットワークに接続できない場合の対処方法

この記事によると、何らかの要因で DNS にアクセス出来なくなっているようで、手動で明示的に DNS を設定してやれば解決することが分かった。ちなみに自分のところでは net.dns1 だけ値(10.0.2.3)が設定されており、net.nds2 には何も設定されていなかった。上記のブログ記事のように Google の DNS を設定すると、確かにインターネット接続が可能になった。

ただ、これまではこんなことをしなくてもそのまま接続できていたのが、急に繋がらなくなったのが気になった。そこで本家ドキュメントを探してみると、Android エミュレータについての情報を見つけた。

Using the Android Emulator

このページの中盤あたりにある “Configuring the Emulator’s DNS Settings” によると、エミュレータはその実行環境で設定されている DNS を使うようになっている。問題のエミュレータは Windows7 上で動いているのだが、この Windows7 が名前解決に使っているプライマリの DNS サーバは、このところの計画停電に対応するため電源を落としていた。どうもこのことが名前解決できなくなった原因のようだ。

もちろん Windows7 環境では複数の DNS サーバを参照するように設定してあるので、プライマリの DNS サーバが無くてもまったく問題はない。当然 Android エミュレータも、親環境と同じセカンダリ以降の DNS を参照すればよいはず。しかしどうもこのあたりに問題があるようで、プライマリの DNS にアクセスできないと、Android エミュレータは名前解決できなくなってしまうようだ。前述のドキュメントによると Windows 環境では DNS 情報を GetNetworkParams() API によって獲得するとある。この API が複数 DNS に対応していないことは考えにくいので、恐らく Android エミュレータが複数 DNS 情報の扱いが出来ていないと思われる。

Eclipse における TAB キーと空白入力

最近、Android アプリケーションに手を付けるため Eclipse を使っている。コード編集時には TAB キー入力を空白に置き換えたかったので、次の手順でメニューをたどっていき、そのダイアログに出ている “Insert spaces for tabs” を有効化した。

“Window”→”Preferences”→”General”→”Editors”→”Text Editors”→”Insert spaces for tabs”

これで TAB キー入力で空白が入るようになったのだが、Java コードのときだけは TAB キーが TAB コードのまま挿入されることに気付いた。調べてみると前述の設定以外に Java コードに特化した設定項目があることが分かった。次の手順でたどりつけるダイアログである。

“Window”→”Preferences”→”Java”→”Code Style”→”Formatter”

ここからさらに “Active profile:” のいずれかを選択してから “Edit…” ボタンを押すと別のダイアログが表示される。さらにそこの “Indentation” タブにある “Tab policy:” を “Spaces only” にしなければならない。

ところがデフォルトのプロファイルである “Eclipse [built-in]” は組み込みプロファイルということで編集することが出来ない。このデフォルトプロファイルを元にして新しいプロファイルを作り、そこで “Spaces only” を設定する必要がある。もちろん以降は、この新しいプロフィールを使うことになる。これで Java コード編集時も TAB キー入力は空白に変換される。

それにしてもメニュー階層が深い。それだけ Eclipse には非常に多くの設定可能な項目があることがわかる。

Android 開発環境の設定手順

久しぶりに Android 開発環境をインストールしたので、その手順を忘れないうちにメモしておく。基本的に本家 Web サイトの情報に従って作業すれば問題ない。

http://developer.android.com/
http://developer.android.com/intl/ja/

Java のインストール

当然ながら Java 実行環境は必須。JDK でなく JRE でも OK。今回使っているバージョンは 1.6.0_20。ところで Oracle 版 Update 21 を使うと Eclipse がクラッシュするという情報あり( http://bit.ly/cw94bC )。自分のところで確認していないが要注意。

Eclipse のインストール

Eclipse Helios 3.6.1 をインストール( http://www.eclipse.org/ )。現時点で Android のサイトによると不具合のため 3.6 は非推奨となっているが、つい最近の情報によるとこの問題は直ったようだ。また、実際に手元の環境でも今のところ問題は顕在化していない。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=318108

Eclipse の日本語化プラグインもあるが Android の開発には必須でないので、今回はインストールしていない。

Android SDK のインストール

http://developer.android.com/sdk/installing.html

Android SDK の zip パッケージをダウンロードして任意のディレクトリに展開。現在のバージョンは r07。続いて SDK を展開したディレクトリの中にある /tools へ PATH を通しておく。

Android Development Tools のインストール

http://developer.android.com/sdk/eclipse-adt.html

ADT のインストールは Eclipse のメニューから実行する。Eclipse を使わないときは直接 ADT をインストールすることも可能。

  1. Eclipse の Help メニューから Install New Software –> Add を選択。
  2. “Name:” 欄に “Android Development Tools Plugin” など任意の文字列、”Location:” 欄は https://dl-ssl.google.com/android/eclipse/ を入力して OK ボタンを押す。ここで問題が起きたら Location の https を http に変更すると解決出来る場合もある。
  3. 一覧に Developer Tools と表示されるので、これをチェックして Next ボタンを押すと、Install Detail 画面になるのでさらに Next ボタン。
  4. ライセンス内容を確認して同意できるのであれば Finish ボタンを押す。これで ADT のインストールが始まる。途中で Security Warning が出るので内容を確認して次へ。
  5. ADT のインストールが完了したら Eclipse を再起動。

ADT Plugin の確認とアップデート

Eclipse 用 ADT Plugin の確認を行なう。

  1. Eclipse の Window メニューから Preference を選択。
  2. 開いたダイアログで Android をクリックし Android SDK の設置場所と Android プラットフォーム(SDK のターゲットバージョン)一覧を確認する。
  3. 同じダイアログの Java メニューで Java ランタイムのバージョンを確認できる。複数の JDK や JRE がインストールされている環境では、それらを切り替えることができる。
  4. ADT をアップデートするときは Eclipse の Help メニューから “Check for Updates” を選択。

http://developer.android.com/sdk/index.html
http://developer.android.com/sdk/adding-components.html

SDK component のインストール

ここまでで SDK は Core だけがインストールされた状態なので、さらに必要な component をインストールする。

http://developer.android.com/sdk/adding-components.html

  1. Window メニューから “Android SDK and AVD Manager” –> “Available Packages” を選ぶ。
  2. 表示されている URL を選んで “Install Selected” を押すと、実際にインストールするパッケージを選択する画面へ移る。
  3. Google API と USB ドライバに “?” マークが付いているが、ここではとりあえずこれらすべてを選択する。
  4. インストールを開始する。一連のインストール作業の中でここが一番時間が掛かる。今回は 10 分程度。

これですべてのインストールが完了。これ以降は本家サイトにあるチュートリアルなどを参照すれば良い。リファレンスもこのサイトにまとめられている。

http://developer.android.com/resources/
http://developer.android.com/reference/packages.html
http://groups.google.co.jp/group/android-sdk-japan?hl=ja

Android 端末の GPS と 3G — その後

3G を切断して Wifi だけでインターネットに接続した環境で、Android 端末の GPS 利用アプリケーションが位置を正確に特定できなくなっているという記事を以前に書いたところ、yananob さんという方からコメントをいただき、やはり同じような状況が他でも発生していることが分かった。

ところが先週にリリースされた「モバイル Google マップ」のアップデートを適用したところ、3G を切断したままの状態でもまた以前のように正確な位置特定が出来るようになった模様だ。このアプリケーションは Andoid 端末に元からインストールされていたものだが、今回のアップデートで GPS や位置情報を処理する共用ライブラリのようなものが更新されたのではないかと推測している。このアップデート以降、Foresquare クライアントでも発生していた同様の不具合は解消された模様。ただし、これらアプリケーションで位置情報を確定するまでの時間が以前よりも長くなったように感じている。

Android 端末の GPS と 3G

最近 NTT 東日本の「光ポータブル」(PWR-100F)を導入した。Android 端末(HT-03A)の 3G を完全に遮断し、外出先でも光ポータブルを経由して HT-03A を利用するためである。これによって出先における HT-03A とノート PC のネット回線を一本化し経費を半減できると考えた。

これまで Android、PC ともに光ポータブル経由で問題なく利用出来ていたのだが、Andoroid 端末の Google Map や Foursquare クライアントソフトで GPS による位置特定がうまく出来ないことに気付いた。光ポータブルとつながっている基地局らしき場所までは判別しているようなのだが、端末があるピンポイントの場所を識別出来ないように見えるのだ。

そこで試しに 3G を一時的に復活させてみたところ、すぐにピンポイントの位置特定が可能になった。Tricorder という別のソフトによると 3G を遮断した状態でも GPS 情報は捕捉しているように見えるので、Google Map などでは恐らく衛星からの情報に加えて、どこかのサーバとの連携によって位置を割り出しているのではないかと推測している。なお、一時的な 3G 復活時には約 1,000 パケットが送受信されていた模様。

このままでもまあそれほど問題は無いのだが、正確な GPS 情報にアクセス出来ないのはちょっと悔しい。かといって GPS を使うときだけ 3G を復活させていると、思ったよりもパケットを消費しそうで、そうなると 3G 回線を一本化した意味が無くなってしまう。悩ましいところだ。ちなみに光ポータブルは SIM ロックフリー版で、E-mobile の SIM を挿している。まさかこれが原因ということは無いだろうと思う。

Windows7/64 ビット版と Android 開発環境

Windwos7/64 ビット版上に Android の開発環境を構築した。その際、Java SDK が 64 ビットに対応していたため、Eclipse も 64 ビット対応のもので揃えることを試みた。実は Windows 用 Eclipse の 64 ビット対応版は正式にはリリースされていない。

http://www.eclipse.org/downloads/

しかし、次のサイトにある Latest Release のリンクをたどっていくと 64 ビットに対応していると思われる Eclipse (eclipse-SDK-3.5.2-win32-x86_64.zip)を入手することができる。

http://download.eclipse.org/eclipse/downloads/

これによって 64 ビット版(と思われる)Eclipse は特に問題なく起動することができた。

続いて Android 開発用の Eclipse プラグインである ADT (Android Development Tools)のインストールを開始したのだが、次のようなメッセージとともにインストールを完了させることが出来なかった。

Cannot complete the install because one or more required items could not be found.

この状況については頻発しているようで、検索すると対応策をすぐに見つけることができる。必要なモジュールが足りないから、それらを補完するためリポジトリを追加設定すれば良いということらしい。検索結果に基づいて Eclipse の Help > Install New Software > Add を使い、Available Software Sites リストに次の URL を追加した。

http://download.eclipse.org/releases/galileo

ところがこのリポジトリには必要と思われるモジュール群が見つからず、結局は ADT のインストールを終了させることが出来なかった。

やはり Eclipse のダウンロードサイトに 64 ビット版が掲載されていないことから、これ以上調べても無駄と判断して 32 ビット版 Eclipse に切り替えた。そうしたところ ADT のインストールは問題なく完了し、Android SDK との連携から AVD (Android Virtual Device)の起動まで確認することができた。

ちなみに今回インストールした Eclipse は Galileo 3.5.2 である。

スマートフォンによるライブ配信

Android 端末で qikustream というアプリケーションを使うと、スマートフォンだけであっという間にライブ配信が出来てしまう。先日、某技術セミナーを Docomo の HT-03Aqik でライブ配信する実験をしてみた。携帯電話を三脚に取り付けるための器具(上海問屋で購入)を使えば固定も簡単である。講演は約2時間の長丁場だったので、充電用の電源パックを接続したまま配信を行った。

結果はまずまずだったと思う。画像は必ずしも鮮明ではないが、その場の雰囲気は十分に伝わってくる。部屋の照明を消してプロジェクターの明かりだけ、という低照度の環境であることを考えると、十分すぎるかもしれない。ただ、音声を鮮明に拾えていないという問題もある。Andoroid 端末の設置場所と講師の距離はせいぜい 3 – 4 m 程度だったが、配信先の再生環境で音声をクリアに聞くことは出来なかった。ボリュームを最大限に上げて、やっと聞き取れる程度である。携帯電話の内蔵マイクではこれが限界なのだろう。

このことは実験前から分かっていたので、Bluetooth 対応のヘッドセットを使って音声を拾おうと考えたのだが、qikustream のどちらの配信ソフトもヘッドセットのマイクをリンク出来なかった。通常の電話としての通話では、このヘッドセットは問題なく利用できるので、Bluetooth のプロファイルなどが関係しているのかもしれない。この点は今後も調査を継続する予定だ。

HT-03A には本体の USB 端子に接続する有線のマイク(+イヤフォンジャック)が付属しているので、これを延長する方法も考えられるのだが、その場合は USB 端子を共用している外部電源の接続が不可能になってしまう。1時間程度であれば内蔵バッテリでも大丈夫と思うが悩ましいところではある。

今回の実験では、Android 端末からの配信は 3G 回線を経由した。当初は、端末 → 無線 LAN → インターネットという経路を考えていたのだが、事前の調べでは利用可能だったはずの無線 LAN 設備が現場に無いことが判明したため、急遽 3G を使うことにした。都心とはいえ鉄筋コンクリート構造の屋内だったので接続状況を心配したが、2時間連続の配信は途中で途切れることはなかった。

あとで知ったのだが、Docomo は「直近3日間のパケット通信量が 300万パケット以上になるユーザの通信速度を制限」しているらしい。実験を行った当日のみのパケット通信量を調べることは出来ないが、今月分の今日までの全パケット通信量を見てみると約 160万パケットになっていた。配信実験以外に大量のパケット通信は無いはずなので、この数値がおよそ 2時間の配信での目安になると思う。なお、この通信速度制限の真偽を確認したかったのだが、Docomo の Web サイトでは情報を見つけることができなかった。

今回はセミナーという状況での実験だったが、スマートフォンによるライブ配信は屋外フィールドでの利用で、より真価を発揮するように思う。今ではビデオカメラも手軽に扱えるような状況ではあるが、ライブ配信を携帯端末だけで実現できるという点は重要ではないだろうか。このようなパワーを本当に必要としている人たちにとっては、iPhone や Android 端末は強力なツールとなるはずだ。

スマートフォン向けのレイアウトを実現する WPtouch

最近は Android 端末が日常で欠かせないツールとなっていて、Web サイトの閲覧にも Android 端末を使う時間が増えてきた。一応フルブラウザ搭載なので大抵のページを読めるのだが、サイトによって読みやすさの違いがかなり大きいように感じる。やはり端末のバリエーションに考慮していると思われるところのものは読みやすい。

ここで改めて自分の仕事用 Web サイトや Blog サイトを Android 端末経由で見直してみると、それほど悪くはないのもの快適というほどでもないことに気付く。仕事用のサイトについては静的な XHTML と CSS だけで単純に作ってあるので、各種端末への対応は自力でも何とかできそうな気もするが、WordPress による Blog のほうはちょっと難しそうだ。そこで公開プラグインを探してみたところ、まさにそのものの機能を提供してくれるものが見つかった。

http://wordpress.org/extend/plugins/wptouch/
http://www.bravenewcode.com/wptouch/

インストールは WordPress のダッシュボードにあるプラグイン管理機能を使って、他のプラグイン同様にオンラインで操作できる。インストールしてからさっそくこの Blog を Android 端末で見てみると、記事の一覧や本文が表示されるレイアウトが非常に読みやすくて良好である。あたかも Android 端末専用のクライアントソフトを使っているような感触だ。もちろん画面の縦横切り替えにも対応している。このレイアウトによる表示を見ていると、スマートフォンでは横スクロールをしないデザインが重要だと感じる。

WPtouch はもともと iPhone 向けにリリースされたようで、そっちのほうではよく知られているようだ。一般的な携帯電話でどのように表示されるのかは確認していない。

ちなみに wordpress.comWordPress による Blog ホスティングサービスを提供している。自前で運用する WordPress とは違って、wordpress.com の利用者は自分でプラグインを追加することは一切出来ないのだが、どうも WPtouch はデフォルトで設定されているようだ。そのため wordpress.com で Blog を作成すれば最初から Android 端末などに対応したレイアウトが可能になっている。

Android 端末で表示した WordPress の投稿記事画面

Android 端末で表示した WordPress の投稿記事画面

Android 端末で表示した WordPress の投稿記事画面2

Android 端末で表示した WordPress の投稿記事画面2