Google Fit の各データポイントには、データソースが関連付けられています。データソース データを収集または管理するアプリやデバイスを特定する情報 データを変換しますアプリのパッケージ名をデータソースで使用できる 物理センサーを表すものではありません
Google Fit では次のことができます。
- インテントを呼び出して、特定のアプリに関連付けられたデータを表示します。
- インテントを受信して、アプリを使用してデータを表示します。
- セッションを挿入したアプリを特定します。詳細 詳しくは、セッションを操作するをご覧ください。
データポイントを挿入したアプリを特定する
データポイントを挿入したアプリのパッケージ名を取得するには、まず、
DataPoint.getOriginalDataSource
を呼び出す
続いてデータソースを取得し、
DataSource.getAppPackageName
メソッド:
val dataPoint : DataPoint = ...
val dataSource = dataPoint.originalDataSource
val appPkgName = dataSource.appPackageName
DataPoint dataPoint = ...
DataSource dataSource = dataPoint.getOriginalDataSource();
String appPkgName = dataSource.getAppPackageName();
他のアプリからインテントを受信する
他の健康&ウェルネス アプリからインテントを受信するようアプリを登録するには: マニフェストで次のようにインテント フィルタを宣言します。
<intent-filter>
<action android:name="vnd.google.fitness.VIEW" />
<data android:mimeType="vnd.google.fitness.data_type/com.google.step_count.cumulative" />
<data android:mimeType="vnd.google.fitness.data_type/com.google.step_count.delta" />
</intent-filter>
アプリが Google Fit から受け取るインテントは、それぞれ 1 種類のみです。 1 つのインテント フィルタで複数の MIME タイプをフィルタリングできます。アプリの インテント フィルタには、アプリがサポートするすべてのデータ型を含める必要があります。 カスタムデータ型が含まれます
フィットネス インテントには、次のエクストラが含まれます。
vnd.google.gms.fitness.start_time
vnd.google.gms.fitness.end_time
vnd.google.gms.fitness.data_source
これらのエクストラからデータを取得する手順は次のとおりです。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
val supportedType = DataType.getMimeType(DataType.TYPE_STEP_COUNT_DELTA)
if (Intent.ACTION_VIEW == intent.action && supportedType == intent.type) {
// Get the intent extras
val startTime = Fitness.getStartTime(intent, TimeUnit.MILLISECONDS);
val endTime = Fitness.getEndTime(intent, TimeUnit.MILLISECONDS)
val dataSource = DataSource.extract(intent)
}
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
String supportedType = DataType.getMimeType(DataType.TYPE_STEP_COUNT_DELTA);
if (Intent.ACTION_VIEW.equals(getIntent().getAction()) && supportedType.equals(getIntent().getType())
{
// Get the intent extras
long startTime = Fitness.getStartTime(getIntent(), TimeUnit.MILLISECONDS);
long endTime = Fitness.getEndTime(getIntent(), TimeUnit.MILLISECONDS);
DataSource dataSource = DataSource.extract(getIntent());
}
}
カスタムデータ型の MIME タイプを取得するには、
MIME_TYPE_PREFIX
定数:
val supportedType = DataType.MIME_TYPE_PREFIX + "com.company.customdatatype"
String supportedType = DataType.MIME_TYPE_PREFIX + "com.company.customdatatype";
インテントを呼び出してデータを表示する
インテントを呼び出して別のアプリでデータを表示するには、
HistoryApi.ViewIntentBuilder
クラス:
// Inside your activity
val startTime = ...
val endTime = ...
val dataSource = ...
val dataType = ...
val fitIntent = HistoryApi.ViewIntentBuilder(this, dataType)
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
.setDataSource(dataSource) // Optional if a specific data source is desired
.setPreferredApplication("com.example.app") // Optional if you'd like a
// specific app to handle the intent if that app is installed on the device
.build()
// Inside your activity
long startTime = ...
long endTime = ...
DataSource dataSource = ...
DataType dataType = ...
Intent fitIntent = new HistoryApi.ViewIntentBuilder(this, dataType)
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
.setDataSource(dataSource) // Optional if a specific data source is desired
.setPreferredApplication("com.example.app") // Optional if you'd like a
// specific app to handle the intent if that app is installed on the device
.build();
インテントとインテントの使用方法についてご確認ください。 フィルタ。