Android 1.5 Highlightsに、「SensorManager – redesigned sensor APIs」とあったのでSensorManager周りがどのように変更されているか確認してみました。
・SensorListenerがdeprecated指定
SDK1.5に切り替えてみると、SensorListenerがdeprecatedになっていました。
javadocを参照してみるとSensorListenerのかわりにSensorEventListenerを使用するようにとのこと。
・SensorListener Class Overview
Used for receiving notifications from the SensorManager when sensor values have changed. This interface is deprecated, use SensorEventListener instead.
SensorListenerでは、センサーからの値を変更を取得するときは、onSensorChanged(int sensor, float[] values)メソッドで取得していました。
SensorEventListenerのjavadocでは、このonSensorChangedメソッドの引数が変わっており、onSensorChanged(SensorEvent event)と、SensorEventクラスを引数としています。このSensorEventクラスはSDK.15で初めて定義されたクラスのようで、今までSensorListenerのstaticメンバで定義していたデータ値等を独立させたもののようです。
SensorEventのフィールドを見てみると以下のようになっていました。
・SensorEvent Field
| public int |
accuracy |
The accuracy of this event. |
| public Sensor |
sensor |
The sensor that generated this event. |
| public long |
timestamp |
The time in nanosecond at which the event happened
|
|
| public final float[] |
values |
The length and contents of the values array vary depending on which sensor type is being monitored (see also SensorEvent for a definition of the coordinate system used):
Sensor.TYPE_ORIENTATION:
All values are angles in degrees. |
onSensorChangedメソッドでSensorEvnetを受け取ることで、accuracyとtimestampが受け取れるようになっています。これでonAccuracyChangedのたびにaccuracy値を保持したり、onSensorChangedのたびにSystem.currentTimeMillis()で時間を問い合わせたりしなくてすみそうです。
また、センサーの種類は今までSensorManagerに定義されていたのですが、新しくandroid.hardware.Sensorクラスが定義され、センサー種別の定数はSensorManagerからSensorクラスに移行されたようです。
・傾斜及び向き
今までSensorListener.onSensorChangedメソッド内で傾きや向きを計算したりしてましたが、SensarManagerに新しく追加されたメソッドであるgetInclination(float[] I)、getOrientation(float[] R, float[] values)を利用する事で計算しなくてもよくなりそうです。ただ、これらの値の使い方は一癖ありそうなので注意した方がいいかもしれません。
・まとめ
センサー周りに関してはSDK1.5になったことでデータと処理を分けた事と、傾斜や向きの値取得用メソッドが用意された事の2点がメインのようです。いままで計算が面倒だったのですが、これによって使いやすさは確かに向上しているのではないでしょうか。
taga Android, SDK1.5
SDK1.5をとりあえず入れてみました。ADTもarchiveでの入れなおしだったので結構面倒でした・・・
- http://developer.android.com/sdk/preview/にアクセスし、「android-sdk-windows-1.5_pre.zip」を選択し、ダウンロード。
-
ダウンロードしたSDKを解凍し、toolsディレクトリにパスを通す。
-
同ページから「ADT-0.9_pre.zip」をダウンロード。
-
Eclipse3.2には対応していないため、Eclipse3.2を使用している場合は3.3/3.4をインストールすること。5.現在ADTがインストールされているなら、「Help > Software Updates」からアンインストールする。
(「Android Development Tools」と「Android Editors」をアンインストール)
-
Help > Software Updates > Available Software > Add Site > Archive にて、ダウンロードした「ADT-0.9_pre.zip」を選択し、「Android DDMS」及び「Android Development Tools」をインストール。
-
Eclipseを再起動。
-
Window > Preferences > Android > SDK Locationにダウンロードし解凍したSDKのパスを指定する。
ADTのインストールが上手くいかない場合はarchiveファイルのダウンロードが正しく終わっていない場合があります。(僕の場合は発表されたばかりでアクセスが集中しているからか、2回ダウンロードに失敗しました。)
※既存のAndroidプロジェクトがあれば、以降の処理を行います。
-
既存のプロジェクトはビルドに失敗した状態になっている事を確認し、プロジェクトを右クリック > Properties > Android > Project TargetでSDKを選択。
- ビルドし直す。
ビルドし直すと、若干構成が変わっているのが分かるでしょうか?

「R.java」が「gen」パッケージ以下に移動しています。「Generated Java Files」とあるので、今後他の自動生成されるようなJavaファイルが出たとしてもこのgenパッケージに入ることが予想されます。
また、root直下に「default.properties」というファイルが生成されていて、中を見てみると以下のようになっています。
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-3
# apk configurations. This property allows creation of APK files with limited
# resources. For example, if your application contains many locales and
# you wish to release multiple smaller apks instead of a large one, you can
# define configuration to create apks with limited language sets.
# Format is a comma separated list of configuration names. For each
# configuration, a property will declare the resource configurations to
# include. Example:
# apk-configurations=european,northamerica
# apk-config-european=en,fr,it,de,es
# apk-config-northamerica=en,es
apk-configurations=
前半の部分はバージョン管理に使用するもので、後半はどの言語に対応しているかを表すもののようです。今までアプリがどの言語に対応しているのか不明だったのですが、Android Marketなので対応言語が参照できるようになるのでしょうか。
taga Android, SDK1.5
[@IT]ライブフォルダやソフトウェアキーボードなど多数の新機能搭載、Android 1.5が早期リリース
米グーグルのAndroidチームは4月13日、“cupcake”のコードネームで呼ばれていた開発中の次期バージョンの開発キットを「Android 1.5 Early Look SDK 1.5」として公開した。Windows版、Linux版、Mac OS X版をダウンロードできる。APIは最終的な決定に至っていないものの、ほぼ最終段階に達しており、開発者に新バージョンのテストを呼びかけている。今回のバージョンから、異なるバージョンのSDKを1つの環境で利用できるようになっており、SDK 1.1/1.5の双方の開発を行える。
開発版とはいえ、もう1.5が公開されるようです。早いですねー。
AndroidDevelopersBlogの方で変更点を確認してみると、かなり大幅な改良になっているようです。HTCDreamで採用されているソフトウェアキーボードが扱えるようになったり、Home Screenにようやく壁紙変更以外の要素が追加されたりと新機能が追加されたのと、加速度センサー周りの使い勝手が悪かったため、改善されたあたりが非常にうれしいです。(今のコードが無駄になっちゃいそうですが。)
細かいところは追々触ってみようと思います。
taga Android