ついに待ちに待ったAndroid SDK 2.3のGingerBreadがリリースされたので、早速その新機能をまとめてみました。
今回は見た目の変更が多いという噂でしたが、そうでもなかったようです。しかし、今までにないくらい新機能が増えたように思います。
まずは2.3で追加された新APIを見ていきましょう。
Android SDK 2.3からのAPI
- SIPベースのVoIP
- フレームワークにSIPプロトコルスタックが搭載され、インターネット電話を扱えるようになりました。SIPのサンプルアプリケーションはココにあります。以下は実際にSipDemoを動かしてみたところ。
- NFC
- NFC(Near Field Communications)のAPIが追加され、ハードウェアが搭載されていれば、FeliCaのように近距離通信を行うことができるようになりました。NFCのサンプルコードはココです。現時点ではまだNFCのハードウェアが搭載されたAndroid 2.3の端末がないため、試せません。エミュレータで実行すると、当然のようにExceptionが発生してしまいました。
- ジャイロスコープとその他のセンサー
- ジャイロスコープ、回転速度、直線加速、重力、バロメーターのセンサーが増え、センサーAPIから使用できるようになりました。センサーAPIの詳細はココです。
- 複数のカメラのサポート
- アプリケーションから複数のカメラが利用できるようになりました。フロントカメラを利用するサンプルコードはココです。APIDemoのCameraPreviewを試してみましたが、「カメラが一個しか搭載されてないよ!」と怒られてしまいました。
- オーディオ効果のミキシング
- オーディオにバスブーストやリバーブなどの様々なエフェクトを掛けることのできるAPIが追加されました。オーディオエフェクトのサンプルコードはココです。以下は実際にAPIDemoを動かしてみたところ。
- その他のメディア関連の新機能
- JPEG画像のEXIF情報の中のaltitude(高度)の値が取得できるようになりました。また、ビデオ撮影中のオリエンテーション情報をsetOrientationHint()メソッドでMediaRecorderに通知することができるようになりました。
- ダウンロードマネージャ
- DownloadManagerが追加され、長期間動作するHTTPダウンロードをアプリケーションから要求することができるようになりました。
- 制限モード
- StrictModeと呼ばれる制限モードが追加されました。ANRを発生させないために、UIスレッドで時間のかかる処理を使った場合に検知してくれるモードです。検知した場合はHandler、AysncTask、IntentServiceなどを使って回避するようにコードを書き換えることを推奨します。
UIフレームワーク
- overscrollのサポート
- 限界までスクロールしても、余分にスクロールさせることができるようになりました。余分にスクロールさせる量などは制御することができます。
- タッチフィルタリング
- マルウェアなどから購入ボタンやパーミッション許可を与えるボタンなどを押させることがないように、タッチフィルタリングを使ってセキュリティを強化することができるようになりました。サンプルコードはココです。
- イベント管理の改善
- InputEventが新しく追加されました。
- モーションイベントの改善
- MotionEventにポインタIDが追加されました。それによって、アプリケーションから個々の指の動きを捕捉することができるようになりました。
- テキスト選択コントロール
- setComposingRegionメソッドにより、アプリケーションから編集中のテキスト領域を設定できるようになりました。TextViewに新しい属性も追加されました。
- アクティビティの制御
- ActivityInfoクラスにアクティビティの向きを管理する定数が追加されました。画面の回転に合わせてすべての向きに画面表示を合わせることが可能になったようです。
- ノティファケーションのテキストとアイコンスタイル
- ノティファケーションスタイルを管理する新しい属性が追加されました。
- WebView
- setUseWebViewBackgroundForOverscrollBackground()メソッドを使ってoverscrollの背景を指定することができるようになりました。
- グラフィック
- OpenGL ES 2.0の残りのglDrawElements()、glVertexAttribPointer()メソッドに対応しました。また、YV12の画像フォーマットに対応しました。
コンテントプロバイダ
- AlarmClockプロバイダが追加されました。
- MediaStoreがPLAY_FROM_SEARCHの新しいインテントアクションに対応しました。検索されると、自動的に音楽が再生されるインテントです。
- MediaStoreが新しいMEDIA_IGNORE_FILENAMEフラグによって無視するファイル名を指定できるようになりました。
- SettingsプロバイダにAPPLICATION_DETAILS_SETTINGSとMANAGE_ALL_APPLICATIONS_SETTINGSのアクションが増えました。前者はアプリケーションの詳細設定画面、後者はアプリケーション管理画面となります。
- ContactsContractプロバイダにSIPアドレスを格納するためのContactsContract.CommonDataKinds.SipAddressが追加されました。
Location
- LocationManagerはシステムに管理されたWorkSourceクラスにしたがって、wake locks と wifi locksを要求するアプリケーションを追跡し、バッテリ使用量のパラメータに追加するようになりました。
- LocationManagerに周期的または1回だけ位置情報を受け取る新しいメソッドが追加されました。
- ストレージ
- OBB (Opaque Binary Blob)をサポートするStorageManagerが新しく追加されました。2011年の初頭までにAndroid 2.3の開発ツールでOBBファイルを管理することができるようになる予定です。
- パッケージマネージャ
- PackageInfoクラスにfirstInstallTimeとlastUpdateTimeが追加されました。前者はパッケージのインストール日時で、後者は更新日時です。また、新しいgetProviderInfo()メソッドで独自のコンテントプロバイダクラスの情報も取得できるようになりました。
- Telephony
- TelephonyManagerにCDMA EVDO Rev BのネットワークタイプのためのNETWORK_TYPE_EVDO_Bの定数が追加されました。また、新しいgetPsc()メソッドを使用してUMTSネットワーク上のスクランブルコードを取得できるようになりました。
アクティビティ、ウインドウのライフサイクルのネイティブアクセス
- 新しいNativeActivityクラスを使ってネイティブコードにライフサイクルのコールバックを直接実装することができるようになりました。
- InputQueueクラスのコールバックインターフェースでネイティブコードからイベントキューを管理できるようになりました。
- SurfaceHolder.Callback2インターフェースでネイティブコードからSurfaceHolderを管理できるようになりました。
- Windowクラスの新しいメソッドのtakeInputQueueとtakeSurface()メソッドでネイティブコードからイベントとサーフェースを管理できるようになりました。
- NativeActivityについてはココに詳細があります。
Dalvikランタイム
- dalvik.systemから、いくつかの非推奨クラスを削除
- 新しいコレクションの追加。ArrayDeque, NavigableMap, ConcurrentSkipListMap, LinkedBlockingDeque
- 新しいArraysユティリティの追加。binarySearch(), copyOf(), copyOfRange(), 他。
- HttpURLConnectionのためのCookieManagerの追加。
- もっと下回りをカバーしたネットワークAPIの追加。InterfaceAddress, NetworkInterface, IDN
- Fileクラスの読み書きアクセスメソッドの追加。
- String.isEmpty()クラスのサポート。
- NormalizerとNormalizer.Formクラスのサポート。
- javax.net.sslのサーバソケットの改善。
マニフェストの新しい要素と属性
- supports-screens要素へのxlargeScreens属性の追加。超大型スクリーンをサポートするための物。
- <activity>要素へのandroid:screenOrientation属性の値の追加。
- reverseLandscape
- アクティビティが通常のランドスケープモードの上下反対の画面を持つ。
- reversePortait
- アクティビティが通常のポートレートモードの上下反対の画面を持つ。
- sensorLandscape
- アクティビティがランドスケープモード画面を持つが、センサーの検知により、持っている向きに合わせて画面の向きが入れ替わる。
- sensorPortrait
- アクティビティがポートレートモード画面を持つが、センサーの検知により、持っている向きに合わせて画面の向きが入れ替わる。
- fullSensor
- アクティビティがユーザーが動かした端末の向きに合わせて画面の向きが入れ替わる。
新しいパーミッション
- com.android.permission.SET_ALARM
- アプリケーションからSET_ALARMのインテントをbroadcastできるようになる。
- android.permission.USE_SIP
- アプリケーションから、SIP APIを使ってインターネット電話を使えるようにする。
- android.permission.NFC
- アプリケーションから、NFC APIを使えるようにする。
新機能の定数
- android.hardware.audio.low_latency
- アプリケーションは低待ち時間のオーディオパイプラインを利用して、音声の入出力を細かく扱います。
- android.hardware.camera.front
- アプリケーションはフロントカメラを使います。
- android.hardware.nfc
- アプリケーションはNFC機能を使います。
- android.hardware.sensor.barometer
- アプリケーションは端末のバロメーターを使います。
- android.hardware.sensor.gyroscope
- アプリケーションはジャイロスコープセンサーを使います。
- android.software.sip
- アプリケーションはSIP APIを使っています。
- android.software.sip.voip
- アプリケーションはSIPベースのVOIPサービスを使います。
- android.hardware.touchscreen.multitouch.jazzhand
- アプリケーションは進歩したマルチポイントのマルチタッチ性能を使って、5点まで独立して追跡することができます。
- 詳細はuses-featureを見てください。
APIの新機能をひと通り列挙してみました。かなりの変更量でしたね。
API Level 8からの差分はココにまとまっています。
API以外にも変わっている部分があります。
引き続き、ハイライト編でお伝えします。
記載されている会社名、および商品名等は、各社の商標または登録商標です。
0 コメント:
コメントを投稿