Android 2.0、リリース 1

API レベル: 5

Android 2.0 は、2009 年 11 月から Android 搭載ハンドセットにデプロイ可能なメジャー プラットフォームのリリースです。このリリースには、ユーザーとデベロッパー向けの新機能のほか、Android フレームワーク API の変更が含まれています。

デベロッパーの方は、Android SDK のダウンロード可能なコンポーネントとして Android 2.0 プラットフォームをご利用いただけます。ダウンロード可能なプラットフォームには、要件を満たした Android ライブラリとシステム イメージのほか、エミュレータ スキンやサンプルアプリなどが含まれています。ダウンロード可能なプラットフォームは完全に準拠しており、外部ライブラリは含まれていません。

Android 2.0 プラットフォームの開発やテストを開始するには、Android SDK と AVD Manager ツールを使用してプラットフォームを SDK にダウンロードします。

プラットフォームの特長

新しいユーザー機能とプラットフォームのハイライトについては、Android 2.0 プラットフォームのハイライトのドキュメントをご覧ください。

組み込みアプリケーション

ダウンロード可能なプラットフォームに含まれるシステム イメージには、次の組み込みアプリケーションが用意されています。

  • アラーム
  • ブラウザ
  • 電卓
  • ビデオ録画
  • カメラ
  • 連絡先
  • Custom Locale(デベロッパー アプリ)
  • Dev Tools(デベロッパー アプリ)
  • 電話アプリ
  • メール
  • ギャラリー
  • ジェスチャー ビルダー
  • 日本語テキスト入力用の IME
  • メッセージ
  • 音楽
  • 設定
  • Spare Parts(デベロッパー アプリ)

言語

ダウンロード可能なプラットフォームに含まれるシステム イメージには、さまざまなロケールが組み込まれています。ロケールによっては、地域固有の文字列を使用できる場合があります。また、デフォルトの言語バージョンが使用される場合もあります。Android 2.0 システム イメージで使用できる言語は以下のとおりです(language_country/region ロケール記述子を含む)。

  • 中国語(中華人民共和国)(zh_CN)
  • 中国語、台湾(zh_TW)
  • チェコ語(cs_CZ)
  • オランダ語、オランダ(nl_NL)
  • オランダ語、ベルギー(nl_BE)
  • 英語、米国(en_US)
  • 英語、英国(en_GB)
  • 英語、カナダ(en_CA)
  • 英語、オーストラリア(en_AU)
  • 英語、ニュージーランド(en_NZ)
  • 英語、シンガポール(en_SG)
  • フランス語、フランス(fr_FR)
  • フランス語、ベルギー(fr_BE)
  • フランス語、カナダ(fr_CA)
  • フランス語、スイス(fr_CH)
  • ドイツ語、ドイツ(de_DE)
  • ドイツ語、オーストリア(de_AT)
  • ドイツ語、スイス(de_CH)
  • ドイツ語、リヒテンシュタイン(de_LI)
  • イタリア語、イタリア(it_IT)
  • イタリア語、スイス(it_CH)
  • 日本語(ja_JP)
  • 韓国語(ko_KR)
  • ポーランド語(pl_PL)
  • ロシア語(ru_RU)
  • スペイン語(es_ES)
  • ローカライズされた UI 文字列は、設定からアクセスできるロケールと一致します。

    エミュレータ スキン

    ダウンロード可能なプラットフォームには、さまざまな画面サイズと解像度でアプリをモデル化するために使用できるエミュレータ スキンのセットが含まれています。エミュレータ スキンは次のとおりです。

    • QVGA(240x320、低密度、小画面)
    • WQVGA(240x400、低密度、標準画面)
    • FWQVGA(240x432、低密度、標準画面)
    • HVGA(320x480、中密度、標準画面)
    • WVGA800(480x800、高密度、標準画面)
    • WVGA854(480x854 高密度、標準画面)

    すべての Android 搭載デバイスで適切に表示され、機能するアプリを開発する方法については、複数画面のサポートをご覧ください。

    デベロッパー向け機能

    以下のセクションでは、ダウンロード可能な Android 2.0 プラットフォーム コンポーネントで提供される新しいデベロッパー向け機能について説明します。

    Ant サポート

    • デバッグモードとリリースモードのアプリ署名。リリースモード署名には、zipalign 最適化のサポートが統合されています。詳しくは、アプリに署名するをご覧ください。
    • Emma インストルメンテーション プロジェクト(コード カバレッジ)をサポートする新しい Ant ビルドシステムを追加しました。

    フレームワーク API

    以下のセクションでは、Android 2.0 プラットフォームが提供するアプリケーション フレームワーク API について説明します。

    API レベル

    Android 2.0 プラットフォームでは、最新バージョンのフレームワーク API が提供されています。以前のバージョンと同様に、Android 2.0 API には整数識別子(5)が割り当てられ、システム自体に格納されています。「API レベル」と呼ばれるこの識別子により、アプリをインストールする前に、アプリがシステムに対応しているかどうかを正しく判断できます。

    Android 2.0 で導入された API をアプリで使用するには、アプリのマニフェストで <uses-sdk> 要素の属性に、適切な値「5」を設定する必要があります。

    API レベルの使用方法について詳しくは、API レベルのドキュメントをご覧ください。

    API の変更の概要

    Bluetooth

    • Bluetooth をオンまたはオフにする
    • デバイスとサービスの検出
    • RFCOMM を使用してリモート デバイスに接続し、データを送受信する
    • RFCOMM サービスをアドバタイズし、受信 RFCOMM 接続をリッスンする

    同期アダプター

    • 同期アダプターが任意のバックエンドに接続するための新しい API

    アカウント マネージャー

    • 認証トークンやパスワードを安全に保管し、アクセスするための一元的なアカウント マネージャー API

    連絡先

    • 複数のアカウントからのデータを取得できる新しい連絡先 API
    • 新しいクイック コンタクト フレームワーク API を使用すると、アプリで連絡先バッジを作成できます。バッジをクリックするとウィンドウが開き、ワンクリックでその人に連絡を取る方法のリストが表示されます。

    WebView

    • サポートが終了したクラス: UrlInterceptHandler、Plugin、PluginData、PluginList、UrlInterceptRegistry

    カメラ

    • 色効果、撮影モード、フラッシュ モード、フォーカス モード、ホワイト バランス、回転などの設定に関する新しいパラメータが追加されました。
    • ズームレベルが変更されたときにアクションを実行する、新しい ZoomCallback インターフェース。

    Media

    • MediaScanner は、MediaStore に挿入されたすべての画像のサムネイルを生成するようになりました。
    • 画像や動画のサムネイルをオンデマンドで取得するための新しい Thumbnail API を導入しました。

    その他のフレームワーク

    • android.R.style の新しいシステムテーマ。現在のシステムの壁紙の上にアクティビティを簡単に表示したり、以前のアクティビティをバックグラウンドで表示したりできます。
    • 新しい WallpaperManager API は、これまで Context にあった壁紙 API を置き換えて拡張し、アプリがシステムの壁紙をリクエストして設定できるようにします。
    • 新しい Service API により、アプリケーションが Service のライフサイクルを正しく処理できるようになります。特にメモリ不足の状況では、実行中に Service が強制終了されるおそれがあります。
      • Service.setForeground() が非推奨になり、実質的に何もオペレーションを実行しないようになりました。これは、新しい API、startForeground() に置き換えられました。この API は、進行中の通知をフォアグラウンド状態に関連付けるのに役立ちます(そして、これを必要とします)。
    • MotionEvent は、対応するデバイスの同時タッチ情報をレポートできるようになりました。最大 3 つのポインタを同時に追跡できます。
    • KeyEvent には、アクション時の操作と長押しの動作の実装に役立つ、新しいキー ディスパッチ API と、キーの押下をキャンセルする新しいメカニズム(仮想キー用)が用意されています。
    • WindowManager.LayoutParams に新しい定数が追加されました。これにより、ウィンドウが表示されるときに画面を復帰させ、画面がロックされている場合でもウィンドウを表示できます。これにより、デバイスのスリープ状態から復帰させる目覚まし時計などをより明確に実装できるようになります。
    • デバイスの装着状態をブロードキャストし、デバイスがデスクトップ ホルダーまたはカーホルダーに装着されたときにアプリから特別なアクティビティを起動できるようにする新しいインテント API。

    キーアップ時に実行されるキーイベント

    Android 2.0 は、ホーム、メニュー、戻る、検索に物理キーではなく仮想キーを使用するデバイスで動作するように設計されています。これらのデバイスで最適なユーザー エクスペリエンスを実現するため、Android プラットフォームでは、キーダウンではなくキーアップ/キーアップのペアに対して、キーアップ時にこれらのボタンを実行するようになりました。これにより、誤ったボタンイベントの発生を防ぎ、ユーザーはイベントを生成せずにボタン領域を押した後、ボタン領域からドラッグできるようになります。

    この動作の変更は、アプリがボタンイベントをインターセプトし、キーアップ時ではなくキーダウン時にアクションを実行する場合にのみ、アプリケーションに影響を及ぼすはずです。特に、アプリケーションが BACK キーをインターセプトしている場合は、アプリケーションがキーイベントを適切に処理していることを確認する必要があります。

    一般に、アプリの「BACK」キーをインターセプトすることはおすすめしません。ただし、アプリがこれを行い、キーのアップではなくキーダウンのアクションを呼び出す場合は、コードを修正する必要があります。

    Android 2.0(API レベル 5)で導入された API をアプリで使用する場合は、次の新しい API を利用してキーイベント ペアを管理できます。

    • アクティビティまたはダイアログで「戻る」キーをインターセプトする場合は、単に新しい onBackPressed() メソッドを実装します。
    • ビューの「戻る」キーをインターセプトしている場合は、新しい startTracking() メソッドでキーダウンのキーイベントをトラッキングし、キーアップの時点でアクションを呼び出す必要があります。次のようなパターンを使用できます。
    • Kotlin

      override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.repeatCount == 0) {
                      event.startTracking()
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyDown(keyCode, event)
          }
      }
      
      override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.isTracking && !event.isCanceled) {
                      // *** DO ACTION HERE ***
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyUp(keyCode, event)
          }
      }
      

      Java

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK
                      && event.getRepeatCount() == 0) {
                  event.startTracking();
                  return true;
              }
              return super.onKeyDown(keyCode, event);
          }
      
          public boolean onKeyUp(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                      && !event.isCanceled()) {
                  // *** DO ACTION HERE ***
                  return true;
              }
              return super.onKeyUp(keyCode, event);
          }
      

    以前のアプリを更新して、BACK キーの処理が Android 2.0 と古いプラットフォーム バージョンの両方で適切に機能するようにしたい場合は、上記と同様の方法を使用できます。コードでは、キーダウン時にターゲット ボタン イベントをキャッチし、キーイベントをトラッキングするフラグを設定し、キーアップ時にイベントもキャッチして、トラッキング フラグが設定されている場合は必要なアクションを実行できます。また、フォーカスの変化を監視し、フォーカスを取得または喪失したときにトラッキング フラグをクリアすることもできます。

    API の差異レポート

    Android 2.0(API レベル 5)と以前のバージョンと比較した API の変更点について詳しくは、API 差分レポートをご覧ください。