2011年2月23日水曜日

Android 3.0 Platform - 3 -

長いので分割します。
ここには、以下が含まれます。

 ・Graphics
 ・Media
 ・Keyboard support
 ・Split touch events
 ・WebKit
 ・Browser
 ・JSON utilities

Android 3.0 Platform - 1 -
Android 3.0 Platform - 2 -
Android 3.0 Platform - 3 -

---------------------------

Graphics

■ Hardware accelerated 2D graphics :
 2D グラフィックスのハードウェアアクセラレーション

マニフェストの <application> エレメント、もしくは個々の <activity> エレメントで android:hardwareAccelerated="true" を設定することで アプリケーションの OpneGL renderer を有効にできるようになった。

このフラグはより速く描画を行うことによって、アプリケーションを支援します。この結果はよりスムーズなアニメーション、スムーズなスクロール、全体のパフォーマンスの改善とユーザーインタラクションへのレスポンスの改善として現れます。


■ ハードウェアとソフトウェアレイアーに対する View サポート
 View support for hardware and software layers

デフォルトでは、View は特定のレイヤーを持っていません。setLayerType() もしくは layerType 属性を使って、 LAYER_TYPE_HARDWARELAYER_TYPE_SOFTWARE 値によって指定されるハードウェアまたはソフトウェアレイヤーに View をバックアップするよう指定できるようになりました。

ハードウェアレイヤーはハードウェア固有のテクスチャ(一般的には OpenGL ハードウェア上での Frame Buffer Object か FBO)でバックアップされ、Android のハードウェアレンダリングパイプラインを使ってレンダリングされる View を引き起こすが、ハードウェアアクセラレーションは View の階層に対してのみオンになる。ハードウェアアクセラレーションがオフになっている場合、ハードウェアレイヤーは完全にソフトウェアレイヤーとして振舞う。

ソフトウェアレイヤーはビットマップによってバックアップされ、ハードウェアアクセラレーションが有効になっていても、Android のソフトウェアレンダリングパイプラインを使ってレンダリングされる View を引き起こす。View 階層の頻繁なアップデートの影響をうける場合、ソフトウェアレイヤーは避けるべきである。毎回のアップデートはソフトウェアレイヤーの再レンダリングを要求するので、潜在的に遅くなる可能性がある。

より詳しい情報は、LAYER_TYPE_HARDWARELAYER_TYPE_SOFTWARE ドキュメントを見てください。

■ レンダースクリプト 3D グラフィックスエンジン :
 Renderscript 3D graphics engine

レンダースクリプトは 3D シーンを構築する API と、最高のパフォーマンスを得るためのプラットフォームに依存しないシェーダー言語の両方を提供する ランタイム 3D フレームワークです。レンダースクリプトを使用することで、グラフィック操作とデータ解析をアクセラレートできます。レンダースクリプトはアプリケーション、壁紙、カルーセルなどにハイパフォーマンスの 3D エフェクトを作成する理想的な方法です。

より詳しい情報は 3D Rendering and Computation with Renderscript ドキュメントを見てください。

---------------------------

Media

■ Time lapse video

Camcorder API が time lapse video の録画をサポートするようになりました。 setCaptureRate() でどのフレームをキャプチャーするか設定できます。

■ Texture support for image streams

新しい SurfaceTexture によって OpenGL ES テクスチャとしてイメージストリームをキャプチャーできるようになりました。Camera インスタンスに対して setPreviewTexture() を呼ぶことで、どの SurfaceTexture にカメラからのビデオプレイバックやプレビューフレームを描画するか指定できます。

■ HTTP Live streaming

アプリケーションは HTTP ライブストリーミングセッションを開始するために、メディアフレームワークに M3U プレイリストを投げることができるようになりました。メディアフレームワークはほとんどの HTTP ライブストリーミングの仕様(ビットレートの適用を含む)をサポートします。より詳しい情報は、Supported Media Formats ドキュメントを見てください。

■ EXIF data

ExifInterface は絞り(photo aperture), ISO, 露光時間(exposure time) 用の新しいフィールドを持つようになりました。

■ Camcorder profiles

新しい hasProfile() メソッドといくつかのビデオ画質プロファイル(QUALITY_1080P, QUALITY_720P, QUALITY_CIF, など) によって、camcorder の画質オプション決定できるようになりました。

■ Digital media file transfer

新しいプラットフォームでは USB を介した Media/Picture Transfer Protocol (MTP/PTP) をビルドインでサポートします。これにより、ユーザーは簡単にいろんなタイプのメディアファイルをデバイスとホストコンピュータ間で転送できるようになります。開発者は、ユーザーがデバイス間で転送したりシェアしたりしたくなる、リッチなメディアファイルを作成・管理するアプリケーションをこのサポートの上に作成することができます。

■ Digital rights management (DRM)

デジタル著作権をチェックし管理する、新しい拡張可能な digital rights management (DRM) フレームワークです。これは 2 つのアーキテクチャ層に実装されています。

  ・DRM フレームワーク API。これは、アプリケーションに公開されていて、標準のアプリケーションとして Dalvik VM を通して動く。

  ・DRM マネジャーのネイティブコード。これはフレームワーク API を実装し、著作権の管理と、いくつかの DRM スキームの複合をハンドルする DRM プラグインのインタフェースを公開する。

アプリケーション開発者に対して、保護されたコンテンツの管理を簡単にするための統一された抽象 API を公開します。APIは DRM 操作の複雑さを隠蔽し、保護されている・保護されていないコンテンツ両方に対して、またいくつかの DRM スキームに渡って、同じ操作モードを許可します。

デバイスメーカー、コンテンツオーナー、インターネットデジタルメディアプロバイダーにたいして、 DRM フレームワークプラグイン API はコンテンツ保護の安全な実施のために、Androidシステムに最適のDRMスキーマのサポートが追加されることを意味します。

プレビューリリースではデジタル著作権をチェックし管理するためのネイティブの DRM プラグインは提供されていません。しかし、デバイスメーカーは彼らのデバイスに DRM プラグインを付加して出荷できます。

全ての DRM API は android.drm パッケージで見ることができます。

---------------------------

Keyboard support

■ Control, Meta, Caps Lock, Num Lock, Scroll Lock のサポート。より詳しい情報は META_CTRL_ON と関連するフィールドをみてください。

■ フルデスクトップスタイルのキーボードのサポート。Escape, Home, End, Delete, その他のキーのサポートを含む。キーイベントがフルキーボードのものかどうかは、getKeyboardType() で判別でき、どのキーが押されたかは KeyCharacterMap.FULL を使ってチェックできる。

■ TextView が Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+A のキーの組み合わせによるキーボードベースの cut, copy, paste, select-all をサポートするようになりました。さらに PageUp/PageDown, Home/End, キーボードベースのテキスト選択もサポートするようになりました。

■ キー修飾子の状態を正しく一貫して簡単にチェックするための、いくつかの新しいメソッドが KeyEvent に追加されました。hasModifiers(int), hasNoModifiers(), metaStateHasModifiers(), metaStateHasNoModifiers() を見てください。

■ アプリケーションは Activity, Dialog, もしくは View をサブクラス化し、onKeyShortcut() を実装することでカスタムキーボードショートカットを実装することができます。フレームワークは Ctrl キーと組み合わせてあるキーが押されたときにこのメソッドを呼びます。Option Menu の生成時に、android:alphabeticShortcut もしくは android:numericShortcut 属性を各 <item> エレメントに設定する (もしくは setShortcut() を呼ぶ)ことで、キーボードショートカットを登録することができます。

■ Android 3.0 には id が KeyCharacterMap.VIRTUAL_KEYBOARD である、新しい "virtual keyboard" デバイスが含まれています。virtual keyboard はデスクトップスタイルの US キー配置で、入力をテストするためのキーイベントを合成するために有用です。

---------------------------

Split touch events

以前は、1度に 1つのビューのみがタッチイベントを受けることができました。Android 3.0 では複数の View や Window でタッチイベントを分割するためのサポートが追加されました。つまり、異なる View で同時にタッチイベントを受けることができるということです。

タッチイベントの分割は Android 3.0 をターゲットとしたアプリケーション (つまり、android:minSdkVersion もしくは android:targetSdkVersion 属性の値が "11" のアプケーション) では、デフォルトで有効になっています。

しかし、以下のプロパティを設定することで、特定の View Group 内やウィンドウ内でタッチイベントの分割を無効にすることができます。

■ View Group に対して android:splitMotionEvents 属性を指定することで、その子 View の間でのタッチイベントの分割を無効にできます。
例えば :

<LinearLayout android:splitMotionEvents="false" ... >
...
</LinearLayout>

この場合、linear layout の子 View はタッチイベントを分割できません。つまり、1度に1つの View だけたタッチイベントを受信できます。

■ android:windowEnableSplitTouch スタイルプロパティを指定することで、ウィンドウをまたいだタッチイベントの分割を無効にすることができます。これは、Activity もしくはアプリケーション全体のテーマに適用します。
例えば :

<style name="NoSplitMotionEvents" parent="android:Theme.Holo">
<item name="android:windowEnableSplitTouch">false</item>
...
</style>

このテーマが <activity> もしくは <application> に適用された場合、タッチイベントは現在の Activity ウィンドウ内でのみ受信できます。例えば、ウィンドウをまたいだタッチイベントを無効にすると、システムバーは Activity と同時にタッチイベントを受信することができなくなります。これは Activity 内の View がタッチイベントを分割できるかどうには影響しません。デフォルトでは Activity は View をまたいだタッチイベントを分割することができます。
テーマを作成のより詳しい情報は Applying Styles and Themes を読んでください。

---------------------------

WebKit

WebView のフラグメント構成を作成するための新しい WebViewFragment クラス

■ 新http://www.blogger.com/img/blank.gifしい WebSettings メソッド:

  ・setDisplayZoomControls() によって、ユーザーがフィンガージェスチャーでズームしている間、画面上のズームコントロールを隠すことができる(setBuiltInZoomControls() は true に設定されていなければならない)。

  ・新しい WebSettings メソッド の setEnableSmoothTransition() は、画面の拡大・縮小時のスムーズな遷移を有効にする。有効にした場合、WebView パフォーマンスを最大にする解決方法を選択する (例えば、WebView は遷移の間アップデートされなくなる)。

■ 新しい WebView メソッド:

  ・onPause() コールバックは、WebView が隠れるときに関連する処理を一時停止する。これは WebView が前面にない場合に必要のない CPU やネットワークトラフィックを削減するのに有用である。

  ・onResume() コールバックは、onPause() で一時停止された WebView に関連する処理を再開する。

  ・saveWebArchive() によって現在の View を web archive としてデバイス上に保存できる。

  ・showFindDialog() 現在の View のテキスト検索を開始する。


---------------------------

Browser

ウェブアプリケーションをサポートするために、ブラウザアプリケーションは次の機能を追加します。


■ Media capture

HTML Media Capture 仕様で定義されているように、ブラウザはウェブアプリケーションにデバイスのオーディオ、画像、ビデオキャプチャー機能へのアクセスを許可します。例えば、以下の HTML はユーザーがアップロードする画像を選択するための入力を提供します。


<input type="file" accept="image/*;capture=camera" />


もしくは capture=camera パラメータを除くことで、ユーザーはカメラで新しい画像を撮影するか、デバイスから(ギャラリーアプリケーションなどから)選択するか選ぶことができます。

■ Device Orientation

Device Orientation Event 仕様で定義されているように、ブラウザはデバイスの物理的な向きや動きの情報を提供する DOM イベントをウェブアプリケーションが受信することを許可します。

デバイスの向きは x, y, z 軸で表現され、角度と動きは加速度と回転速度のデータとして表現されます。ウェブページは "deviceorientation" イベントタイプで window.addEventListener を呼ぶことで向きの変更イベントのリスナーを登録できます。また、"devicemotion" イベントタイプでモーションイベントのリスナーを登録できます。

■ CSS 3D Transforms


CSS 3D Transform Module
仕様で定義されているように、ブラウザは 3次元で変形させるための CSS によってエレメントをレンダリングすることを許可します。

---------------------------

JSON utilities

新しいクラス JsonReaderJsonWriter は JSON ストリームの読み書きを助けるクラスです。この新しい API はメモリ内のドキュメントを操作する org.json クラスを補完します。

コンストラクタメソッドを呼んで JsonReader のインスタンスを生成し、JSON 文字列のInputStreamReader を渡します。beginObject() を呼ぶことでオブジェクトを読み始めます。次のキーネームを読むには nextName() を、値を読むにはタイプに対応したメソッド、例えば nextString() や nextInt() などを呼びます。hasNext() が true の間これを続けます。

コンストラクタメソッドを呼んで JsonWriter のインスタンスを生成し、適切な OutputStreamWriter を渡します。そして、reader と似たようなマナーで JSON データを書いていきます。name() でプロパティ名を追加し、適切な value() メソッドで対応する値を追加します。

これらのクラスはデフォルトで厳格です。各クラスの setLenient() メソッドはこれらをより寛容になるように設定することができます。この lenient parse mode は org.json のデフォルトパーサーと互換性があります。

0 件のコメント:

コメントを投稿