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

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

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

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

言語

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

  • 中国語、中華人民共和国(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 プラットフォーム コンポーネントで提供されるデベロッパー向けの新機能について説明します。

    アリのサポート

    • デバッグモードとリリースモードのアプリ署名。リリースモードの署名には、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
    • 新しい Quick Contact フレームワーク API を使用すると、デベロッパーはアプリで連絡先バッジを作成できます。バッジをクリックすると、ワンクリックで相手に連絡する方法のリストを含むウィンドウが開きます。

    WebView

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

    カメラ

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

    メディア

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

    その他のフレームワーク

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

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

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

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

    通常、アプリで 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 差分レポートをご覧ください。