変わらないと生き残れないAndroid Lの新機能まとめ:Androidで動く携帯Javaアプリ作成入門(53)(3/4 ページ)
新しいUIテーマ「Material Design」や、新しいランタイム「ART」、生まれ変わったNotification、Android TVアプリ、グラフィックス、マルチメディア、ストレージ、ネットワーク周りなどの新機能をテーマ別に紹介します。
Android TVアプリ
Android Lはテレビのような大画面デバイス上で動作するアプリも開発可能です。テレビアプリを開発するには、専用のSDKとライブラリを使用し、テレビ用のActivityを実装します。
以降、ホーム画面のレイアウトを上から順に紹介します。
オススメ(Recommendations)
テレビのホーム画面はスマートフォンやタブレットと違い、いうなればテレビに特化するものになります。ホーム画面の真ん中にあるオススメ欄は、ユーザーが関連するメディアを簡単に開くための機能です。ユーザーが選択したコンテンツに基づき、オススメ欄はパーソナライズされていきます。開発者は、自身のコンテンツがこのオススメ欄に出るように実装することが可能です。
アプリとゲーム
アプリとゲームはホーム画面の下部の専用のエリアに表示されます。この専用エリア内で、ユーザーの利用頻度に応じてアプリとゲームはソートして表示されます。
設定
設定アプリへのアクセスは、ホーム画面の最下部から行います。設定アプリではAndroidとデバイス固有の設定が行えます。
Android TVアプリ開発に当たっての注意点
テレビ上で動作するアプリを開発するに当たり、いくつか気を付けなければならないことがあります。
まず、ディスプレーに関する注意点です。一つはスマートフォンやタブレットと違い、テレビはリビングルームに据え置かれていて、複数人が見ることがあるという点です。カードゲームや戦略ゲームなど、手の内がバレると成り立たないようなゲームはあまりテレビ向きではないといえるでしょう。もう一つは、画面は常に横向きであるということです。画面を縦に使うゲーム(落ちゲーやシューティングゲームなど)は、レイアウトを工夫する必要があります。
入力デバイスについても注意が必要です。スマートフォンやタブレットのようなタッチ入力ではなく、ゲーム用コントローラーやテレビリモコンからのキー入力が主体となります。
ゲーム用コントローラーはゲーム実行時に接続されたり取り外されたりするので、適切に処理しなければなりません。複数のコントローラーを識別番号で管理する必要があります。キー入力をどのようにハンドリングするかも重要です。
Androidがサポートするコントローラー間でボタン配置に互換性があることを過度に期待せず、サポートするコントローラーをあらかじめ決めておき、一貫したボタンマッピングを使用し、コントローラーの性能を検出して調整する、などの方針を設けるといいでしょう。
また、コントローラーが切断された場合、ゲームをポーズして、コントローラーの接続を促すようにするなどの配慮も必要です。コントローラーはBluetoothで接続され、無線の影響や電池切れなどで意図せず切断されてしまうことがあるためです。
Google Play Game Servicesの機能を使うと、バッヂ、クラウドへのデータ保存、マルチプレー機能などを提供することもできます。
グラフィックス、マルチメディア
OpenGL ES 3.1
Android L開発者プレビューでは、OpenGL ES 3.1をサポートしました。OpenGL ES 3.1の主な新機能は以下です。
- シェーダーの計算
- 個別のシェーダーオブジェクト
- 間接的描画コマンド
- マルチサンプルとステンシルテクスチャ
- シェーディング言語の改善
- 高度なブレンドモードとデバッグのための拡張機能
- OpenGL 2.0と3.0との下位互換性
Java APIでは「GLES31」というクラスがOpenGL ES 3.1のインターフェースになっています。OpenGL ES 3.1を使用するにはマニフェストファイルで以下のようにバージョンを指定しなければなりません。
<manifest> <uses-feature android:glEsVersion="0x00030001" /> …… </manifest>
新しいカメラAPI
Android L開発者プレビューでは、細粒写真の取り込みと画像処理を容易にする新しいカメラAPIが「android.hardware.camera2」というパッケージで追加されました。
このAPIでは、例えば「CameraManager.getCameraIdList()」メソッドでシステムが利用可能なカメラデバイスにアクセスし、「CameraManager.openCamera()」メソッドで任意のカメラデバイスに接続できます。画像のキャプチャを開始するために「CameraCaptureSession」インスタンスを作成し、撮影した画像のためにSurfaceオブジェクトを作成します。「CameraCaptureSession」クラスはバースト内で単一または複数の画像撮影が行えます。
オーディオプレーバック機能の変更点
オーディオプレーバック機能では、主に以下の点が変更されました。
- 浮動小数点数を用いる
- MediaCodecと同じくByteBufferのように音声データを扱える
- WRITE_NON_BLOCKINGオプションで、バッファリングとマルチスレッド化の容易化
メディプレーバックコントロール機能の変更点
メディプレーバックコントロール機能では、主に以下の点が変更されました。
- これまで使用してきたRemoteControlClientの代わりにMediaControllerを使用して、独自のメディアコントロールアプリを構築可能
- 再生中のMediaSessionに再生コマンド、メディアキー、その他イベントを送信するための複数のコントローラーを作成可能
- TransportControlsを使用して、スキップ、停止、再生などのトランスポートコマンドを送信可能
- 新しいNotification.MediaStyleクラスを使用して、メディア再生制御が可能なNotificationを作成可能
Copyright © ITmedia, Inc. All Rights Reserved.