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 プラットフォームのハイライトのドキュメントをご覧ください。

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

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

  • アラーム
  • Browser
  • 電卓
  • ビデオ録画
  • カメラ
  • 連絡先
  • カスタム ロケール(デベロッパー アプリ)
  • 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 プラットフォームで提供される Application Framework 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 に代わるものとして拡張され、アプリがシステムの壁紙をリクエストして設定できるようにします。
    • 新しいサービス API により、アプリの実行中にサービスのライフサイクル(特に実行中に Service が強制終了される可能性があるメモリ不足の状況)を正しく処理できるようになります。
      • Service.setForeground() が非推奨になり、実質的に何もしないようになりました。これは、新しい API startForeground() に置き換えられました。この API は、進行中の通知をフォアグラウンド状態と関連付けるのに役立ちます(また、これは必須となります)。
    • MotionEvent は、サポートするデバイスの同時タッチ情報をレポートできるようになりました。最大 3 つのポインタを同時に追跡できます。
    • KeyEvent に、アクション時の操作と長押しの動作の実装に役立つ新しいキー ディスパッチ API と、キーの押下をキャンセルする新しいメカニズム(仮想キー用)が追加されました。
    • WindowManager.LayoutParams に、画面の表示時にウィンドウを復帰させ、画面がロックされている場合でもウィンドウを表示できるようにする新しい定数が追加されました。これにより、アプリは、デバイスのスリープ状態を解除する必要のある目覚まし時計など、よりクリーンに実装できるようになります。
    • デバイスの装着状態をブロードキャストし、デバイスがデスクトップ ホルダーまたはカーホルダーに置かれたときにアプリで特別なアクティビティを起動できるようにする新しい Intent API。

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

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

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

    一般に、アプリ内で「BACK」キーをインターセプトすることは推奨されません。ただし、アプリがこの状態にある場合、キーアップではなくキーダウンのアクションを呼び出す場合は、コードを変更する必要があります。

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

    • アクティビティまたはダイアログで「BACK」キーをインターセプトする場合は、新しい onBackPressed() メソッドを実装します。
    • ビューで「BACK」キーをインターセプトする場合、キーダウンのときに(新しい 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);
          }
      

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

    API の違いレポート

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