com.docomostar.system
クラス PhysicalActivityData

Object
  上位を拡張 com.docomostar.system.PhysicalActivityData

public final class PhysicalActivityData
extends Object
 [iアプリオプションAPI]

身体活動情報を表すクラスです。 このオブジェクトは1日分の身体活動量を保持しています。 身体活動量は、運動強度 [METs] に運動時間 [h] を掛けた値であるエクササイズ [Ex] で表されます。 すなわち、 1.0 [METs] の運動を 1.0 時間継続した場合の身体活動量は 1.0 [Ex] となります。 身体活動量は getExercise メソッドにより取得することができます。

このクラスにおける「1日分」とは、ネイティブ身体活動量計で管理しているタイムゾーンにおいて、当該日付の 00:00:00(00時00分00秒)から24:00:00の時間帯を指し、 00:00:00の瞬間は含み、24:00:00の瞬間は含まないものとします。

内部的には、活動量は、00:00:00から getInterval() 秒ごとのエクササイズ値を配列(以降では、 この配列のことを内部配列と呼びます)として保持しています。 具体的には、配列の第 n 要素には、 (t * n) 秒後から (t * (n + 1)) 秒後までの活動量(エクササイズ)が格納されています。 ここで、tgetInterval() の戻り値とし、 各時間帯の右端 ((t * (n + 1))秒後の瞬間) は含まないものとします。
例えば、t = 3600(1時間)である場合は、以下のようになります。

以降では、内部配列の第 n 要素における、 活動量の計測対象となっている時間帯のことを、 単純に、内部配列の第 n 要素における計測対象時間帯 と呼ぶことにします。上記の例では、 内部配列の第1要素における計測対象時間帯は 「01:00:00から02:00:00まで(02:00:00は含まない)」 となります。

また、ネイティブ身体活動量計の利用設定がオフである間の活動量は0であるとみなされます。

導入されたバージョン:
Star-1.5

フィールドの概要
static String FILTER_AEROBICS
           エクササイズの抽出条件の一つで、有酸素運動によって生じたエクササイズであることを表します(="aerobics")。
static String FILTER_NONE
           エクササイズの抽出条件の一つで、抽出条件がないことを表します(="none")。
 
メソッドの概要
 String[] getAvailableFilter()
           端末がサポートしているエクササイズの抽出条件を返します。
 java.util.Calendar getCalendar()
           このオブジェクトの持つ日付(タイムゾーンを含む)の Calendar オブジェクトを取得します。
 float getExercise()
          このオブジェクトが保持しているエクササイズの総計(1日分)を取得します。
 float getExercise(java.util.Calendar time, int range)
           引数で指定した時間帯における、 エクササイズの合計を取得します。
 float getExercise(java.util.Calendar time, int range, String filter)
           抽出条件を指定して、 ある時間帯におけるエクササイズの合計を取得します。
 float[] getExercise(int cycle)
           このオブジェクトが保持しているエクササイズ(1日分)について、 00:00:00から指定された周期 [秒] ごとのエクササイズを配列として取得します。
 float[] getExercise(int cycle, String filter)
           抽出条件を指定して、 00:00:00 から指定された周期 [秒] ごとのエクササイズを配列として取得します。
 float getExercise(String filter)
           抽出条件を指定して、 エクササイズの総計(1日分)を取得します。
 int getInterval()
           このオブジェクトが保持しているエクササイズの周期(時間間隔) [秒] を取得します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

FILTER_NONE

public static final String FILTER_NONE

エクササイズの抽出条件の一つで、抽出条件がないことを表します(="none")。

このフィールドを指定して取得したエクササイズの値は、このオブジェクトが保持しているエクササイズ全体が対象となります。

関連項目:
getExercise(String), getExercise(Calendar, int, String), getExercise(int, String), 定数フィールド値

FILTER_AEROBICS

public static final String FILTER_AEROBICS

エクササイズの抽出条件の一つで、有酸素運動によって生じたエクササイズであることを表します(="aerobics")。

このフィールドを指定して取得したエクササイズの値は、このオブジェクトが保持しているエクササイズのうち有酸素運動によって生じたエクササイズのみが対象となります。 有酸素運動とみなされる条件は、機種依存です。

関連項目:
getExercise(String), getExercise(Calendar, int, String), getExercise(int, String), 定数フィールド値
メソッドの詳細

getCalendar

public java.util.Calendar getCalendar()

このオブジェクトの持つ日付(タイムゾーンを含む)の Calendar オブジェクトを取得します。

Calendar オブジェクトは、 ネイティブ身体活動量計で管理しているタイムゾーンと年月日の 00:00:00 を日時として生成されます。

このメソッドを複数回呼び出した場合、 呼び出す度に新しい Calendar インスタンスが生成され、 そのインスタンスへの参照が返されます。

戻り値:
このオブジェクトの持つ日付(タイムゾーンを含む)を表す Calendar オブジェクトを返します。

getExercise

public float getExercise()
このオブジェクトが保持しているエクササイズの総計(1日分)を取得します。 エクササイズの定義については、 このクラスの説明を参照してください。

戻り値:
このオブジェクトが持っているエクササイズの総計を返します。

getExercise

public float getExercise(java.util.Calendar time,
                         int range)

引数で指定した時間帯における、 エクササイズの合計を取得します。
[図] エクササイズの計算方法 エクササイズの合計の、正確な計算方法は以下の通りです。

  1. 内部配列の各要素(エクササイズ値)のうち、 その計測対象時間帯全体が、 引数で指定した時間帯に含まれるものを列挙します。 その結果、 内部配列の第 b 要素から 第 e 要素までが列挙されたこととします。
  2. 内部配列の第 (b - 1) 要素が存在する場合、 その要素の計測対象時間帯が、一部だけでも、 引数で指定した時間帯に含まれるかどうかを調べます。 含まれる場合、その要素の値(エクササイズ値)を Eb とします。 含まれない場合や、当該要素が存在しない場合は、Eb は0とします。
  3. 以下の総和を取ったものを、このメソッドの戻り値とします。
    • 内部配列の第 b 要素から 第 e 要素までの値(エクササイズ値)の総和
    • Eb の値

ここで、引数で指定した時間帯は、 左端(時刻 time)を含み、 右端(timerange 秒後の時刻)は含まないものとします。
エクササイズの定義については、 このクラスの説明を参照してください。

引数で指定する時間帯は、ネイティブ身体活動量計で管理しているタイムゾーンにおいて、日付をまたがってはいけません。 そのような時間帯を指定された場合は、 日付をまたがる直前までの時間帯が指定されたものとみなされます。

指定された時間帯において、 ネイティブ身体活動量計の利用設定の状態がずっとオフであった場合には、このメソッドは0.0を返します。

引数 time に指定する Calendar オブジェクトのタイムゾーン ID は、 getCalendar() で取得した Calendar オブジェクトのタイムゾーン ID と一致しなければなりません。

パラメータ:
time - エクササイズの合計を開始する時刻を指定します。 指定された Calendar オブジェクトの日付部分は無視されます。
range - エクササイズの合計を行う範囲を秒単位で指定します。 getInterval() より小さい値を指定することはできません。
戻り値:
時刻 time からはじまり、その range 秒後までの時間帯(ただし 時刻 time の range 秒後の瞬間は含みません)における、 エクササイズの合計を返します。
例外:
NullPointerException -
引数 time に null が指定された場合に発生します。
IllegalArgumentException -
Calendar 型の引数のいずれかに、 システムが提供している以外のオブジェクト(Calendar クラスを継承した未知のクラスのオブジェクト)が渡された場合に発生します。
IllegalArgumentException -
引数 time に含まれるタイムゾーン ID が、 このオブジェクトが持つタイムゾーン ID と一致しない場合に発生します。
IllegalArgumentException -
引数 range が getInterval() よりも小さい場合に発生します。

getExercise

public float[] getExercise(int cycle)

このオブジェクトが保持しているエクササイズ(1日分)について、 00:00:00から指定された周期 [秒] ごとのエクササイズを配列として取得します。
ある一定周期ごとのエクササイズの推移を調べたい時に便利です。 例えば、1時間周期のグラフを作成したい場合には getExercise(3600) を呼び出してください。

正確には、戻り値として得られる配列の 第 n 要素には下記の値 value が格納されています。

 Date date = getCalendar().getTime();
 date.setTime(date.getTime() + cycle * 1000 * n);
 Calendar calendar = Calendar.getInstance(getCalendar().getTimeZone());
 calendar.setTime(date);
 float value = getExercise(calendar, cycle);
 

上記定義からも分かるように、引数 cycle には、getInterval() の倍数を指定するようにしてください。 そうでない値を cycle に指定した場合には、 配列の各要素に格納されるエクササイズの値が不均一なってしまうので注意が必要です。

パラメータ:
cycle - 周期を秒単位で指定します。 getInterval() よりも小さい値を指定することはできません。
戻り値:
指定された周期ごとのエクササイズの配列を返します。 このメソッドを呼び出す度に新しく生成した配列を返します。
例外:
IllegalArgumentException -
引数 cycle が getInterval() よりも小さい場合に発生します。

getExercise

public float getExercise(String filter)

抽出条件を指定して、 エクササイズの総計(1日分)を取得します。

引数 filter に FILTER_NONE を指定した場合の振る舞いは、 getExercise() と同様です。

引数 filter に FILTER_NONE 以外を指定した場合、 抽出条件を満たしたエクササイズの総計を返します。 それ以外の振る舞いは、 getExercise() と同様です。

引数 filter に設定することが可能な抽出条件は、 getAvailableFilter() を用いて調べることができます。

パラメータ:
filter - エクササイズの抽出条件を指定します。
戻り値:
指定された抽出条件に応じたエクササイズの総計を返します。
関連項目:
FILTER_NONE, FILTER_AEROBICS
例外:
NullPointerException -
引数 filter に null が指定された場合に発生します。
IllegalArgumentException -
引数 filter に端末がサポートしていない値を指定した場合に発生します。

getExercise

public float getExercise(java.util.Calendar time,
                         int range,
                         String filter)

抽出条件を指定して、 ある時間帯におけるエクササイズの合計を取得します。

引数 filter に FILTER_NONE を指定した場合の振る舞いは、 getExercise(Calendar,int) と同様です。

引数 filter に FILTER_NONE 以外を指定した場合、 抽出条件を満たしたエクササイズを返します。 それ以外の振る舞いは、 getExercise(Calendar,int) と同様です。

引数 filter に設定することが可能な抽出条件は、 getAvailableFilter() を用いて調べることができます。

パラメータ:
time - エクササイズの合計を開始する時刻を指定します。 指定された Calendar オブジェクトの日付部分は無視されます。
range - エクササイズの合計を行う範囲を秒単位で指定します。 getInterval() より小さい値を指定することはできません。
filter - エクササイズの抽出条件を指定します。
戻り値:
時刻 time からはじまり、その range 秒後までの時間帯(ただし 時刻 time の range 秒後の瞬間は含みません)における、 指定された抽出条件に応じたエクササイズの合計を返します。
関連項目:
FILTER_NONE, FILTER_AEROBICS
例外:
NullPointerException -
引数 time または filter に null が指定された場合に発生します。
IllegalArgumentException -
Calendar 型の引数のいずれかに、 システムが提供している以外のオブジェクト(Calendar クラスを継承した未知のクラスのオブジェクト)が渡された場合に発生します。
IllegalArgumentException -
引数 time に含まれるタイムゾーン ID が、 このオブジェクトが持つタイムゾーン ID と一致しない場合に発生します。
IllegalArgumentException -
引数 range が getInterval() よりも小さい場合に発生します。
IllegalArgumentException -
引数 filter に端末がサポートしていない値を指定した場合に発生します。

getExercise

public float[] getExercise(int cycle,
                           String filter)

抽出条件を指定して、 00:00:00 から指定された周期 [秒] ごとのエクササイズを配列として取得します。

引数 filter に FILTER_NONE を指定した場合の振る舞いは、 getExercise(int) と同様です。

引数 filter に FILTER_NONE 以外を指定した場合、 抽出条件を満たしたエクササイズを返します。 それ以外の振る舞いは、 getExercise(int) と同様です。

引数 filter に設定することが可能な抽出条件は、 getAvailableFilter() を用いて調べることができます。

getExercise(Calendar,int) 縺ィ蜷梧ァ倥〒縺吶