Android」カテゴリーアーカイブ

Android

Android Wear 5.1.1 3D-imclock の更新と Moto 360

Moto 360 を 5.1.1 に更新すると描画位置がずれるらしいので 3D-imclock を修正しました。
あまりきちんと調べていませんが、画面の仕様が変わっているようです。

3D imclock for Android Wear
Google Play: 3D imclock for Android Wear

Moto 360 では、以前は 320×290 のスクリーンに対して OpenGL の Viewport Y に -30 の offset が入っていました。
Android Wear 5.1.1 からは 320×320 のバッファ扱いとなっており、Viewport の offset が無くなっているものと思われます。(この問題について書いた以前の記事は こちら )

Moto360                     Viewport
-------------------------------------------
Android 5.0      320x290    (0,-30,320,320)
Android 5.1.1    320x320    (0,0,320,320)

関連エントリ
Android Wear 5.0 Watch Face API 対応と互換性
Android Wear 3D のアナログ時計 (Watch Face)
Android Wear にゲームを移植

Android Wear 5.1.1 は Wi-Fi による同期に対応、Apple Watch との違い

Android Wear 5.1.1 は Wi-Fi 接続に対応しました。
利用できるのは Wi-Fi 機能を搭載したデバイスのみに限られますが、インターネットを経由した同期を行うことが可能です。

                        Bluetooth   Wi-Fi
-------------------------------------------------------------
Android Wear 4.4W~5.0  直接同期    --
Android Wear 5.1.1      直接同期    Internet 接続、Cloud 同期
Apple Watch             直接同期    LAN 経由同期 (P2P)

Apple Watch も Wi-Fi 接続を併用していますが Wi-Fi の使い方が異なります。

● Apple Watch の場合

Bluetooth の補佐として用いられているようです。
接続は自動化されており iPhone 側の設定を引き継ぎます。
そのため Watch 側には特に Wi-Fi の設定はありません。

iPhone と同じ Wi-Fi ルータを利用して LAN 内で直接転送が行われます。
あくまで iPhone と Watch 間の通信に用いられており、Apple Watch が直接インターネットに接続することは無いようです。

Apple: Apple Watch の Bluetooth と Wi-Fi について

● Android Wear の場合

Android Wear 側に独立した Wi-Fi の設定があります。
予め Wi-Fi の設定しておけば、Android Wear デバイスが直接 Internet への接続を行うことができます。実際に Google Map アプリでは、Bluetooth 接続が切れていても地図データを読み進めることができました。

さらに「クラウド同期」を有効にしておくと、スマートフォンやタブレットとの通信(同期)もインターネット経由で行うことが可能です。

有効にする方法
 1. Smartphone/Tablet 側のコンパニオンアプリ “Android Wear” の設定を開く
 2. クラウド同期を ON にする

Android Wear の場合は Apple Watch と違って同一のネットワーク (LAN) に接続しておく必要がありません。バッテリー消費を考えなければ、ペアリングしたスマートフォンやタブレットは家に置いたままで、Android Wear とモバイルルータだけ持ち歩くこともできるわけです。

通知などのメッセージが届くのはもちろん、設定などコンパニオンアプリを伴うものでもクラウド経由できちんと設定変更が反映されます。

関連ページ
Smart Watch 一覧

関連エントリ
Apple Watch のバッテリーと Android Wear 5.1
Apple Watch を使ってみた, Android Wear との比較など
Android Wear 単体で音楽再生を行うアプリ (2)
Android Wear 3D のアナログ時計 (Watch Face)
Android Wear の 3D 描画 と NDK r10
Android Wear にゲームを移植

AndroidTV Nexus Player と Chromecast API

NexusPlayer は Chromecast と同様の使い方もできます。
PC (Chrome) やスマートフォン・タブレットからストリーム系アプリの
コントロールをしたり、画面を転送することが可能です。

Chromecast に関しての以前の記事はこちら
Chromecast で C++ アプリを走らせる。Emscripten のゲームを動かす

Chromecast と違い Android TV は Wi-Fi 設定など本体で操作可能で
IP アドレスの確認も自分でできます。
そのためか Chromecast のようなセットアップアプリは不要で、
ネットに繋がればすぐに cast 可能な状態になっているようです。

USB で直接 PC と接続できるため、Cast アプリのデバッグもしやすくなっています。
自前の Custom Receiver を走らせるための手順は下記の通り。

1. Google Cast SDK の Developer 登録を行う。
 ・Google Cast SDK Developer Console

2. Nexus Player のシリアルナンバーを Developer Console に登録
 ・設定→端末情報→シリアル番号 で確認可能
 ・登録後 15分待つ必要あり

3. Google Cast の Developer Mode を有効にする
 ・設定→Google Cast→デベロッパーサポート を「はい」に変更
 ・ここで一旦再起動する

4. Developer Console で Application ID を作成
 ・任意のアプリケーション URL を登録して Application ID と関連付ける

5. Application ID を自分の sender App に埋め込む

Android Application 同様 adb 接続で logcat の確認ができますし、
Chromecast 同様 PC の Chrome Browser で Inspect の表示ができます。

Chromcast よりもずっとプロセッサのパワーがあるため、
以前作成した ChiRaKS も十分な速度で動くようになっています。
Chromecast と互換性がなくなってしまうので仕方ないのかもしれませんが
WebGL は動きませんでした。

関連エントリ
Nexus Player を GamePad&Mouse で使う、他
Chromecast で C++ アプリを走らせる。Emscripten のゲームを動かす

Nexus Player を GamePad&Mouse で使う、他

Google の Android TV 端末、Nexus Player を使ってみました。
UI は一般の Android とは大きく異なり TV を意識したもの。
操作は付属のリモコンを使うので Apple TV に似ています。

Google Nexus Player

大きく異なっているのは単体でアプリが動作することで、Google Play Store からダウンロードできます。
ただし専用&対応アプリしか出てこないらしく検索してもタイトルは多くありません。
HOME に並んでるものもゲームとムービー等のコンテンツのみで実用系アプリは無し。
Chrome や GMail なども無く、検索でもこの辺りのアプリが見当たりませんでした。

micro USB 端子があるので PC につなげば adb 接続できます。
開発者メニューを有効にするには設定の端末情報から「 ビルド 」を何度も選択する必要あり。
USB 経由で install した場合は普通の Android アプリも動くようです。
ただし HOME 画面にはアイコンが表示されないため、実行には少々手間がかかります。

 1. 設定 → アプリ → ダウンロードしたアプリ
 2. 一覧から選択してから「開く」

HOME画面に表示させる場合は intent-filter の設定が必要です。




application に isGame=”true” があるとアプリではなくゲーム側に分類されます。

通常の Android アプリを走らせた場合タッチ操作はできませんが、
vfpbenchmark のように標準の UI を使ったものはリモコンだけで操作できました。
(vfp benchmark の結果はこちら)

また USB Host が有効なので、タッチ操作が必要なアプリでもマウスを繋げばそれなりに使用することが出来ます。
BACK や HOME ボタンはないので、マウスの場合もリモコンは必要になります。

同様に USB を使った接続では PS3 や Xbox360 (USB版) のゲームコントローラも使うことが出来ました。
この辺りも通常の Android 端末と同様です。
専用のゲームパッドがなくてもひと通りゲーム操作できます。
ただし USB 接続は adb と併用できないので、ゲーム開発にはワイヤレスのコントローラが欲しくなります。

下記追加しました

VFP Benchmark Log
CPU/GPU OpenGL ES Extension (Mobile GPU)

GPU は Intel HD Graphics ではなく Apple A7 世代と同じ PowerVR G6430 です。

関連エントリ
Android 5.0 Nexus Player x86 と対応 ABI
iOS7 対応 SteelSeries Stratus ワイヤレスゲームコントローラー
Android 用ゲームパッド BUFFALO Zeemote JS1 H
Android 3.1 と GamePad のイベントの詳細 (2)
Android 3.1 と GamePad のイベントコード

Android 5.0 Nexus Player x86 と対応 ABI

Android 5.0 から 64bit CPU に対応しています。
Android で最初の 64bit device は Nexus 9 です。
もちろん上位互換性があり従来の 32bit ARM Native code も実行可能です。
32bit ARM には 2種類の ABI が存在していたので合計 3種類です。

ARMv8A AArch64  arm64-v8a
ARMv7A          armeabi-v7a
ARMV5TE         armeabi

Android 4.4 までは同時に 2種類の ABI に対応することが出来ました。
Android 5.0 以降は上記のように 3つ以上指定可能となっています。

同時に発表された Nexus Player は Nexus 初の Intel CPU (Atom Z35xx)
搭載端末となっています。
OS も Android 5.0 なのですが、残念ながら 64bit (x86_64) ではなく
32bit (x86) で動いているようです。

ro.product.cpu.abi=x86
ro.product.cpu.abi2=armeabi-v7a
ro.product.cpu.abilist=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist64=

以前調べたように、Android x86 端末は Binary Translator によって
ARM の Native code を実行することができます。
同じ x86 (32bit) でも 5.0 以降なら 3種類指定できるので、
Nexus Player の場合 armeabi も含まれていることがわかります。

Device       Android CPU           ABI
-------------------------------------------------------------------
Nexus 5         5.0  Krait 400                armeabi-v7a  armeabi
Nexus 9         5.0  Denver        arm64-v8a  armeabi-v7a  armeabi
Nexus Player    5.0  Silvermont    x86        armeabi-v7a  armeabi
MeMO Pad ME176  4.4  Silvermont    x86        armeabi-v7a

Android 5.0 からは、これまで x86 で動かなかったアプリも動くように
なるかもしれません。
将来 x64 (x86_64) 端末が登場したら x86_64 を含めた 4種類です。

関連エントリ
Nexus 9 Tegra K1 と ARM 64bit Denver
Android x86 Binary Translator を試してみる