2011年7月31日日曜日

Android 3.2 Platform

Android 3.2 Platform

API Level: 13

Android 3.2 へようこそ!

Android 3.2 はユーザーと開発者むけの新しい機能を追加したインクリメンタルプラットフォームリリースです。このセクションでは、新しい機能と developer APIs のオーバービューを紹介します。

開発者は Android SDK のコンポーネントとして Android 3.2 platform をダウンロードできるようになりました。このプラットフォームには Android library と system image, emulator skin などが含まれていますが、外部のライブラリは含まれていません。

Android 3.2 向けの開発とテストを始めるには、Android SDK Manager を使って自分の SDK にプラットフォームをダウンロードします。より詳しい情報は Adding SDK Components を見てください。Android が初めての人は、まず download the SDK Starter Package から始めてください。

リマインダー: すでに Android application を公開している場合、できるだけ早く Android 3.2 上であなたのアプリケーションのテストと最適化をしてください。最新の Android-powered デバイスでベストな体験を提供していることを確認するべきです。そのためにあなたができることについての情報は Optimizing Apps for Android 3.x を見てください。

---
Platform Highlights

New user features

  • ワイドレンジのタブレット用の最適化
    Android 3.2 はワイドレンジのタブレットデバイスでユーザー体験をすばらしいものにするためのシステム全体にわたるさまざまな最適化を含んでいます。

  • 固定サイズのアプリ用ズーム互換性
    Android 3.2 は、大画面のデバイス上の固定サイズアプリを見る新しい方法である、compatibility zoom mode (ズーム互換性モード)をサポートします。新しいモードは、タブレットのような大画面サイズ上で動くようにデザインされていない標準の UI ストレッチに代わって pixel-scaled を提供します。ユーザーは、互換性サポートが必要なアプリに対して、システムバーのメニューアイコンから新しいモードにアクセスできます。

  • SD card からの Media sync
    SD card をサポートしているデバイスで、ユーザーはメディアファイルを SD card からそれを使用するアプリへ直接ロードできるようになりました。システムの機能によって、アプリがシステムメディアストアからファイルにアクセスできるようになりました。



New developer features

  • 画面サポートを管理する API の拡張
    Android 3.2 は、さまざまな Android-powered device でのアプリケーション UI の管理方法に新しいものを追加した、プラットフォームスクリーンサポート API の拡張を提供します。API は新しいリソース識別子と manifest 属性を含みます。これにより異なるサイズ上でのアプリの表示を、一般的なサイズのカテゴリに頼るよりも正確にコントロールできます。
    fixed-sized アプリと、いくつかのスクリーンサイズむけの限定的なサポートをしているアプリに対しては、最も可能性のあるディスプレイを確認してください。プラットフォームは、UI を小さいスクリーン領域に描画して、それをディスプレイの可能な領域に拡大する、新しいズーム互換性モードも提供します。スクリーンサポート API のより詳しい情報とその使い方は以降のセクションをみてください。



---
API Overview

Screens Support APIs

Android 3.2 は新しいスクリーンサポート API を紹介します。これにより異なる画面サイズに渡ってどのようにアプリケーションが表示されるかをより細かくコントロールできます。新しい API は、プラットフォームの一般的なスクリーンサイズモデルを含む既存のスクリーンサポート API 上に作られ、一般的なスクリーンサイズ (large や xlarge) よりも、"dpi" 単位で測定されたサイズ (600dp や 720dp) で指定したスクリーン範囲に正確にターゲットします。

アプリケーションの UI をデザインする際、プラットフォームが提供する抽象化された解像度に頼ることももちろんできます。これはつまり、アプリケーションがさまざまなデバイスの実際のピクセル密度の違いを補う必要がないということです。アプリケーションの UI を横および縦の利用可能な領域によってデザインすることができます。プラットフォームは利用可能な領域の量を新しい3つの特徴で表現します:smallestWidth, width, height


  • スクリーンの smallestWidth は "dp" 単位での基礎的な最小サイズです。スクリーンの高さおよび幅の短い方です。縦向きのスクリーンでは、smallestWidth は通常横幅に基づき、横向きでは縦幅に基づきます。全ての場合で、smallestWidth は固定の画面特性から導き出され、画面の向きによって値は変化しません。smallestWidth はアプリケーション UI が描画に必要とする最も短い幅(システムによって予約されている領域を含まない)を表すので、アプリケーションにとって重要です。

  • 対照的に、スクリーンの width と height は現在の横および縦のアプリケーションのレイアウトで利用可能な領域("dp"単位、システムによって予約されている領域を含まない)を表します。width と height はユーザーが画面の向きを縦向きや横向きに変更すると変わります。


新しいスクリーンサポート API は現在の画面の smallestWidth によってアプリケーションの UI を管理するようデザインされています。さらに必要に応じて、現在の横幅と縦幅によっても UI を管理することができます。これらの目的のため API は次のツールを提供します:

  • 最小 smallestWidth, width, height にレイアウトや他のリソースをターゲットするための新しい識別子

  • アプリの互換性を持つ範囲の最大スクリーンサイズを指定する新しいマニフェスト属性

加えて、アプリケーションはプラットフォームの以前のバージョンの起動時のリソース読み込みや UI の管理やシステムへの問い合わせもそのままできます。

新しい API では smallestWidth, width, height を使ってより直接的に画面サイズをターゲットできます。そのため、典型的なスクリーンタイプの異なる特徴を理解することは訳に立ちます。次の表でいくつかの例を "dp" 単位で載せました。

典型的なデバイスの解像度と画面サイズ

TypeDensity(generalized)Dimensions(dp)smallestWidth(dp)
Baseline phonemdpi320x480320
Small tablet/large phonemdpi480x800480
7-inch tabletmdpi600x1024600
10-inch tabletmdpi800x1280800


次のセクションでは新しいスクリーン識別子とマニフェスト属性のより詳しい情報を提供します。スクリーンサポート API の完全な情報については Supporting Multiple Screens を見てください。


New resource qualifiers for screens support

Android 3.2 の新しいリソース識別子によってさまざまなスクリーンサイズに対してレイアウトをよりうまくターゲットさせることができます。識別子を使って特定の最小 smallestWidth, 現在の横幅もしくは縦幅、に対してデザインされたリソース設定を作ることができます。

新しい識別子は:

  • swNNNdp — 最小の smallestWidth を指定する。 smallestWidth はリソースが使用されるべき "dp" 単位でのサイズ。上記で述べたように、スクリーンの smallestWidth は画面の向きによらず定数である。例えば: sw320dp, sw720dp, sw720dp

  • wNNNdp and hNNNdp — リソースが使用されるべき "dp" 単位での最小の横幅もしくは縦幅を指定する。上記で述べたように、スクリーンの横幅と縦幅は画面の向きに応じて変わる。例えば: w320dp, w720dp, h1024dp

複数にオーバーラップするリソース設定を作成することもできます。例えば、いくつかのリソースを画面が 480dp より広い場合にタグ付し、その他では 600dp より大きいもの、その他で 720dp より大きいもののようにできます。複数のリソース設定がスクリーン対して識別子と付けられている場合、システムは最も一致する設定を選択します。与えられたスクリーンに対してどのリソースが割り当てられるか正確にコントロールするために、リソースを1つの識別子、もしくは複数の識別子の組み合わせにタグ付することができます。

すでに表記した典型的なサイズに基づいた新しい識別子を使った例です:

# For phones
res/layout/main_activity.xml

# For 7” tablets
res/layout-sw600dp/main_activity.xml

# For 10” tablets
res/layout-sw720dp/main_activity.xml

# Multi-pane when enough width
res/layout-w600dp/main_activity.xml

# For large width
res/layout-sw600dp-w720dp/main_activity.xml


platform の古いバージョンでは新しい識別子は無視されます。そのため、すべてのデバイスに対応するために必要に応じてこれらをミックスすることができます。

# For phones
res/layout/main_activity.xml

# For pre-3.2 tablets
res/layout-xlarge/main_activity.xml

# For 3.2 and up tablets
res/layout-sw600dp/main_activity.xml

どのように新しい識別子を使うかの完全な情報は Using new size qualifiers を見てください。


New manifest attributes for screen-size compatibility

framework は新しい <supports-screens> マニフェスト属性のセットを提供します。これにより異なるスクリーンサイズに対するアプリのサポートを管理することができます。特に、動くようにデザインされた最大と最小のスクリーンサイズを指定することができ、また最大サイズはシステムの新しい screen compatibility mode が必要としないようデザインされたサイズです。上記で説明したリソース識別子のように、新しいマニフェスト属性はアプリケーションがサポートするスクリーンの範囲を指定します。

スクリーンサポートの新しいマニフェスト属性は:

  • android:compatibleWidthLimitDp="numDp" — 最大の largestWidth を指定します。largestWidth はアプリケーションが compatibility mode を必要としないで動作できるサイズです。現在のスクリーンが指定した値より大きい場合、システムはアプリケーションを通常のモードで表示します。しかし、ユーザーはオプションとしてシステムバーの設定から compatibility mode に切り替えることが可能です。

  • android:largestWidthLimitDp="numDp" — 最大の largestWidth を指定します。largestWidth はアプリケーションが動作するようデザインされたサイズです。現在のスクリーンが指定した値より大きい場合、現在のスクリーン上でベストな表示を行うために、システムは強制的にアプリケーションを compatibility mode で表示します。

  • android:smallestWidthLimitDp="numDp" — 最小の smallestWidth を指定します。smallestWidth はアプリケーションが動作するようデザインされたサイズです。現在のスクリーンが指定した値より小さい場合、システムはアプリケーションがこのデバイスと非互換だと考えますが、インストールして実行することを防いだりはしません。

注意: 現状では、Android Market は上記の属性に基づいてフィルターしません。フィルタリングのサポートは後の platform リリースで追加される予定です。スクリーンサイズに基づいたフィルタリングが必要なアプリケーションは既存の <supports-screens> 属性を使うことができます。

新しい属性をどのように使うかの完全な情報は Declaring screen size support を見てください。


Screen compatibility mode

Android 3.2 から新しいスクリーン互換性モードが提供されるようになりました。このモードは、走っているなかでできるだけ大きいスクリーンをサポートしないことを明示的に宣言します。この新しい "zoom" モードはピクセルスケールです。つまり、アプリケーションを小さい画面領域に描画して、それを現在の画面を覆うようにピクセルをスケールします。

デフォルトでは、システムはスクリーン互換性モードを必要としているアプリに対して、このモードをユーザーオプションとして提供します。ユーザーはシステムバーから利用可能なコントロールでズームモードのオンオフを切り替えることができます。

新しいスクリーン互換性モードは全てのアプリケーションに対して適切ではないため、プラットフォームはアプリケーションがマニフェストファイルを使ってそれを無効にすることを許可しています。アプリによって無効にされた場合、システムはアプリが走っている間ユーザーに対して "zoom" 互換性モードをオプションとして提供しません。

注意:どのように互換性モードをアプリケーションでコントロールするかの重要な情報については、Android Developer Blog の New Mode for Apps on Large Screens 記事を参照してください。


New screen density for 720p televisions and similar devices

720p のテレビや、それに似た解像度のデバイス上でアプリケーションを動かすために Android 3.2 から新しい一般的な解像度 tvdpi が追加されました。これはおよそ 213 dpi です。アプリケーションは新しい解像度を densityDpi で問い合わせることができ、また tvdpi 識別子をテレビや似たようなデバイス向けのタグとして使うことができます。
例えば

# Bitmap for tv density
res/drawable-tvdpi/my_icon.png

一般的には、アプリケーションはこの解像度で動くことはありません。720p のスクリーンに出力する必要がある場合、UI エレメントは platform によって自動的にスケールされます。


UI framework
  • Fragments

    • 新しい Fragment.SavedState クラスが saveFragmentInstanceState() を通して Fragment のインスタンスから取得した状態情報を保持します。
    • 新しいメソッド saveFragmentInstanceState() が与えられた Fragment の現在のインスタンス状態を保存します。状態は、現在の状態と一致する Fragment の新しいインスタンスが後で生成されたときに使うことができます。
    • 新しいメソッド setInitialSavedState() が最初に生成された Fragment に対して初期の保存状態をセットします。
    • 新しい onViewCreated() コールバックメソッド では、onCreateView() が返されたことを Fragment に知らせますが、以前の保存状態はその View に再保存されています。
    • isDetached() メソッドは Fragment が明示的に UI から切り離されているかどうかを決定します。
    • 新しい attach()detach() メソッドによってアプリケーションは UI に Fragment を再取り付け、取り離しすることができます。
    • 新しい setCustomAnimations() オーバーロードメソッドによって、指定したアニメーションリソースをエンター/イグジット操作およびバックスタックをポップするときの操作で走るよう指定できます。既存の実装はバックスタックをポップするときの Fragment のデフォルトの振る舞いには寄与しません。

  • Screen size information in ActivityInfo and ApplicationInfo

  • WindowManager から画面サイズを取得するためのヘルパー

    • 新しいメソッド getSize()getRectSize() によってアプリケーションは画面の生のサイズを取得できるようになりました。

  • 新しい公開 "holographic" スタイル

    • text, actionbar widgets, tabs などに対する多くの公開 "holographic" スタイル提供されるようになりました。完全なリストは R.style を見てください。

  • LocalActivityManager, ActivityGroup, LocalActivityManager が deprecated になりました。

    • 新しいアプリケーションはこれらのクラスの代わりに Fragment を使ってください。古いバージョンのプラットフォームでも動くようにするために、Android SDK で利用できる v4 Support Library (compatibility library) を使うことができます。v4 Support Library は Android 1.6 (API level 4) まで互換性のある Fragment API のバージョンを提供します。
    • Android 3.0 (API level 11) 以上に対して開発しているアプリでは、タブをアクションバー領域に置くための新しい ActionBar.newTab() や関連する API を使って、典型的にはタブをアクションバー内に表示させます。


Media framework
  • platform のメディアプロバイダー(MediaStore)を使うアプリケーションはデバイスによってサポートされている取り外しできる SD カードから直接メディアデータを読むことができるようになりました。また、MTP API を使って直接 SD カードのファイルとやりとりすることもできるようになりました。


Graphics


IME framework
  • 修飾キーの現在の状態を取得するための新しいメソッド getModifiers() が追加されました。


USB framework
  • デバイスの生の USB デスクリプタを取得するために新しく getRawDescriptors() メソッドが追加されました。ハイレベルの API 介したアクセスがサポートされていないデスクリプタにこのメソッドを使ってアクセスできます。


Network


Telephony
  • 新しい NETWORK_TYPE_HSPAP ネットワークタイプ定数が追加されました。


Core utilities
  • Parcelable utilities

  • Binder and IBinder

    • BinderIBinder の新しいメソッド dumpAsync() によって、アプリケーションは指定されたファイルへのダンプを非同期に実行することができます。
    • 新しい IBinder プロトコルトランザクションコード TWEET_TRANSACTION によってアプリケーションはターゲットオブジェクトにツイートを送ることができます。


New feature constants

Android マニフェストで宣言できるハードウェア機能の定数が追加されました。これを宣言することで Android Market のような外部のエンティティに、必要なハードウェア・ソフトウェアの機能を知らせることができます。これらと他の機能定数は <uses-feature> マニフェストエレメントに宣言します。

Android Market はこれら <uses-feature> 属性に基づいてアプリケーションをフィルターします。これにより、必要条件を満たしたデバイスでのみ利用可能にすることができます。

  • landspace (横向き), portrait (縦向き) が必要条件の場合の機能定数
    Android 3.2 でアプリケーションが横向き、縦向き、もしくは両方の画面向きを必要としているかを指定できる機能定数が増えました。これらの定数を宣言することは、アプリケーションが求める画面向きに対応しないデバイスにはインストールされないことを意味します。逆に、1つもしくは両方の定数が宣言されていないのであれば、宣言されていない向きに対する設定をアプリケーションが持っていないことを意味し、それらを提供しないデバイスにもインストールされます。

    横と縦両方の向きに対して適切に動く典型的なアプリケーションでは通常は画面向きの必要条件を宣言する必要はありません。テレビ向けにデザインされているような1つの向きにだけ主にデザインされているアプリケーションでは、その向きを提供していないデバイスで利用できないようにするために定数のいずれかを宣言することができます。
    もしアプリケーションが API Level 12 以下をターゲットとしている場合、プラットフォームは portrait, landscape いずれかを必要と指定していなければ、両方の向きが必要とされていると仮定します。

  • Other feature constants


API Differences Report

Android 3.2(API Level 13) の全ての API 変更の詳細については、API Differences Report を見てください。


---

API Level

Android 3.2 platform は framework API のアップデートバージョンとして提供されます。Android 3.2 API には整数値の識別子 - 13 - が割り当てられ、システム自身に保存されます。この識別子は "API Level" と呼ばれ、アプリケーションをインストールする前に、そのアプリケーションがシステムと互換性があるかどうかシステムが正しく決定するために利用されます。

Android 3.2 で紹介された API をあなたのアプリケーションで使用するには、Android 3.2 SDK platform で提供されている Android library に対してアプリケーションをコンパイルする必要があります。あなたの必要に応じて、アプリケーションのマニフェストの <uses-sdk> エレメントに android:minSdkVersion="13" 属性を追加する必要があるかもしれません。

API Level を利用するためのより詳しい情報は、API Levels ドキュメントを見てください。

0 件のコメント:

コメントを投稿