API レベル: 11
デベロッパーは、Android 3.0 プラットフォーム(HONEYCOMB
)を Android SDK のダウンロード可能なコンポーネントとして利用できます。ダウンロード可能なプラットフォームには、Android ライブラリとシステム イメージ、エミュレータ スキンのセットなどが含まれています。ダウンロード可能なプラットフォームには外部ライブラリは含まれていません。
開発者向けの Android 3.0 プラットフォームは、Android SDK のダウンロード可能なコンポーネントとして入手できます。このダウンロード可能なプラットフォームには Android ライブラリとシステム イメージ、エミュレータ スキンのセットと、 できます。Android 3.0 での開発またはテストを開始するには、Android SDK Manager を使用してプラットフォームを SDK にダウンロードします。
API の概要
以降のセクションでは、Android 3.0 でデベロッパー向けに追加された新機能や、フレームワーク API の変更など、Android 3.0 の新機能の技術的な概要について説明します。
フラグメント
新しいフレームワーク コンポーネントであるフラグメントを使用すると、
アクティビティを、独自の UI とライフサイクルを定義する自己完結型のモジュールにまとめます。フラグメントを作成するには、Fragment
クラスを拡張し、Activity
と同様にいくつかのライフサイクル コールバック メソッドを実装する必要があります。1 つのアクティビティで複数のフラグメントを組み合わせて、各ペインが独自のライフサイクルとユーザー入力を管理するマルチペイン UI を構築できます。
UI を提供せずにフラグメントを使用し、アクティビティのワーカーとしてフラグメントを使用する方法もあります。たとえば、アクティビティの実行中にのみ発生するダウンロードの進行状況を管理できます。
以下の点にもご注意ください。
- フラグメントは自己完結型で、複数のアクティビティで再利用できます。
- アクティビティ内のフラグメントを追加、削除、置換、アニメーション化できます。
- アクティビティが管理するバックスタックにフラグメントを追加すると、フラグメントの状態が変更されたときにその状態を保持し、ユーザーがさまざまな状態を元に戻すことができます。
- 具体的には、 代替レイアウトが用意されています。たとえば、 画面のサイズと向きに応じて
- フラグメントはコンテナ アクティビティに直接アクセスでき、アクティビティのアクション バーにアイテムを提供できます(次で説明します)。
アクティビティ内のフラグメントを管理するには、FragmentManager
を使用する必要があります。FragmentManager
には、アクティビティ内のフラグメントの検索、バックスタックからフラグメントをポップして前の状態を復元するなど、フラグメントを操作するための API がいくつか用意されています。
フラグメントの追加や削除などのトランザクションを実行するには、FragmentTransaction
を作成する必要があります。その後、add()
remove()
や replace()
などのメソッドを呼び出すことができます。すべてのキャンペーンを
トランザクションに対して実行する変更を定義するには、commit()
を呼び出す必要があります。これにより、フラグメント トランザクションがトランザクションに適用されます。
できます。
フラグメントの使用方法について詳しくは、フラグメントのドキュメントをご覧ください。複数 サンプルは、 API Demos アプリケーション。
アクションバー
アクションバーは、アクティビティ ウィンドウの上部にある従来のタイトルバーに代わるものです。 左上隅にアプリケーションのロゴが表示され、 オプション メニュー。また、アクションバーでは次のこともできます。
- メニュー アイテムをアクションバーに直接追加します(「アクション アイテム」として追加します)。
メニュー項目の XML 宣言に、値
"ifRoom"
のandroid:showAsAction
属性を含めます。十分なスペースがある場合、メニューは 直接アクションバーに表示されます。それ以外の場合、アイテムは アクションバーの右側にあるメニュー アイコンから表示されます。 - アクション アイテムをウィジェット(検索ボックスなど)に置き換える(検索ボックスなど)
[アクションビュー]を選択します
メニュー項目の XML 宣言で、レイアウト リソースを含む
android:actionViewLayout
属性またはウィジェットのクラス名を含むandroid:actionViewClass
属性を追加します。(商品が表示されるように、android:showAsAction
属性も宣言する必要があります) をクリックします)。アクションバーに十分なスペースがなく、アイテムがオーバーフロー メニューに表示される場合は、通常のメニュー項目と同じように動作し、ウィジェットは表示されません。 - アプリのロゴにアクションを追加し、カスタム ロゴに置き換えます
アプリケーションのロゴには
android.R.id.home
ID が自動的に割り当てられます。この ID は、タップされたときにアクティビティのonOptionsItemSelected()
コールバックに渡されます。コールバックでこの ID に応答するだけで、 メソッドを使用して、アプリケーションの「ホーム」に移動するなどのアクションを実行します。できます。アイコンをロゴに置き換えるには、マニフェスト ファイルで
android:logo
属性を使用してアプリケーションのロゴを指定し、アクティビティでsetDisplayUseLogoEnabled(true)
を呼び出します。 - パンくずリストを追加して、フラグメントのバックスタック内を遡る
- タブやプルダウン リストを追加してフラグメント間を移動できるようにする
- テーマと背景でアクションバーをカスタマイズする
アクションバーは、新しいホログラフィック テーマを使用するすべてのアプリケーションの標準です。
android:minSdkVersion
または android:targetSdkVersion
を "11"
に設定した場合も標準です。
アクションバーの詳細については、アクションバーのドキュメントをご覧ください。API デモ アプリケーションでも、いくつかのサンプルを利用できます。
システム クリップボード
アプリケーションは、システム全体のクリップボードとの間で(単なるテキスト以外の)データをコピーして貼り付けることができるようになりました。クリップされたデータは、プレーン テキスト、URI、インテントのいずれかです。
コンテンツ プロバイダを介して、ユーザーがコピーするデータへのシステム アクセスを許可すると、ユーザーは複雑なコンテンツ(画像やデータ構造など)をアプリからコピーし、そのタイプのコンテンツをサポートする別のアプリに貼り付けることができます。
クリップボードの使用を開始するには、グローバル ClipboardManager
オブジェクトを取得します。
getSystemService(CLIPBOARD_SERVICE)
を呼び出します。
アイテムをクリップボードにコピーするには、1 つ以上の ClipData.Item
を保持する新しい ClipData
オブジェクトを作成する必要があります。
各オブジェクトは 1 つのエンティティを表します。ClipData
オブジェクトを作成するには
ClipData.Item
を 1 つだけ含む場合は、次のヘルパー メソッドのいずれかを使用できます。
たとえば newPlainText()
、newUri()
、newIntent()
など、これらの関数はそれぞれ、ClipData
ClipData.Item
を指定します。
ClipData
をクリップボードに追加するには、ClipboardManager
のインスタンスの setPrimaryClip()
に渡します。
ClipboardManager
に対して getPrimaryClip()
を呼び出すと、クリップボードからファイルを読み取ることができます(貼り付けるため)。受け取った ClipData
を処理すると、
複雑で、クリップボード内のデータ型を実際に処理できることを確認する必要があります。
コピーしてください。
クリップボードには、一度にクリップされたデータ(ClipData
オブジェクト)を 1 つだけ保持できますが、1 つの ClipData
に複数の ClipData.Item
を含めることができます。
詳細については、コピーと貼り付けのドキュメントをご覧ください。API デモでコピー&ペーストの単純な実装を確認することもできます。 サンプルと、より完全な実装をメモ帳のサンプルで公開しています。
ドラッグ&ドロップ
新しい API は、アプリケーションのユーザー インターフェースでのドラッグ&ドロップ オペレーションを簡素化します。ドラッグ操作は、ClipData
オブジェクトで運ばれるなんらかのデータをある場所から別の場所に転送する操作です。ドラッグ オペレーションの開始点と終了点は View
であるため、ドラッグ&ドロップ オペレーションを直接処理する API は次のようになります。
View
クラス内。
ドラッグ&ドロップ オペレーションのライフサイクルは、複数のドラッグ アクションによって定義されます。
DragEvent
オブジェクトで定義(ACTION_DRAG_STARTED
、ACTION_DRAG_ENTERED
、
ACTION_DROP
。ドラッグ操作に参加する各ビューは、これらのアクションをリッスンできます。
アクティビティでコンテンツのドラッグを開始するには、View
で startDrag()
を呼び出し、ドラッグするデータを表す ClipData
オブジェクト、ドラッグ中にユーザーの指の下に表示される「シャドウ」を容易にするための View.DragShadowBuilder
、ドラッグ オブジェクトに関する情報をオブジェクトを受け取るビューと共有できる Object
を指定します。
View
でドラッグ オブジェクトを受け入れる(「ドロップ」を受け取る)には、ビューを登録します。
(setOnDragListener()
を呼び出して OnDragListener
を持つ)ビューでドラッグ イベントが発生すると、
システムが OnDragListener
に対して onDrag()
を呼び出し、DragEvent
を受け取ります。
発生したドラッグ アクションの種類(ACTION_DRAG_STARTED
、ACTION_DRAG_ENTERED
、
ACTION_DROP
)です。ドラッグ中、システムはドラッグの下にあるビューに対して onDrag()
を繰り返し呼び出し、
ドラァグ イベントのストリーム。受信側のビューは、DragEvent
で getAction()
を呼び出すことで、onDragEvent()
に配信されたイベントタイプを問い合わせることができます。
注: ドラッグ イベントには ClipData
オブジェクトが含まれることがありますが、これはシステム クリップボードとは関係ありません。ドラッグ&ドロップ
ドラッグしたデータをシステム クリップボードに配置すべきではありません。
詳しくは、ドラッグ&ドロップ ドロップのドキュメントをご覧ください。 API Demos アプリケーションと Honeycomb Gallery 説明します。
アプリ ウィジェット
Android 3.0 では、ユーザーのホーム画面でよりインタラクティブなアプリ ウィジェットを実現するための新しいウィジェット クラスがいくつかサポートされています(GridView
、ListView
、StackView
、ViewFlipper
、AdapterViewFlipper
など)。
さらに重要なのは、新しい RemoteViewsService
を使用して、コンテンツ プロバイダなどからのリモート データに基づく GridView
、ListView
、StackView
などのウィジェットを使用して、コレクションを含むアプリ ウィジェットを作成できることです。
AppWidgetProviderInfo
クラス(XML で <appwidget-provider>
要素を使用して定義)では、autoAdvanceViewId
と previewImage
という 2 つの新しいフィールドもサポートしています。autoAdvanceViewId
フィールドを使用すると、ビュー ID を指定できます。
アプリ ウィジェットのホストによって自動進行されるアプリ ウィジェットのサブビュー。「
previewImage
フィールドには、
アプリ ウィジェットはこのようにして、ウィジェット選択ツールからユーザーに表示されます。このフィールドが指定されていない場合、アプリ ウィジェットのアイコンがプレビューに使用されます。
アプリ ウィジェットのプレビュー画像(previewImage
フィールドで指定)を作成できるように、Android Emulator には以下が含まれています。
「ウィジェットプレビュー」というアプリを作成しますプレビュー画像を作成するには、このアプリを起動して
プレビュー画像の表示方法を設定したら、
アプリのドローアブル リソースに配置します。
新しいアプリ ウィジェットの機能の実装については、StackView アプリ ウィジェットと 天気リスト ウィジェットのアプリをご覧ください。
ステータスバーの通知
よりコンテンツリッチなステータスをサポートするように Notification
API が拡張されました
追加すると、新しい Notification.Builder
クラスにより、
Notification
オブジェクトを作成します。
新しい機能は次のとおりです。
setLargeIcon()
を使用した通知内の大きなアイコンのサポート。通常は ソーシャル アプリケーションで、イベントの発生元である人物の連絡先写真を表示 メディアアプリではアルバムのサムネイルが表示されます。setTicker()
を使用した、ステータスバー ティッカーでのカスタム レイアウトのサポート。- カスタム通知レイアウトをサポートして
PendingIntent
のボタンを追加し、よりインタラクティブな通知ウィジェットを実現。たとえば、 通知を使用して、アクティビティを開始せずに音楽の再生を制御できます。
コンテンツ ローダ
新しいフレームワーク API を使用すると、Loader
クラスを使用してデータを非同期で読み込むことができます。ビューやフラグメントなどの UI コンポーネントと組み合わせて使用することで、ワーカー スレッドからデータを動的に読み込むことができます。CursorLoader
サブクラスは、
ContentProvider
。
必要なのは、新しいローダがリクエストされたときやデータが変更されたときにコールバックを受け取る LoaderCallbacks
インターフェースを実装し、initLoader()
を呼び出してアクティビティまたはフラグメントのローダーを初期化するだけです。
詳細については、ローダのドキュメントをご覧ください。また、 LoaderCursor でローダーを使用するサンプルコード および<ph type="x-smartling-placeholder"></ph> LoaderThrottle サンプルをご覧ください。
Bluetooth A2DP とヘッドセットの API
Android には、接続されている Bluetooth A2DP の状態をアプリが検証するための API が追加されています。 ヘッドセット プロファイル デバイスを設定します。たとえば、Bluetooth ヘッドセットが接続され、 接続し、必要に応じてユーザーに通知します。アプリケーションはまた、 ベンダー固有の AT コマンドをブロードキャストし、接続状態をユーザーに通知します。 接続中のデバイスのバッテリー残量が少なくなった場合などです。
それぞれの BluetoothProfile
を初期化するには、A2DP
または HEADSET
を指定して getProfileProxy()
を呼び出します。
プロファイル定数と BluetoothProfile.ServiceListener
が格納され、
Bluetooth クライアントが接続または接続解除されたときに呼び出されるコールバック。
アニメーション フレームワーク
まったく新しい柔軟なアニメーション フレームワークで、任意のオブジェクトの任意のプロパティをアニメーション化 (ビュー、ドローアブル、フラグメント、オブジェクトなど)。次のようなアニメーションのさまざまな要素を定義できます。
- 所要時間
- 繰り返しの回数と動作
- 時間補間のタイプ
- Animator は、アニメーションを一緒に、連続して、または指定された遅延後に再生するように設定する
- フレーム更新の遅延
オブジェクトの int、float、16 進数で、アニメーションのアスペクトなどを定義できます。
色の値です。つまり、オブジェクトにこれらのタイプのいずれかのプロパティ フィールドがある場合、その値を時間の経過とともに変更してアニメーションに影響を与えることができます。その他の型の値をアニメーション化するには、
TypeEvaluator
インターフェースを実装して、特定の型の値を計算する方法。
プロパティの値をアニメーション化するために使用できるアニメーターは、ValueAnimator
と ObjectAnimator
の 2 つあります。ValueAnimator
はアニメーション値を計算しますが、その結果アニメーション化される特定のオブジェクトやプロパティを認識しません。計算を実行するだけです。
更新をリッスンし、独自のロジックでデータを処理します。ObjectAnimator
は ValueAnimator
のサブクラスであり、アニメーション化するオブジェクトとプロパティを設定できます。また、すべてのアニメーション処理を処理します。つまり、アニメーション化するオブジェクトを ObjectAnimator
に指定し、
時間の経過に伴って変化するオブジェクトのプロパティと、そのプロパティに適用する一連の値
アニメーションを開始します。
また、LayoutTransition
クラスは、自動移行を有効にします。
アニメーションを追加することです。画面の一部で遷移を有効にするには、
LayoutTransition
オブジェクトを作成して、
setLayoutTransition()
を呼び出すことで、任意の ViewGroup
を取得できます。これにより、デフォルト
グループへのアイテムの追加または削除の際に実行されるアニメーションです。カスタム アニメーションを指定するには、LayoutTransition
で setAnimator()
を呼び出し、上記の ValueAnimator
や ObjectAnimator
などのカスタム Animator
を指定します。
詳細については、プロパティ アニメーションのドキュメントをご覧ください。API デモ アプリで、アニメーション API を使用したいくつかのサンプルを確認することもできます。
拡張 UI フレームワーク
- ListView と GridView の複数選択選択
setChoiceMode()
の新しいCHOICE_MODE_MULTIPLE_MODAL
モードで複数のアイテムを選択可能にListView
またはGridView
から。使用する場所 複数のアイテムを選択してから目的のアクションを アクションバーのオプション リストからパフォーマンスを選択することも可能(多肢選択式に変わりました) アクション モード)。多肢選択式を有効にするには、
setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL)
を呼び出してMultiChoiceModeListener
をsetMultiChoiceModeListener()
に置き換えます。ユーザーがアイテムを長押しすると、アクションバーが複数選択型に切り替わります。 アクション モード。アイテムが選択されると、システムは
onItemCheckedStateChanged()
を呼び出してMultiChoiceModeListener
に通知します。複数選択の例については、API Demos サンプル アプリケーションの List15.java クラスをご覧ください。
- ビューを変換する新しい API
新しい API を使用すると、アクティビティ レイアウト内のビューに 2D 変換と 3D 変換を簡単に適用できます。新しい変換は、ビューを定義する一連のオブジェクト プロパティを使用して行います。 レイアウトの位置、向き、透明度などを指定できます。
ビューのプロパティを設定する新しいメソッドには、
setAlpha()
、setBottom()
、setLeft()
、setRight()
、setBottom()
、setPivotX()
、setPivotY()
、setRotationX()
、setRotationY()
、setScaleX()
、setScaleY()
、setAlpha()
などがあります。一部のメソッドには、レイアウトで指定できる、対応する XML 属性もあります。 デフォルトの変換を適用します。使用できる属性は、
translationX
、translationY
、rotation
、rotationX
、rotationY
、scaleX
、scaleY
、transformPivotX
、transformPivotY
、alpha
です。これらの新しいビュー プロパティの一部を、上記の新しいアニメーション フレームワークと組み合わせて使用すると、ビューに凝ったアニメーションを簡単に適用できます。たとえば、画面を回転させるには、 y 軸でビューを表示するには、
ObjectAnimator
にView
(「rotationY」)を指定します。プロパティ、start 値、end 値を次のように設定しています。Kotlin
ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply { duration = 2000 start() }
Java
ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360); animator.setDuration(2000); animator.start();
- 新しいホログラフィック テーマ
標準のシステム ウィジェットと全体的なデザインが一新され、 「ホログラフィック」ユーザー インターフェースのテーマです。システムは、標準のスタイルとテーマ システムを使用して新しいテーマを適用します。
android:minSdkVersion
のいずれかを設定して Android 3.0 プラットフォームをターゲットとするアプリandroid:targetSdkVersion
の値を"11"
に設定して、デフォルトでホログラフィック テーマを継承します。 ただし、アプリが独自のテーマも適用している場合、ホログラフィック テーマを継承するようにスタイルを更新しない限り、そのテーマがホログラフィック テーマをオーバーライドします。ホログラフィック テーマを個々のアクティビティに適用するか、独自のテーマ定義で継承するには、いくつかの新しい
Theme.Holo
テーマのいずれかを使用します。アプリが Android 3.0 より前のバージョンと互換性があり、 カスタムテーマを使用する場合は、プラットフォームに基づいてテーマを選択する必要があります。 version。 - 新しいウィジェット
AdapterViewAnimator
切り替え時にアニメーションを実行する
AdapterView
の基本クラス ビュー間の移動ですAdapterViewFlipper
次の要素がある複数のビューの間でアニメーション化するシンプルな
ViewAnimator
追加されたことを示します。一度に 1 つの子だけが表示されます。リクエストに応じて、各子要素を一定の間隔で自動的に切り替えることができます。CalendarView
日付をタップしてカレンダーから日付を選択し、スクロールまたはフリングで日付を選択 カレンダーで目的の日付に変更できます。ウィジェットで利用可能な期間を設定できます。
ListPopupWindow
ホストビューにアンカーし、選択肢のリスト(
EditText
ビューに入力する際の候補リストなど)を表示します。NumberPicker
ユーザーが事前定義された範囲から数値を選択できるようにします。ウィジェットは 数字を選択する上下のボタンを使用します。入力フィールドをタップすると 値をスクロールするか、もう一度タップして現在の値を直接編集します。また オンプレミスとクラウドの インデックスではなく対応する文字列が表示されるようにします。 なります。
PopupMenu
ビューに固定されたモーダル ポップアップ ウィンドウに
Menu
を表示します。ポップアップは、スペースがある場合はアンカービューの下に、スペースがない場合はアンカービューの上に表示されます。IME(ソフトキーボード)が表示されている場合、ユーザーがメニューをタップするまで、ポップアップは IME と重なりません。SearchView
指定したユーザーに検索クエリを配信するよう設定できる検索ボックスを提供します (従来の検索ダイアログと同じ方法で)検索候補を表示します。このウィジェットは、アクションバーに検索ウィジェットを表示する場合に特に便利です。詳しくは 検索インターフェースの作成をご覧ください。
StackView
子が 3D スタックで表示され、ユーザーがスワイプできるビュー 表示することもできます。
グラフィック
- ハードウェア アクセラレーション 2D グラフィック
マニフェスト要素の
<application>
要素または個々の<activity>
要素でandroid:hardwareAccelerated="true"
を設定することで、アプリの OpenGL レンダラを有効にできるようになりました。このフラグを使用すると、描画を高速化できるため、アプリに役立ちます。その結果 アニメーションが滑らかになり より滑らかなスクロール、ユーザー操作に対する全体的なパフォーマンスと応答性の向上につながります。
- ハードウェア レイヤとソフトウェア レイヤのサポートを表示する
デフォルトでは、
View
にはレイヤが指定されていません。ビューをハードウェア レイヤまたはソフトウェア レイヤのいずれかでバッキングするように指定するには、setLayerType()
またはlayerType
属性を使用して、値LAYER_TYPE_HARDWARE
またはLAYER_TYPE_SOFTWARE
を指定します。ハードウェア レイヤはハードウェア固有のテクスチャ(通常は OpenGL ハードウェアのフレームバッファ オブジェクトまたは FBO)を基盤とし、ビュー階層でハードウェア アクセラレーションがオンになっている場合にのみ、Android のハードウェア レンダリング パイプラインを使用してビューがレンダリングされます。ハードウェアが アクセラレーションがオフの場合、ハードウェア レイヤはソフトウェア レイヤとまったく同じように動作します。
ソフトウェア レイヤはビットマップを基盤としており、Android の ソフトウェア レンダリング パイプラインでのソフトウェア レンダリングの待機時間が長くなります。ソフトウェア レイヤは、 影響を受けるビューツリーが頻繁に更新される場合に、この問題を回避できます。更新されるたびに、 ソフトウェア レイヤにデプロイされるため、処理が遅くなる可能性があります。
詳細については、
LAYER_TYPE_HARDWARE
とLAYER_TYPE_SOFTWARE
のドキュメントをご覧ください。 - Renderscript 3D グラフィック エンジン
Renderscript は、3D シーンを構築するための API と、パフォーマンスを最大限に高めるためのプラットフォームに依存しない特別なシェーダー言語の両方を提供するランタイム 3D フレームワークです。Renderscript を使用すると、グラフィック処理とデータ処理を高速化できます。RenderScript は、 アプリ、壁紙、カルーセルなど向けの高性能 3D 効果です。
詳細については、Renderscript を使用した 3D レンダリングと計算のドキュメントをご覧ください。
メディア
- タイムラプス動画
カムコーダー API でタイムラプス動画の録画機能をサポートするようになりました。
setCaptureRate()
は、フレームをキャプチャするレートを設定します。 - 画像ストリームのテクスチャのサポート
新しい
SurfaceTexture
を使用すると、画像ストリームを OpenGL ES としてキャプチャできます。 テクスチャです。setPreviewTexture()
を呼び出して、Camera
インスタンスでは、イベントから動画再生またはプレビュー フレームを描画するSurfaceTexture
を指定できます。 カメラ。 - HTTP ライブ配信
アプリケーションは、M3U 再生リストの URL をメディア フレームワークに渡して HTTP ライブを開始できるようになりました。 ストリーミングセッションに 属しますメディア フレームワークは HTTP Live Streaming の仕様のほとんどに対応していますが、 適応ビットレートなども含まれます詳細については、サポートされているメディア形式のドキュメントをご覧ください。
- EXIF データ
ExifInterface
には、写真の絞り、ISO、露出時間の新しいフィールドが含まれています。 - ビデオカメラのプロファイル
新しい
hasProfile()
メソッドと複数の動画品質プロファイル(QUALITY_1080P
、QUALITY_720P
、QUALITY_CIF
など)を使用すると、カムコーダーの品質オプションを決定できます。 - デジタル メディア ファイル転送
このプラットフォームには、USB 経由のメディア/画像転送プロトコル(MTP/PTP)の組み込みサポートが含まれています。 これにより、ユーザーはあらゆる種類のメディア ファイルをデバイス間やホスト コンピュータに簡単に転送できます。 デベロッパーは、このサポートを基盤として、ユーザーがデバイス間で転送または共有するリッチ メディア ファイルを作成または管理できるアプリを作成できます。
- デジタル著作権管理(DRM)
デジタル著作権の確認と適用を行う、拡張可能な新しいデジタル著作権管理(DRM)フレームワーク。次の 2 つのアーキテクチャ レイヤで実装されています。
- DRM フレームワーク API。アプリに公開され、標準アプリ用の Dalvik VM を介して実行されます。
- フレームワーク API を実装し、DRM のインターフェースを公開するネイティブ コード DRM マネージャー プラグインを使用して、さまざまな DRM スキームの著作権管理と復号を処理できます。
アプリ デベロッパー向けに、保護されたコンテンツの管理を簡素化する抽象的な統合 API が用意されています。この API は DRM オペレーションの複雑さを隠蔽し、 多様な DRM にわたり、保護されたコンテンツと保護されていないコンテンツの両方に対して一貫した運用モードを使用できます。 説明します。
デバイス メーカー、コンテンツ所有者、インターネット デジタル メディア プロバイダにとって、DRM フレームワークのプラグイン API は、任意の DRM スキームのサポートを Android システムに追加し、コンテンツ保護を安全に適用するための手段を提供します。
プレビュー リリースには、デジタル著作権の確認と適用を行うネイティブ DRM プラグインは含まれていません。ただし、デバイス メーカーはデバイスに DRM プラグインを同梱している場合があります。
すべての DRM API は
android.drm
パッケージにあります。
キーボードのサポート
- Control、Meta、Caps Lock、Num Lock、 Scroll Lock の修飾子をサポートします。詳しくは
META_CTRL_ON
と関連フィールドをご覧ください。 - デスクトップ スタイルの完全なキーボードに対応しており、Esc、Home、End、
削除など
getKeyboardType()
をクエリしてKeyCharacterMap.FULL
を確認することで、キーイベントがフルキーボードから送信されているかどうかを判断できます。 TextView
で、キーボードベースのカット、コピー、貼り付け、全選択(Ctrl+X、Ctrl+C、Ctrl+V、Ctrl+A のキーの組み合わせ)がサポートされるようになりました。PageUp/PageDown、Home/End、 キーボードでのテキスト選択に対応しましたKeyEvent
に、キー修飾子の状態を正確かつ一貫して確認しやすくするための新しいメソッドがいくつか追加されました。hasModifiers(int)
をご覧ください。hasNoModifiers()
,metaStateHasModifiers()
,metaStateHasNoModifiers()
。- アプリでカスタム キーボード ショートカットを実装するには、
Activity
、Dialog
、またはView
をサブクラス化して実装します。onKeyShortcut()
。フレームワークはこのメソッドを呼び出します。 常に自動スクロールで表示されますオプション メニューの作成時にキーボードを登録できる 各<item>
にandroid:alphabeticShortcut
属性またはandroid:numericShortcut
属性を設定してショートカットを使用する 要素を追加します(またはsetShortcut()
を使用します)。 - Android 3.0 には、ID が
KeyCharacterMap.VIRTUAL_KEYBOARD
の新しい「仮想キーボード」デバイスが含まれています。仮想デスクトップ キーボードにはデスクトップ スタイルの US キーマップがあり、テスト用のキーイベントを合成するのに便利です 表示されます。
タッチイベントを分割する
これまでは、一度に 1 つのビューのみがタッチイベントを受け入れることができました。Android 3.0 タッチイベントを複数のビューやウィンドウで分割するためのサポートが追加され、異なるビューで受け入れられるようになった 同時に発生します。
アプリケーションが Android 3.0 をターゲットとしている場合、分割タッチイベントはデフォルトで有効になっています。つまり、アプリが android:minSdkVersion
属性または android:targetSdkVersion
属性の値を "11"
に設定している場合です。
ただし、次のプロパティを使用すると、内部のビュー間でタッチイベントの分割を無効にできます。 または複数のウィンドウ間で 表示できます
- ビューグループの
android:splitMotionEvents
属性を使用すると、レイアウト内の子ビュー間で発生する分割タッチイベントを無効にできます。次に例を示します。<LinearLayout android:splitMotionEvents="false" ... > ... </LinearLayout>
これにより、リニア レイアウトの子ビューはタップイベントを分割できず、一度にタップイベントを受信できるのは 1 つのビューのみになります。
android:windowEnableSplitTouch
スタイル プロパティ アクティビティのテーマに適用することで、ウィンドウ間でのタッチイベントの分割を無効にできます アプリケーション全体を サポートします次に例を示します。<style name="NoSplitMotionEvents" parent="android:Theme.Holo"> <item name="android:windowEnableSplitTouch">false</item> ... </style>
このテーマが
<activity>
または<application>
に適用されている場合、現在のアクティビティ ウィンドウ内のタップイベントのみが受け入れられます。たとえば、CPU 使用率、メモリ使用率、 複数のウィンドウでのタッチイベントがあるため、システムバーが複数のウィンドウで同時に できます。これは、アクティビティ内のビューがタップイベントを分割できるかどうかには影響しません。デフォルトでは、アクティビティはビュー間でタップイベントを分割できます。テーマの作成について詳しくは、スタイルとテーマの適用をご覧ください。
Webkit
- 新しい
WebViewFragment
クラスにより、WebView
。 - 新しい
WebSettings
メソッド:setDisplayZoomControls()
を使用すると、非表示にできます ユーザーが指の操作でズームできる状態で画面上のズーム コントロールを使用できる(setBuiltInZoomControls()
を設定する必要がありますtrue
)。- 新しい
WebSettings
メソッドであるsetEnableSmoothTransition()
を使用すると、 を使用すると、パンやズームを滑らかに遷移させることができます。有効にすると、WebView でソリューションが選択される (たとえば、リクエスト中に WebView のコンテンツが更新されない、 あります。
- 新しい
WebView
メソッド:onPause()
コールバック: WebView が非表示になったときに、WebView に関連する処理を一時停止します。これは、WebView がフォアグラウンドにない場合に不要な CPU やネットワーク トラフィックを減らすのに役立ちます。- 処理を再開するための
onResume()
コールバック WebView が関連付けられていますが、onPause()
で一時停止されました。 saveWebArchive()
を使用すると、 現在のビューをデバイス上のウェブ アーカイブとして表示できます。showFindDialog()
がテキスト検索を開始します。 現在のビューに表示されます。
ブラウザ
ブラウザ アプリケーションには、ウェブ アプリケーションをサポートするために次の機能が追加されています。
- メディア キャプチャ
HTML Media Capture 仕様で定義されているように、ブラウザでは、ウェブ アプリケーションがデバイスのオーディオ、画像、動画のキャプチャ機能にアクセスできます。たとえば、次の HTML は、ユーザーがアップロードする写真をキャプチャするための入力を提供します。
<input type="file" accept="image/*;capture=camera" />
または、
capture=camera
パラメータを除外することで、ユーザーは 新しい画像をカメラで撮影するか、デバイス(ギャラリー アプリなど)から画像を選択します。 - デバイスの向き
Device Orientation Event(デバイスの向きのイベント)で定義 仕様により、ウェブ アプリケーションで DOM イベントをリッスンして、 デバイスの物理的な向きと動きに関する情報。
デバイスの向きは x 軸、y 軸、z 軸で角度で表され、動きは 加速度と回転速度のデータで表現されます。ウェブページは、イベントタイプ
"deviceorientation"
でwindow.addEventListener
を呼び出して向きイベントを登録し、イベントタイプ"devicemotion"
を登録してモーション イベントを登録できます。 - CSS 3D 変換
CSS 3D Transform で定義された Module を使用した場合、ブラウザでは CSS によってレンダリングされた要素を 3 つの要素で変換できます。 定義できます。
JSON ユーティリティ
新しいクラス JsonReader
と JsonWriter
は、JSON ストリームの読み取りと書き込みに役立ちます。新しい API は、org.json
クラスを補完するものです。
メモリ内のドキュメントです
JsonReader
のインスタンスを作成するには、コンストラクタ メソッドを呼び出して、JSON 文字列をフィードする InputStreamReader
を渡します。次に、beginObject()
を呼び出してオブジェクトの読み取りを開始し、nextName()
でキー名を読み取り、タイプに応じたメソッド(nextString()
や nextInt()
など)を使用して値を読み取ります。hasNext()
が true である限り、この処理を続けます。
JsonWriter
のインスタンスを作成するには、そのコンストラクタを呼び出して、
適切な OutputStreamWriter
を渡します。次に、name()
を使用してプロパティ名を追加し、適切な value()
メソッドを使用してそれぞれの値を追加することで、JSON データをリーダーと同様に書き込みます。
これらのクラスはデフォルトで厳格です。setLenient()
各クラスのメソッドは、受け入れる内容に自由度が高いように設定します。この寛大な解析モードは、org.json
のデフォルト パーサーとも互換性があります。
新しい特徴定数
<uses-feature>
manfest 要素は、外部エンティティ(Google Play など)に
アプリが依存するハードウェアおよびソフトウェア機能。このリリースでは、アプリがこの要素で宣言できる次の新しい定数が Android に追加されます。
"android.hardware.faketouch"
この宣言が宣言されている場合、これは、 エミュレートされたタッチスクリーン(以上)が必要です。エミュレートされたタッチスクリーンを備えたデバイスは、タッチスクリーン機能のサブセットをエミュレートできるユーザー入力システムを提供します。そのような入力システムの例として、マウスやリモコンで クリックします。このような入力システムは、クリックダウン、クリックアップ、ドラッグなどの基本的なタッチイベントをサポートしています。ただし、より複雑な入力タイプ(ジェスチャー、フリングなど)は、より難しくなることがあります。 疑似タップ デバイスでは不可能です(マルチタッチ ジェスチャーは明らかに不可能です)。
アプリで複雑なジェスチャーを必要とせず、 エミュレートされたタッチスクリーンを備えたデバイスからアプリケーションを除外したい場合は、
<uses-feature>
で"android.hardware.faketouch"
を宣言する 要素です。これにより、エミュレートされたタッチスクリーン入力のみを提供するデバイスなど、さまざまな種類のデバイスでアプリを使用できるようになります。タッチスクリーンを搭載したすべてのデバイスは、
"android.hardware.faketouch"
もサポートしています。その理由は次のとおりです。 タッチスクリーン機能は、疑似タップ機能のスーパーセットです。したがって、タッチスクリーンが実際に必要な場合を除き、フェイクタッチ用の<uses-feature>
要素を追加する必要があります。
新しい権限
"android.permission.BIND_REMOTEVIEWS"
これは、
<service>
マニフェストで必要な権限として宣言する必要があります。RemoteViewsService
を実装するための要素です。たとえばRemoteViewsService
を使用して マニフェスト エントリは次のようになります。<service android:name=".widget.WidgetService" android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS" />
新しいプラットフォーム テクノロジー
- ストレージ
<ph type="x-smartling-placeholder">
- </ph>
- オンボード eMMC ストレージを有効にする ext4 ファイル システムのサポート。
- MTP デバイスをサポートする FUSE ファイル システム。
- キーボードと USB ハブをサポートする USB ホストモードのサポート。
- MTP / PTP のサポート
- Linux カーネル
- 2.6.36 にアップグレード
- Dalvik VM
<ph type="x-smartling-placeholder">
- </ph>
- SMP をサポートして最適化するための新しいコード
- JIT インフラストラクチャのさまざまな改善
- ガベージ コレクタの改善:
<ph type="x-smartling-placeholder">
- </ph>
- SMP 用にチューニング済み
- より大きなヒープサイズのサポート
- ビットマップとバイトバッファの統合処理
- Dalvik コア ライブラリ
- NIO(最新の I/O ライブラリ)の新しい高速実装
- 例外メッセージの改善
- 全体的な正確性とパフォーマンスの修正
API の差分レポート
Android 3.0(API レベル)におけるすべての API の変更点について詳しくは、 11)については、API Differences Report をご覧ください。
API レベル
Android 3.0 プラットフォームでは、 使用できます。Android 3.0 API には、システム自体に保存される整数識別子(11)が割り当てられます。「API レベル」と呼ばれるこの識別子によって、 アプリが Google Cloud とどのように互換性があるかを インストール前に確認する必要があります。
Android 3.0 で導入された API をアプリで使用するには、Android 3.0 SDK プラットフォームで提供されている Android ライブラリに対してアプリをコンパイルする必要があります。必要に応じて、
android:minSdkVersion="11"
も追加する必要があります
アプリケーションの <uses-sdk>
要素に
使用します。アプリが Android 2.3 以降でのみ動作するように設計されている場合は、
この属性を宣言すると、アプリがそれより前には
サポートしています。
詳細については、API レベルとはをご覧ください。