51
Copyright © 日本システム開発株式会社 All Rights Reserved Android開発ノウハウ、 一部おしえます 2012年2月8日 青森県Android技術セミナー 日本システム開発 第2事業部 石原正樹(@ishihara_twit)

Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

Copyright © 日本システム開発株式会社 All Rights Reserved

Android開発ノウハウ、 一部おしえます

2012年2月8日 青森県Android技術セミナー

日本システム開発 第2事業部 石原正樹(@ishihara_twit)

Page 2: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p2 p2

目次

1.はじめに

2.アプリケーション開発におけるノウハウ(1)

3.アプリケーション開発におけるノウハウ(2)

4.プラットフォーム開発におけるノウハウ

5. Android4.0に関連したその他の話題

Page 3: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p3 p3

1. はじめに

Page 4: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p4 p4

1. はじめに

Android4.0が登場し、Google社の公約どおりソースコードも公開され、Androidは新しい時代に突入しようとしています

本稿では、弊社がいままでのAndroid開発で蓄積した開発ノウハウを紹介するとともに、これからのAndroid4.0の話題もからめて紹介します

Page 5: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p5 p5

1. はじめに

本稿で紹介する要素

アプリケーションのUIパフォーマンスに関する基本的な技術要素の紹介

プラットフォーム開発の事例として動画再生アクセラレートの紹介

Android3.x/Android4.0の一部新機能の概要紹介

RenderScript

マルチスクリーン

Page 6: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p6 p6

2. アプリケーション開発におけ るノウハウ(1)

Page 7: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p7 p7

2. アプリケーション開発におけるノウハウ(1)

Androidアプリケーションの開発で今も昔も変わらず存在する問題点といえば「UIの速度」

Android4.0ではUIがさらに拡張されており、UIに対する要求は留まることを知りません

Android2.3 Android4.0

Page 8: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p8 p8

2. アプリケーション開発におけるノウハウ(1)

AndroidアプリケーションのUIパフォーマンスを向上させるには、Androidアプリケーションが基本として「シングルスレッド・モデル」であるということを理解しなければなりません

Page 9: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p9 p9

2. アプリケーション開発におけるノウハウ(1)

「シングルスレッド・モデル」とは?

アプリケーション内の全てのコンポーネントは mainスレッド と呼ばれる、単一のスレッドで実行されることを指します

Androidアプリケーション コンポーネント

Activity

Broadcast Receiver

Service

Activity

mainスレッド

Page 10: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p10 p10

2. アプリケーション開発におけるノウハウ(1)

シングルスレッド・モデルであることについて意識しておくべきこと

1つのアプリケーションの中に同時に実行したいコンポーネントが多数存在すると、UIへの影響が顕著に表れます

UIの表示はActivityを処理しなければなりません

多数のコンポーネントが存在するということは、mainスレッドがActivityの処理に割ける時間が少なくなるということです

対策

アプリケーション内でプロセスを分割すること

ワーカースレッドを適切に利用すること

Page 11: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p11 p11

2. アプリケーション開発におけるノウハウ(1)

Android3.x/4.0では…

並列処理フレームワーク「Loader」の導入

Android2.3までは、ワーカースレッドを扱う「AsyncTask」というフレームワークが存在していましたが、さらに拡張が行われています

分散処理フレームワーク「RenderScript」の導入

(後述します)

Page 12: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p12 p12

3. アプリケーション開発におけ るノウハウ(2)

Page 13: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p13 p13

3. アプリケーション開発におけるノウハウ(2)

AndroidアプリケーションのUIパフォーマンス向上のためにもう1点、ViewHierarchyのロック時間を説明します

Page 14: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p14 p14

3. アプリケーション開発におけるノウハウ(2)

ViewHierarchyとは?

AndroidのUIを表現するViewのツリーのこと

RelativeLayout

TextView

Activity

ListView LinearLayout

Button Button

Page 15: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p15 p15

3. アプリケーション開発におけるノウハウ(2)

ViewHierarchyのロック時間とは?

画面更新の開始から完了までの時間のこと

画面更新の際はViewHierarchy全体がロックされ、各Viewの画面が更新、その後ViewHierarchyのロックを解除します

Page 16: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p16 p16

3. アプリケーション開発におけるノウハウ(2)

ViewHierarchyのロック時間のイメージ

(最悪ケースの場合)

RelativeLayout

TextView

Activity

ListView LinearLayout

Button Button

Lock

Draw

Draw

Draw Draw Draw

Draw Draw

Page 17: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p17 p17

3. アプリケーション開発におけるノウハウ(2)

ViewHierarchyのロック時間

ViewHierarchyの階層が深いほどロック時間が長くなります

ViewHierarchyのツリーが大きいほどロック時間が長くなります

ViewHierarchyの各Viewの描画要素(ex.背景画像が設定されている)が多いほどロック時間が長くなります

ViewHierarchyのロック時間が長いほどUIパフォーマンスは下がります(画面更新のFPSが下がる)

Page 18: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p18 p18

3. アプリケーション開発におけるノウハウ(2)

対策

hierarchyviewer/layoutoptを使いViewHierarchyの分析/最適化をおこなう

SurfaceViewを用いて高速描画をおこなう

Page 19: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p19 p19

3. アプリケーション開発におけるノウハウ(2)

hierarchyviewer/layoutoptとは?

Android SDKに付属するツール

hierarchyviewerはViewHierarchyを可視化

layoutoptはViewHierarchyの冗長な部分を検出

各種ツールは

Android SDKの

バージョンアップで

徐々に進化しています

(右図はR16の

hierarchyviewer)

Page 20: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p20 p20

3. アプリケーション開発におけるノウハウ(2)

SurfaceViewとは?

ViewHierarchyのSurface(描画バッファ)とは別のSurfaceを独自に用意する特殊なView

ViewHierarchyの中に通常のViewと同じように組込むが、ViewHierarchyとは別レイヤとなる

ViewHierarchyの描画とは連動しないため、描画ロックの対象外となる(ロック時間がない)

mainスレッドで描画を行わない(独自のスレッドで描画処理を実行する)

結果、SurfaceViewのみの高速な描画が実現できる

Page 21: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p21 p21

SurfaceViewのイメージ

ViewHierarchyの一部に穴を空けたようなかたちでSurfaceViewレイヤを見せる

SurfaceView

3. アプリケーション開発におけるノウハウ(2)

ViewHierarchy

Page 22: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p22 p22

3. アプリケーション開発におけるノウハウ(2)

SurfaceViewの注意事項

特徴を理解せずに使うことは障害のもと

SurfaceViewで全画面を占有する場合は問題になることは少ないが、ViewHierarchyに組込んで使う場合は注意が必要

ViewHierarchyの階層上では前面にあるはずでも、実際のレイヤでは背面に位置するため、レイヤ管理が直感的ではなくなる(特殊な構成となる)

特に複数のSurfaceViewを扱う場合のレイヤ管理は問題が多発する

Page 23: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p23 p23

4. プラットフォーム開発におけ るノウハウ

Page 24: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p24 p24

4. プラットフォーム開発におけるノウハウ

Androidプラットフォーム開発とは

ここでは、AndroidのOS部分を製品に搭載しカスタマイズする開発のことを指しています

Page 25: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p25 p25

4. プラットフォーム開発におけるノウハウ

Androidプラットフォーム開発の現状

オープンソースであることが功を奏して、プラットフォーム開発に関する技術情報も広く出回るようになりました

Androidを載せる・動かすことはそこまで敷居の高いことではなくなっています

Page 26: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p26 p26

4. プラットフォーム開発におけるノウハウ

Androidプラットフォーム開発の1つの課題

既にAndroidが動いていることは珍しくなく、要求は高度化する傾向にあります

高度化する要求を叶えるため、ハードウェアのアクセラレーションが1つの課題事項として挙げられます

Page 27: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p27 p27

4. プラットフォーム開発におけるノウハウ

弊社の取り組み事例

Renesas Electronics社製 新統合SoC「R-Mobile A1」における動画再生アクセラレート

R-Mobile A1 引用元:ルネサスエレクトロニクス http://japan.renesas.com/products/soc/

assp/mobile/r_mobile/a1/index.jsp

(参考) Armadillo-800 EVA 引用元:アットマークテクノ http://armadillo.atmark-techno.com/armadillo-800-EVA

Page 28: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p28 p28

4. プラットフォーム開発におけるノウハウ

「R-Mobile A1」とは?

ARM Cortex-A9コア(アプリケーション・プロセッサ)、および SH4Aコア(リアルタイム・メディア処理・プロセッサ)を搭載した統合SoC

グラフィックスコアとして高性能3Dグラフィックスエンジン PowerVR SGX 540 を搭載する

フルHD動画記録・再生、地上波デジタル放送再生に対応

R-Mobile A1

ARM Cortex-A9 800MHz

(Application Processor)

PowerVR SGX540 (3D GPU)

SH4A 600MHz

(Realtime/Media Processor)

Page 29: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p29 p29

4. プラットフォーム開発におけるノウハウ

取り組み内容

R-Mobile A1上で動作するAndroid(2.3)に動画再生アクセラレート機能を追加し、フルHD動画コンテンツのスムーズな再生を可能とする

動画再生のアクセラレートには OpenMAX を使用する

OpenMAXとは?

OpenGLと同じく Khronos Group が策定したロイヤリティフリーのマルチメディア処理API

Big Buck Bunny images courtesy of ©

copyright 2008, Blender Foundation /

www.bigbuckbunny.org

Page 30: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p30 p30

4. プラットフォーム開発におけるノウハウ

Androidの動画再生処理のアーキテクチャ

StageFright を利用したアーキテクチャ

Android 2.3

Linux

MediaPlayer 通常アプリケーション

StageFright

Software Codec/Renderer

SurfaceFlinger

SGX (GPL module)

SGX (user module/ OpenGL ES)

Frame Buffer

Software Renderer

Page 31: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p31 p31

4. プラットフォーム開発におけるノウハウ

この構成の問題点

Android Open Source Project のソースコードを中心に構成すると、ソフトウェアでのコーデック/レンダリング処理が多くなってしまう

動画再生に必要な処理の流れ

動画のサイズに応じて処理コストも増大

フルHD(1920×1080)ともなると多大な負荷が予想される

デコード リサイズ 画面描画

動画 ファイル/ ストリーム

Page 32: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p32 p32

4. プラットフォーム開発におけるノウハウ

ソフトウェアでのデコード/レンダリングによる出力性能は?

概ね3秒~5秒に1コマの再生

(約0.2~0.3FPSの性能) ※ まだ正確なフレーム数は確認できていないため目視による 想定値です

※ ソフトウェアの実装、および動画フォーマット /ビット レートなどにより変動する可能性があります

Page 33: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p33 p33

4. プラットフォーム開発におけるノウハウ

OpenMAXによるアクセラレートを有効にした動画再生アーキテクチャ

Android 2.3

Linux

MediaPlayer 通常アプリケーション

StageFright

StageFright用 プラグイン

OpenMAX サービス

libstagefrighthw

liboverlay

Video4Linux2 SH4A通信

(メディア処理)

SurfaceFlinger

SGX (GPL module)

SGX (user module/ OpenGL ES)

Frame Buffer

Software Renderer

Page 34: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p34 p34

4. プラットフォーム開発におけるノウハウ

OpenMAXによりアクセラレートされたデコード/レンダリングの出力は?

コマ落ちのないスムーズな動画再生が実現(25FPS以上の性能)

※ まだ正確なフレーム数は確認できていないため目視による 想定値です

※ ソフトウェアの実装、および動画フォーマット /ビット レートなどにより変動する可能性があります

Page 35: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p35 p35

4. プラットフォーム開発におけるノウハウ

Android3.x/Android4.0では…

OpenGL ESによる画面描画アクセラレート拡大

Android2.3までは、アプリケーションからの画面描画操作の一部しかアクセラレートされていませんでした

Android3.x/Android4.0では、それらの画面描画操作がOpenGL ESを経由しハードウェアアクセラレートするように改善が行われています

Android3.x/Android4.0ではOpenGL ESによるアクセラレートの重要度が高くなっています

分散フレームワーク「RenderScript」の導入

(後述します)

Page 36: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p36 p36

5. Android4.0に関連したその他

の話題

Page 37: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p37 p37

5. Android4.0に関連したその他の話題

5-1. 分散フレームワーク(RenderScript)

5-2. マルチスクリーンの時代

Page 38: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p38 p38

5-1. 分散フレームワーク(RenderScript)

RenderScriptとは?

Android3.0から導入された分散処理フレームワーク

主に3Dやアニメーションの描画処理に使われる

C99の記法に似た独自定義のスクリプト言語(RenderScript)を使用する

マルチコアCPU/GPU/DSPを分散の対象とする

プラットフォームはもちろん、一般のAndroidアプリケーションでも利用することが可能

Page 39: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p39 p39

5-1. 分散フレームワーク(RenderScript)

RenderScriptの重要性は?

ARMプロセッサはマルチコア化の流れができつつある

ARM Cortex-A9 MPCoreでは最大4コアが実装可能

ARM Cortex-A15 MPCoreでは最大8コアが実装可能

Tegra3(Kal-El)では既にCortex-A9による4コアが実現

最新SoCではヘテロジニアス・マルチコアの流れが加速

DSPやGPUなどを内蔵するSoCが急速に増加中

TI社最新SoCの OMAP5 は ARM/DSP/GPU を総計すると合計6コア以上のスペックとなる

前述のR-Mobile A1も ARM/SH(DSP含む)/GPU のヘテロジニアスマルチコアの一種と言える

Page 40: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p40 p40

5-1. 分散フレームワーク(RenderScript)

RenderScriptは実行環境に合わせて最適な分散/並列処理を実行することを目的としています

実行環境によりコア数は変化する

1コア/2コア/4コア/8コア/continued...

DSP無し/有り

GPU無し/有り(シェーダ性能の違いも影響)

スクリプト言語であるため実行時に最適な実行(分散)方法を決定することができる

コンパイラ言語だとコンパイル時に実行内容が固定化されてしまう

Page 41: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p41 p41

5-1. 分散フレームワーク(RenderScript)

RenderScriptの影響(アプリケーション)

既存のマルチスレッドプログラミングでは、これからのプロセッサの進化(マルチコア化)による恩恵(フリーランチ)を得ることが難しいため、新たな並列化の手法として期待される

ただし、現状ではRenderScriptの適用範囲はデータ演算、グラフィックス描画に限られているため全ての処理に適用できるわけではない

Page 42: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p42 p42

5-1. 分散フレームワーク(RenderScript)

RenderScriptの影響(プラットフォーム)

Android3.x/Android4.0で多様されるUIアニメーションの一部にRenderScriptが使われはじめている

今後はRenderScript実行フレームワークの最適化可否によりパフォーマンスの違いが出る可能性あり

Page 43: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p43 p43

5-1. 分散フレームワーク(RenderScript)

分散フレームワークについて

Android以外に目を向ければ分散/並列処理系は他にも研究されている言語/フレームワークが多数存在しています

OpenCL/OpenMP/Erlang/Scala Actor/etc…

RenderScriptはその中の1つと考えることもできます

今後スタンダードになるかはまだ未知数と言えます…

Page 44: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p44 p44

5-2. マルチスクリーンの時代

Androidがターゲットとするデバイスは急速に拡大しつつあります

スマートフォン

タブレット

テレビ(GoogleTV)

etc…

Page 45: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p45 p45

5-2. マルチスクリーンの時代

どのデバイスにもAndroidMarketが搭載されていることを考えると、1つのアプリケーションは多種多様なデバイスで実行される可能性があります

大きな違いはスクリーンサイズの違い

(物理的なサイズ、解像度も異なる)

アプリケーションは複数のスクリーン(マルチスクリーン)に対応できればマーケットが広がる可能性あり

Page 46: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p46 p46

5-2. マルチスクリーンの時代

Android3.x/Android4.0では…

マルチクリーン定義の拡張

マルチスクリーン向けフレームワーク「Fragment」の導入

Page 47: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p47 p47

5-2. マルチスクリーンの時代

Fragmentとは?

Activityに配置するUI部品を集約しモジュール化することができるUIフレームワーク

Fragmentの単位でUIを動的配置することができる

引用: http://developer.androi

d.com/guide/topics/fun

damentals/fragments.

html

Page 48: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p48 p48

5-2. マルチスクリーンの時代

他に注意すべき事項

使用可能なインプットデバイスも異なる

スマートフォン/タブレット

タッチパネルを使用する

テレビ(GoogleTV)

タッチパネルは使用しない

リモコン(コントローラ)のみを使用する

Page 49: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p49 p49

5-2. マルチスクリーンの時代

リモコン(コントローラ)はD-Padでの操作がメイン

テレビでは、スマートフォン/タブレットを前提としたUIでは問題が発生する場合があります

テレビの場合、リストに100個のアイ テムがあると「決定」ボタンに到達す るためには、D-Padを100回押さなけ ればならない

スマートフォ ン/タブレッ トではタッチ 操作のため特 に問題はなし

Page 50: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p50 p50

5-2. マルチスクリーンの時代

マルチスクリーンの問題

Fragmentをスクリーンの種類に合わせて動的配置することである程度解決は可能です

しかし、自動で問題を解決してくれるわけではないのでターゲット毎の作り込みは必要となります

今後もAndroidのバージョンアップで、マルチスクリーンに関する拡張は行われていくものと予想されます

Page 51: Android開発ノウハウ、 一部おしえます...ソースコードも公開され、Androidは新しい時 代に突入しようとしています 本稿では、弊社がいままでのAndroid開発で蓄

p51 p51

ご清聴ありがとうございました。

ご不明な点がありましたら下記までどうぞ。

日本システム開発株式会社 http://www.nskint.co.jp/

石原 正樹 [email protected]

名古屋本社

〒450-0002

名古屋市中村区名駅4丁目2番地28号

名古屋第二埼玉ビル7F

TEL: 052-551-1861

東京本社

〒163-0637

東京都新宿区西新宿1丁目25番1号

新宿センタービル37階

TEL: 03-5324-0123

twitter: @ishihara_twit