2011年5月17日火曜日

Android 3.1 Platform

API Level: 12

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

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

Android 3.1 のより高レベルの紹介は Platform Highlights を見てください。


Reminder: あなたがすでに Android アプリを公開しているなら、できるだけ早く、あなたのアプリを Android 3.0, Android 3.1 向けにテストおよび最適化を行なってください。最新の Android-powered デバイスで、あなたのアプリのベストな体験を受けられるようにするべきです。そのために何をするか・できるかの情報は Optimizing Apps for Android 3.0 を読んでください。

---

API Overview


以下のセクションは Android 3.1 で開発者が新しくできるようになったもののテクニカルオーバービューです。新しい機能や、前回のバージョンからの framework API の変更点が含まれています。



USB APIs


Android 3.1 はプラットフォームで動作するアプリケーションと接続された周辺機器間の統合を目的としたパワフルな新しい API を紹介します。この API はプラットフォーム内に組み込まれた USB (Universal Serial Bus) のスタックとサービスに基づいており、USB host とデバイスとのやりとり両方のサポートが含まれています。この API を使うことで、開発者は USB を介して様々なタイプのデバイスを見つけ、やりとりし、管理するアプリケーションを作ることができます。

スタックと API は、プラットフォーム自身がホストとして振舞うか、はたまた外部のハードウェアが振舞うかに基づいた、USB ハードウェアの2つの基礎タイプを区別します。

  • USB デバイスはホストとして機能する Android-powered デバイスに依存した接続先のハードウェアの一部です。例えば、ほとんどの入力デバイス、マウス、ジョイスティックは USB デバイスです。同様にカメラやハブなどもあります。

  • USB accessory はホストコントローラをもち、電力を供給し、USB を介して Android-powered デバイスとやりとりするようデザインされた接続先のハードウェアの一部です。ロボットコントローラから音楽機器、エクササイズバイクなどまで、多くの周辺機器が accessory として接続できます。


USB デバイスと USB accessory 両方のタイプに対してプラットフォームの USB API は取り付け時と取り外し時の broadcast intent による検出をサポートします。また、標準のインタフェース、エンドポイント、転送モード (コントロール、バルク、割り込み)も同様にサポートします。

USB API は android.hardware.usb パッケージにあります。中心クラスは UsbManager で、USB デバイスと USB accessory 両方に対する識別とやりとりのヘルパーメソッドを提供します。
アプリケーションは UsbManager のインスタンスを取得して、取り付けられているデバイスもしくは accessory の一覧を得るためのクエリを投げるたり、やりとりしたり、管理したりすることができます。また UsbManager には、USB デバイスや accessory の取り付け時・取り外し時にシステムが broadcast する intent action が定義されています。

他の含まれているクラスとして:

  • UsbDevice は USB デバイスとして接続されている外部のハードウェアを表す(Android-powered デバイスがホストとして振舞う)

  • UsbAccessory は接続された USB ホストである外部のハードウェアを表す(Android-powered デバイスが USB デバイスとして振舞う)

  • UsbInterfaceUsbEndpoint は標準の USB インタフェースへのアクセスとデバイスへのエンドポイントを提供する

  • UsbDeviceConnectionUsbRequest は同期または非同期に USB デバイスへデータを送ったり、受け取ったり、メッセージをコントロールしたりする

  • UsbConstants はエンドポイントタイプやデバイスのクラスなどを宣言するための定数を提供する


USB スタックはプラットフォーム内に組み込まれていますが、実際に特定のデバイスで USB host と open accessory mode をサポートするかどうかはそのデバイスのメーカーが決定します。特に、host mode は Android-powered デバイスの適切な USB コントローラーハードウェアに依存します。

加えて、開発者は適切な USB サポートが提供されていないデバイスのユーザーにアプリケーションを利用できないように、Android Market でフィルタリングを依頼することができます。フィルタリングをリクエストするには、必要に応じて次のエレメントのいずれかもしくは両方をアプリケーションのマニフェストに追加します。

  • アプリケーションが USB host mode (USB デバイスと接続)をサポートしているデバイスにのみ見えるようにするには、次のエレメントを宣言する

    <uses-feature android:name="android.hardware.usb.host" android:required="true">

  • アプリケーションが USB accessory(USB host と接続)をサポートしているデバイスにのみ見えるようにするには、次のエレメントを宣言する

    <uses-feature android:name="android.hardware.usb.accessory" android:required="true">


USB accessory とやり取りするアプリケーションを開発するための全ての情報はdeveloper documentation を参照してください。

USB host API を使ったサンプルアプリケーションを参照するには、ADB TestMissile Launcher を見てください。



MTP/PTP API


Android 3.1 は新しい MTP API を公開しました。これにより、アプリケーションは接続されたカメラや他の PTP デバイスと直接やりとりすることができます。新しい API によって、アプリケーションはデバイスの取り付け・取り外しの通知を簡単に受けられるようになり、それらのデバイス上でのファイルやストレージの管理や、ファイルやメタデータの転送も簡単にできるようになりました。MTP API は MTP (Media Transfer Protocol) 仕様の PTP (Picture Transfer Protocol) サブセットを実装しています。

MTP API は android.mtp パッケージで使用できます。ここでは以下のクラスが提供されています。

  • MtpDevice は USB host bus を介して接続された MTP デバイスをカプセル化したものです。アプリケーションはこのタイプのオプジェクトをインスタンス化し、そのメソッドを使ってデバイスの情報や保存されているオブジェクトを取得することができます。同様に接続をオープンしてデータを転送することもできます。
    例えば、含まれているメソッドとして、

    • getObjectHandles() はデバイス上の指定された format と parent に一致する全てのオブジェクトに対するハンドルのリストを返す。オブジェクトの情報を取得するには、getObjectInfo() をハンドルへ渡す。

    • importFile() でオブジェクト用のデータを外部ストレージ内のファイルにコピーすることができる。この呼び出しはデータのサイズとデバイスのスピードに応じて任意の時間ブロックする可能性があるため、別のスレッド行うべきである。

    • open() で 接続された MTP/PTP デバイスを開くことができる。

    • getThumbnail() はバイト配列としてオブジェクトのサムネイルを返す

  • MtpStorageInfo は MTP 仕様の section 5.2.2 で記述されている StorageInfo Dataset に対応する MTP デバイスのストレージユニット情報を保持する。このクラスのメソッドをつかってストレージユニットを記述する文字列、フリースペース、最大ストレージ容量、ストレージID、ヴォリューム識別子を取得できる。

  • MtpDeviceInfo は MTP 仕様の section 5.1.1 で記述されている DeviceInfo Dataset に対応する MTP デバイスの情報を保持する。このクラスのメソッドを使ってデバイスのメーカー、モデル、シリアルナンバー、バージョンを取得できる。

  • MtpObjectInfo は MTP 仕様の section 5.3.1 で記述されている ObjectInfo Dataset に対応する MTP デバイスに保存されているオブジェクトの情報を保持する。このクラスのメソッドを使ってオブジェクトのサイズ、データフォーマット、アソシエーションタイプ、作成日、サムネイル情報を取得できる。

  • MtpConstants は MTP ファイルフォーマットコード、アソシエーションタイプ、プロテクションステータスを宣言するための定数を提供する




Support for new input devices and motion events


Android 3.1 は全てのビューとウィンドウにわたって新しい入力デバイスと新しいモーションイベントタイプをサポートすることで、入力のサブシステムを拡張します。開発者はユーザーがキーボードやタッチスクリーンに加えて、マウス、トラックボール、ジョイスティック、ゲームパッド、その他のデバイスを使ってプリケーションを操作できるように、これらの機能を構築することができます。

マウス、スクロールホイール、トラックボールによる入力をハンドリングするために、プラットフォームは2つの新しいモーションイベントアクションをサポートします:

  • ACTION_SCROLL, マウスのスクロールホイールなどによるノンタッチスクロールモーションのときのポインターの位置を表す。MotionEvent で、AXIS_HSCROLLAXIS_VSCROLL 軸の値が相対的なスクロール運動を指定する。

  • ACTION_HOVER_MOVE, ボタンが押されていないときに、マウスの現在の位置を報告する。また、最後の HOVER_MOVE イベントからの任意の中間点も報告する。マウスを動かして入った時と出た時の通知はまだサポートされていません。


ジョイスティックとゲームパッドをサポートするために、InputDevice クラスは新しく次のデバイスソースを含むようになりました:


これらの新しいソースからのモーションイベントを示すために、KeyEvent においてキーコードが定義されているように、プラットフォームは MotionEvent において軸コードを新しく定義します。ジョイスティックとゲームコントローラ用の新しい軸には AXIS_HAT_X, AXIS_HAT_Y, AXIS_RTRIGGER, AXIS_ORIENTATION, AXIS_THROTTLE, 他多くが含まれます。すでに存在している MotionEvent の軸は AXIS_X, AXIS_Y, AXIS_PRESSURE, AXIS_SIZE, AXIS_TOUCH_MAJOR, AXIS_TOUCH_MINOR, AXIS_TOOL_MAJOR, AXIS_TOOL_MINOR, AXIS_ORIENTATION として表されます。

加えて、MotionEvent には、フレームワークが特定の軸をどのようにマップするか知らない場合に使用する汎用的な軸コードも定義します。特定のデバイスはカスタムモーションデータをアプリケーションに渡すために汎用的な軸コードを使うことができます。軸の全リストとそれらの意図するものの解釈は MotionEvent クラスのドキュメントを見てください。

プラットフォームはバッチ処理でアプリケーションにモーションイベントを提供します。そのため、1つのイベントは現在の位置といわゆる運動の履歴を含みます。アプリケーションは getHistorySize() を使って履歴サンプルの数を取得し、それから順番に getHistoricalAxisValue() を使って全ての履歴サンプルの取得と処理を行うべきです。そのあと、アプリケーションは getAxisValue() を使って現在のサンプルを処理します。

いくつかの軸は特別なアクセサメソッドを使って取得することができます。例えば、getAxisValue() を呼ぶ代わりに、getX() を呼ぶことができます。ビルトインのアクセサが含む軸は、AXIS_X, AXIS_Y, AXIS_PRESSURE, AXIS_SIZE, AXIS_TOUCH_MAJOR, AXIS_TOUCH_MINOR, AXIS_TOOL_MAJOR, AXIS_TOOL_MINOR, AXIS_ORIENTATION です。

各入力デバイスはユニークな、システムが割り当てた ID を持ち、複数のソースを提供することがあります。デバイスが複数のソースを提供する場合、1つ以上のソースが同じ軸を使って軸データを提供できます。例えば、タッチイベントはスクリーンの位置データとしてX軸を使うソースからきますが、ジョイスティックイベントは代わりにジョイスティックの位置データとしてX軸を使ったソースからきます。つまり、どのソースによって発生したかによって軸の値を解釈することが重要です。モーションイベントを処理するとき、アプリケーションは InputDevice クラスのメソッドを使ってデバイスやソースがサポートする軸を決めるべきです。特にアプリケーションはデバイスの全ての軸や、デバイスの特定のソースの全ての軸をクエリするために getMotionRanges() を使うことができます。両方のケースで、軸の範囲情報は 各軸値のソースを指定する < InputDevice.MotionRange オブジェクトで返されます。

最後に、ジョイスティック、ゲームパッド、マウス、トラックボールからのモーションイベントはタッチイベントではありません。プラットフォームには、これらを "汎用的な" モーションイベントとして View に渡すための新しいコールバックメソッドが追加されています。具体的には、onTouchEvent() ではなく、onGenericMotionEvent() を呼ぶことで View にノンタッチモーションイベントを通知します。

プラットフォームはイベントソースクラスに依存して異なる汎用的モーションイベントを送ります。SOURCE_CLASS_POINTER イベントは、どのようにタッチイベントが動くかと似て、ポインターの下の View に行きます。その他の全ては、現在フォーカスされている View に行きます。例えば、ジョイスティックのイベントを受け取るためには、View はフォーカスされていなければならないという意味です。代わりに、必要であればアプリケーションはこれらのイベントを onGenericMotionEvent() を実装することで Activity や Dialog のレベルで処理することができます。

ジョイスティックモーションイベントを使ったアプリケーションのサンプルは GameControllerInputGameView です。



RTP API


Android 3.1 にはビルトイン RTP(Real-time Transport Protocol) の API があります。アプリケーションはオンデマントやインタラクティブのデータストリーミングを管理するために使うことができます。特に VOP, push-to-talk, 電話会議(conferencing), 音声ストリーミングを提供するアプリは、利用可能な任意ネットワークを介して、セッションの初期化とデータストリームの転送・受信を行うのに、このAPIを使うことができます。

RTP API は android.net.rtp パッケージで利用可能です。
含まれるクラスとして:

  • RtpStream, RTP を介してメディアペイロードのネットワークパケットを送信・受信するストリームのベースクラス

  • AudioStream, RTP を介してオーディオペイロードを運ぶ RtpStream のサブクラス

  • AudioGroup, デバイススピーカー、マイク、AudioStream を管理・ミキシングするためのローカルオーディオハブ

  • AudioCodec, AudioStream 用に定義したコーデックのコレクションを保持する


音声会議とそれに似た使い方をサポートする為に、アプリケーションはストリームのエンドポイントして2つのクラスをインスタンス化します。

  • AudioStream はリモードエンドポイント、ネットワークマッピングの構成、AudioCodec の設定を指定する

  • AudioGroup は1つ以上の AudioStream のローカルエンドポイントを表す。AudioGroup は全ての AudioStream をミックスし、オプションとして、同時にデバイススピーカーとマイクをやりとりします。


もっともシンプルな使い方は、1つのリモートエンドポイントと1つのロカールエンドポイントから構成されます。
より複雑な使い方は、AudioGroup に記述されている limitation を参照してください。

RTP API を使うには、アプリケーションはユーザーにパーミッションをリクエストしなければなりません。そのためには、マニフェストファイルに <uses-permission android:name="android.permission.INTERNET"> を宣言してください。
デバイスのマイクを取得するなら、<uses-permission android:name="android.permission.RECORD_AUDIO"> パーミッションも必要です。



Resizable app widgets


Android 3.1 から、開発者は自分のホームスクリーンウィジェットを縦方向、横方向、両方の軸でサイズ変更可能にすることができるようになりました。ユーザーはウィジェットをタッチ-ホールドすることでリサイズハンドルを表示します。そして、縦と/もしくは横にハンドルをドラッグしてレイアウトグリッド上のサイズを変更します。

開発者はウィジェットの AppWidgetProviderInfo メタデータ内に resizeMode 属性を定義することで全てのホームスクリーンウィジェットをサイズ変更可能にできます。resizeMode 属性用の値は "horizontal", "vertical", "none" です。ウィジェットを縦横両方でサイズ変更可能にするには "horizontal|vertical" のように書きます。

例)


<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="86400000"
android:previewImage="@drawable/preview"
android:initialLayout="@layout/example_appwidget"
android:configure="com.example.android.ExampleAppWidgetConfigure"
android:resizeMode="horizontal|vertical" >
</appwidget-provider>


ホームスクリーンウィジェットのより詳しい情報は、App Widgets のドキュメントを見てください。



Animation framework


  • New ViewPropertyAnimator class

    • 新しい ViewPropertyAnimator クラスは View オブジェクトの選択されたプロパティでアニメートする便利な方法を提供します。このクラスはプロパティのアニメーションを自動的に最適化し、View オブジェクト上の複数の同時アニメーションの管理を簡単にします。
      ViewPropertyAnimator を使い方は簡単です。View のプロパティをアニメートするには、animate() を呼び出してその View 用の ViewPropertyAnimator オブジェクトを生成します。ViewPropertyAnimator 上のメソッドを使って、どのプロパティをどのようにアニメートさせるのかを指定します。例えば、View を透明にフェイドするには alpha(0); を呼び出します。ViewPropertyAnimator オブジェクトは基礎となる Animator クラスの詳細な設定を処理し、それを開始し、そしてアニメーションをレンダリングします。


  • Animation background color

    • 新しい getBackgroundColor()setBackgroundColor(int) メソッドによって、ウィンドウアニメーションに対してのみ、アニメーションの背景色を取得/設定することができます。現在は、任意のアルファレベルで、黒である必要があります。

  • Getting animated fraction from ViewAnimator

    • 新しい getAnimatedFraction() メソッドによって現在のアニメーションフラクション(最新のフレームアップデートでは elapsed/interpolated フラクションが使われている)を ValueAnimator から得ることができます。





UI framework


  • Forced rendering of a layer

    • 新しい buildLayer() メソッドによってアプリケーションは生成される View のレイヤーを強制することができ、View は直ちにそこにレンダリングされます。例えば、アプリケーションはこのメソッドを使って、アニメーションがスタートする前に、そのレイヤーに View をレンダリングすることができます。View が複雑な場合、アニメーションが開始される前にそのレイヤーにレンダリングしておくことで、フレームがスキップされるのを防ぐことができます。


  • Camera distance

    • アプリケーションは新しいメソッド setCameraDistnace(float) を使ってカメラと View の距離を設定できるようになりました。これにより、アプリケーションは回転などの View の3D変換上のコントロールを改善することができます。


  • Getting a calnendar view from a DatePicker


  • Getting callbacks when views are detached


  • Fragment breadcrumb listener, new onInflate() signature


  • Display search result int new tab

    • ACTION_WEB_SEARCH intent 用の EXTRA_NEW_SEARCH データキーによって、現在のタブではなく新しいブラウザータブで検索結果を開くことができます。


  • Drawable text cursor

    • 新しいリソース属性の textCursorDrawable を使ってテキストカーソルに使われる画像を指定できるようになりました。


  • Setting displayed child in remote views


  • Generic keys for gamepads and other input devices

    • KeyEvent にゲームパッドボタンに対応する汎用的なキーコード範囲が追加されました。このクラスには、さらに isGamepadButton(int) などキーコード用のいつくかのヘルパーメソッドが追加されました。





Graphics


  • Helper for managing bitmaps

    • setHasAlpha(boolean) を使って、アプリケーションは Bitmap 内の全てのピクセルが不透明(false)かいつくかのピクセルが不透明ではないアルファ値(true)を含むかどうかを示すことができます。いくつかの設定(RGB_565など)では、per-pixel アルファ値がサポートされていないため、この呼び出しが無視されることに気をつけてください。このメソッドは描画のヒントを与えることを意味しています。いくつかのケースでは、不透明だと分かっているビットマップの描画は、不透明ではない per-pixel アルファ値が含まれている可能性があるときの描画よりも速くなることが知られています。

    • getByteCount() でバイト単位での Bitmap のサイズを取得する

    • getGenerationId() を使ってキャッシュ用などに Bitmap が変更されたかどうかを見つけることができます。

    • sameAs(android.graphics.Bitmap) は、与えられた Bitmap が現在の Bitmap と寸法、設定、もしくはピクセルデータで異なるかどうかを決定する。

  • Setting camera location and rotation

    • 3D変換用に camera の位置をコントロールするための rotate()setLocation() という新しいメソッドが Camera に追加されました。





Network


  • High-performance Wi-Fi lock

    • High-performance Wi-Fi lock によって、デバイスのスクリーンがオフの状態であっても、アプリケーションはハイパフォーマンス Wi-Fi 接続を制御することができます。長期間、音楽、ビデオ、音声をストリームするアプリケーションは high-performance Wi-Fi lock によって画面オフの状態でもストリーミングパフォーマンスを確実に保つことができます。この状態はより電力を使うため、アプリケーションは長時間アクティブな接続が必要なとき high-performance Wi-Fi を得るようにすべきです。

  • More traffic stats

    • アプリケーションは TrafficStats 内の新しいメソッドを使うことで、より多くのタイプのネットワーク使用の統計情報にアクセスできるようになりました。アプリケーションはメソッドを使って、UDP状態, パケットカウント, TCP 転送/受信 ペイロードバイト、特定の UID のセグメント を取得することができます。

  • SIP auth username

    • アプリケーションは新しいメソッドの getAuthUserName()setAuthUserName() を使ってプロファイル用の SIP auth username を取得できるようになりました。





Download Manager


  • Handling of completed downloads

    • 完了したときだけユーザーに通知するようにダウンロードを初期化することができます。このタイプのダウンロードを初期化するには、VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION をリクエストオブジェクトの setNotificationVisibility() メソッドに渡します。

    • 新しいメソッド addCompletedDownload() によってアプリケーションはファイルをダウンロードデータベースに追加することができます。これにより、Download アプリケーションによってそのファイルを管理できるようになります。

  • Show downloads sorted by size





IME framework


  • Getting and input method's extra value key

    • subtype に対する ExtraValue 文字列が保存されているかどうかをチェックする containsExtraValueKey() メソッドと、ExtraValue ハッシュマップから特定のキー値をとりだす getExtraValueOf() メソッドが InputMethodSubtype に追加されました。





Media


  • New streaming audio formats

    • ストリーミングオーディオを改善するために、メディアフレームワークに raw ADTS AAC コンテンツのビルドインサポートが追加されました。同様に、高品質(lossless)圧縮オーディオコンテンツ用に FLAC audio のサポートも追加されました。より詳しい情報は Supported Media Formats を見てください。





Launch controls on stopped applications


Android 3.1 から、システムのパッケージマネジャーは stopped 状態のアプリケーションをトラックし続けるようになりました。そして、バックグラウンドプロセスや他のアプリケーションからの起動を制御する手段を提供します。

アプリケーションの stopped 状態は Activity の stopped 状態とは異なることに気をつけてください。システムはこれら2つの状態を別々に管理します。

プラットフォームは2つの新しい intent flag を定義します。これにより stopped アプリケーション内のコンポーネントをアクティブすることを、そのインテントが許可すべきかどうかを送信側が指定することができます。

  • FLAG_INCLUDE_STOPPED_PACKAGES - intent を解決する可能性のあるターゲットのリストに stopped アプリケーションの intent filter を含める

  • FLAG_EXCLUDE_STOPPED_PACKAGES - ターゲットのリストに stopped アプリケーションの intent filter を含めない


これらのフラグの両方がインテントに定義されている場合、デフォルトの振る舞いは、可能性のあるターゲットのリストに stopped アプリケーションのフィルターを含みます。

システムはずべての broadcast intent に FLAG_EXCLUDE_STOPPED_PACKAGES を追加することに注意してください。これは不注意によるバックグラウンドサービスからの broadcast や、不必要な stopped アプリケーションのコンポーネント起動を防ぎます。バックグラウンドサービスやアプリケーションは、 stopped アプリケーションをアクティブにするべき broadcast intent にFLAG_INCLUDE_STOPPED_PACKAGE フラグを加えることで、この振る舞いをオーバーライドすることができます。

アプリケーションは最初にインストールされて、また起動されたいない状態とき、stopped 状態になります。また、アプリケーション管理でユーザーが手動でストップしたときも stopped 状態になります。



Notification of application first launch and upgragde


次の2つの intent action を通してアプリケーションの最初の起動とアップグレードの改善された通知がプラットフォームに追加されました。

  • ACTION_PACKAGE_FIRST_LAUNCH - アプリケーションが最初に起動したとき(つまり、stopped state から最初に外れたとき)にアプリケーションのインストーラパッケージに送る。データにはパッケージ名が含まれる。

  • ACTION_MY_PACKAGE_REPLACED - アップデートされた(規存のバージョンを新しいバージョンで上書きインストールされた)アプリケーションを通知する。これは置き換えられたアプリケーションにのみ贈られる。付加的なデータは含まれない。これを受け取るには、この intent action を intent filter に宣言する。アップグレード後に適切な起動状態にアプリケーションを戻すためのトリガーコードとして使うことができる。
    このインテントは、アップグレードされたアプいrケーションが started 状態のときのみアプリケーションに直接送られる。(stopped 状態では送られない)




Core utilities


  • LRU cache

    • 新しい LruChacke クラスによってアプリケーションは効果的なキャッシュによる利益を受けられます。キャッシュされたデータのための賢いメモリフットプリントを維持することで、アプリケーションは計算やネットワークからのデータのダウンロードに費やす時間を減らすことができます。LruCache は限られた数の値への強力なリファレンスを保持するキャッシュです。値がアクセスされるたびに、キューの先頭に移動します。値がフルキャッシュに追加されたとき、そのキューの最後の値は立ち退かされ、ガーベージコレクションの対象になります。

  • File descriptor as int





WebKit


  • File scheme cookies

    • CookieManagerfile: URI scheme を使うクッキーをサポートするようになりました。WebView CookieManager をインスタンス化する前に、setAcceptFileSchemeCookies() を使って file scheme cookies のサポートを有効/無効にすることができます。CookieManager インスタンスでは、allowFileSchemeCookies() を呼ぶことで file scheme cookies が有効になっているかどうかをチェックできます。

  • Notification of login request

    • Android 3.0 で紹介されたブラウザオートログイン機能をサポートするために、新しい onReceivedLoginRequest() メソッドはユーザーのオートログインリクエストが処理されたことをホストアプリケーションに通知します。

  • Removed classes and interfaces

    • 以前から deprecated 状態になっていたいくつかのクラスとインタフェースは公開 API から削除されました。より詳しい情報は API Differences Report を見てください。





Browser


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

  • HTML5 <video> タグに埋込まれたビデオのインラインプレイバックがサポートされました。可能であればプレイバックはハードウェアアクセラレイトされます。

  • 全てのサイト(モバイルとデスクトップ)に対して固定位置エレメントのレイヤーがサポートされました。




New feature constants


開発者がアプリケーションマニフェストで宣言できるハードウェアの機能定数が追加されました。Android Market のような外部のエンティティに、アプリケーションがこのプラットフォームのバージョンで新しくサポートされたハードウェアの機能が必要であることを知らせることができます。開発者はこれらおよび他の機能定数を <uses-feature> マニフェストエレメントに宣言します。

  • android.hardware.usb.accessory - アプリケーションは USB API を使ってUSB を介して接続されたホストとして機能する外部のハードウェアデバイスとやりとりすることができます。

  • android.hardware.usb.host - アプリケーションは USB API を使って USB を介して接続されたデバイスとして機能する外部のハードウェアデバイスとやりとりすることができます。


Android Market は <uses-feature> マニフェストエレメントに宣言された機能に基づいてアプリケーションをフィルターします。アプリケーションマニフェストに機能を宣言するためのより詳しい情報は Android Market Filters を読んでください。


 

0 件のコメント:

コメントを投稿