From 1289685e2c22b748d84beb1bd83fc481641e32b7 Mon Sep 17 00:00:00 2001 From: davinci9196 Date: Tue, 30 Jan 2024 14:02:08 +0800 Subject: [PATCH] supplementary number 57 fitness.HistoryApi implementation --- .../android/gms/fitness/data/DataPoint.java | 20 --- .../android/gms/fitness/data/Device.java | 20 --- .../android/gms/fitness/data/Field.java | 20 --- .../android/gms/fitness/data/Value.java | 20 --- play-services-core/build.gradle | 1 + .../src/main/AndroidManifest.xml | 10 +- .../service/history/FitHistoryBroker.kt | 45 ++++++ play-services-fitness/.gitignore | 1 + play-services-fitness/build.gradle | 34 ++++ .../src/main/AndroidManifest.xml | 4 + .../fitness/internal/IDataReadCallback.aidl | 12 ++ .../internal/IGoogleFitHistoryApi.aidl | 18 +++ .../gms/fitness/internal/IStatusCallback.aidl | 12 ++ .../fitness/internal/ISyncInfoCallback.aidl | 10 ++ .../fitness/request/DataDeleteRequest.aidl | 8 + .../fitness/request/DataInsertRequest.aidl | 8 + .../gms/fitness/request/DataReadRequest.aidl | 8 + .../gms/fitness/request/DataReadResult.aidl | 8 + .../fitness/request/GetSyncInfoRequest.aidl | 8 + .../android/gms/fitness/data/AppInfo.java | 48 ++++++ .../android/gms/fitness/data/Bucket.java | 60 +++++++ .../android/gms/fitness/data/DataSet.java | 31 ++++ .../android/gms/fitness/data/DataSource.java | 37 +++++ .../android/gms/fitness/data/DataType.java | 102 ++++++++++++ .../android/gms/fitness/data/Device.java | 35 ++++ .../android/gms/fitness/data/Field.java | 152 ++++++++++++++++++ .../android/gms/fitness/data/Session.java | 24 +++ .../fitness/request/DataDeleteRequest.java | 70 ++++++++ .../fitness/request/DataInsertRequest.java | 34 ++++ .../gms/fitness/request/DataReadRequest.java | 59 +++++++ .../gms/fitness/request/DataReadResult.java | 42 +++++ .../fitness/request/GetSyncInfoRequest.java | 30 ++++ settings.gradle | 1 + 33 files changed, 911 insertions(+), 81 deletions(-) delete mode 100644 play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java delete mode 100644 play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java delete mode 100644 play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java delete mode 100644 play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java create mode 100644 play-services-core/src/main/kotlin/com/google/android/gms/fitness/service/history/FitHistoryBroker.kt create mode 100644 play-services-fitness/.gitignore create mode 100644 play-services-fitness/build.gradle create mode 100644 play-services-fitness/src/main/AndroidManifest.xml create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IDataReadCallback.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IGoogleFitHistoryApi.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IStatusCallback.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/ISyncInfoCallback.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataDeleteRequest.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataInsertRequest.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadRequest.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadResult.aidl create mode 100644 play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/GetSyncInfoRequest.aidl create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/AppInfo.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Bucket.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSet.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSource.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataType.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Device.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Field.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Session.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataDeleteRequest.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataInsertRequest.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadRequest.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadResult.java create mode 100644 play-services-fitness/src/main/java/com/google/android/gms/fitness/request/GetSyncInfoRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java deleted file mode 100644 index cc63ed7bac..0000000000 --- a/play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.android.gms.fitness.data; - -public class DataPoint { -} diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java deleted file mode 100644 index 9566ef2370..0000000000 --- a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.android.gms.fitness.data; - -public class Device { -} diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java deleted file mode 100644 index e0e56bb79a..0000000000 --- a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.android.gms.fitness.data; - -public class Field { -} diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java deleted file mode 100644 index fc1b706cd5..0000000000 --- a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.android.gms.fitness.data; - -public class Value { -} diff --git a/play-services-core/build.gradle b/play-services-core/build.gradle index 43f7ea95f3..e4a8c6e84d 100644 --- a/play-services-core/build.gradle +++ b/play-services-core/build.gradle @@ -63,6 +63,7 @@ dependencies { implementation project(':play-services-recaptcha') implementation project(':play-services-safetynet') implementation project(':play-services-tasks-ktx') + implementation project(':play-services-fitness') mapboxRuntimeOnly project(':play-services-maps-core-mapbox') vtmRuntimeOnly project(':play-services-maps-core-vtm') diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index 004290ffa6..5922c1c926 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -900,6 +900,15 @@ + + + + + + @@ -955,7 +964,6 @@ - diff --git a/play-services-core/src/main/kotlin/com/google/android/gms/fitness/service/history/FitHistoryBroker.kt b/play-services-core/src/main/kotlin/com/google/android/gms/fitness/service/history/FitHistoryBroker.kt new file mode 100644 index 0000000000..138720ae50 --- /dev/null +++ b/play-services-core/src/main/kotlin/com/google/android/gms/fitness/service/history/FitHistoryBroker.kt @@ -0,0 +1,45 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.service.history + +import android.os.Bundle +import android.util.Log +import com.google.android.gms.common.api.CommonStatusCodes +import com.google.android.gms.common.internal.GetServiceRequest +import com.google.android.gms.common.internal.IGmsCallbacks +import com.google.android.gms.fitness.internal.IGoogleFitHistoryApi +import com.google.android.gms.fitness.request.DataDeleteRequest +import com.google.android.gms.fitness.request.DataInsertRequest +import com.google.android.gms.fitness.request.DataReadRequest +import com.google.android.gms.fitness.request.GetSyncInfoRequest +import org.microg.gms.BaseService +import org.microg.gms.common.GmsService + +const val TAG = "FitHistoryBroker" + +class FitHistoryBroker : BaseService(TAG, GmsService.FITNESS_HISTORY) { + override fun handleServiceRequest(callback: IGmsCallbacks, request: GetServiceRequest, service: GmsService) { + callback.onPostInitComplete(CommonStatusCodes.SUCCESS, FitHistoryBrokerImpl().asBinder(), Bundle()) + } +} + +class FitHistoryBrokerImpl : IGoogleFitHistoryApi.Stub() { + override fun getDeleteData(dataDeleteRequest: DataDeleteRequest) { + Log.d(TAG, "Not implemented getDeleteData: $dataDeleteRequest") + } + + override fun getSyncInfo(getSyncInfoRequest: GetSyncInfoRequest) { + Log.d(TAG, "Not implemented getSyncInfo: $getSyncInfoRequest") + } + + override fun getInsertData(dataInsertRequest: DataInsertRequest) { + Log.d(TAG, "Not implemented getInsertData: $dataInsertRequest") + } + + override fun getReadData(dataReadRequest: DataReadRequest) { + Log.d(TAG, "Not implemented getReadData: $dataReadRequest") + } +} diff --git a/play-services-fitness/.gitignore b/play-services-fitness/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/play-services-fitness/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/play-services-fitness/build.gradle b/play-services-fitness/build.gradle new file mode 100644 index 0000000000..600a0d69f2 --- /dev/null +++ b/play-services-fitness/build.gradle @@ -0,0 +1,34 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' +} + +android { + namespace "com.google.android.gms.fitness" + + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + buildFeatures { + aidl = true + } + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +dependencies { + api project(':play-services-base') + api project(':play-services-base-core') + api project(':play-services-basement') + + annotationProcessor project(':safe-parcel-processor') +} \ No newline at end of file diff --git a/play-services-fitness/src/main/AndroidManifest.xml b/play-services-fitness/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/play-services-fitness/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IDataReadCallback.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IDataReadCallback.aidl new file mode 100644 index 0000000000..52979b5ac1 --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IDataReadCallback.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.internal; + +import com.google.android.gms.fitness.request.DataReadResult; + +interface IDataReadCallback { + void onPostResult(in DataReadResult dataReadResult) = 0; +} \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IGoogleFitHistoryApi.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IGoogleFitHistoryApi.aidl new file mode 100644 index 0000000000..3e740d3100 --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IGoogleFitHistoryApi.aidl @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.internal; + +import com.google.android.gms.fitness.request.DataDeleteRequest; +import com.google.android.gms.fitness.request.GetSyncInfoRequest; +import com.google.android.gms.fitness.request.DataInsertRequest; +import com.google.android.gms.fitness.request.DataReadRequest; + +interface IGoogleFitHistoryApi { + void getDeleteData(in DataDeleteRequest dataDeleteRequest) = 0; + void getSyncInfo(in GetSyncInfoRequest getSyncInfoRequest) = 1; + void getInsertData(in DataInsertRequest dataInsertRequest) = 2; + void getReadData(in DataReadRequest dataReadRequest) = 3; +} \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IStatusCallback.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IStatusCallback.aidl new file mode 100644 index 0000000000..7cb6deacb0 --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/IStatusCallback.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.internal; + +import com.google.android.gms.common.api.Status; + +interface IStatusCallback { + void onPostResult(in Status status) = 0; +} \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/ISyncInfoCallback.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/ISyncInfoCallback.aidl new file mode 100644 index 0000000000..84cb46e2fe --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/internal/ISyncInfoCallback.aidl @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.internal; + +interface ISyncInfoCallback { + +} \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataDeleteRequest.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataDeleteRequest.aidl new file mode 100644 index 0000000000..cd17f302dc --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataDeleteRequest.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +parcelable DataDeleteRequest; \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataInsertRequest.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataInsertRequest.aidl new file mode 100644 index 0000000000..c6a09b76a3 --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataInsertRequest.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +parcelable DataInsertRequest; \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadRequest.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadRequest.aidl new file mode 100644 index 0000000000..1ed3c7bd6f --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadRequest.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +parcelable DataReadRequest; \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadResult.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadResult.aidl new file mode 100644 index 0000000000..4194c07da5 --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/DataReadResult.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +parcelable DataReadResult; \ No newline at end of file diff --git a/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/GetSyncInfoRequest.aidl b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/GetSyncInfoRequest.aidl new file mode 100644 index 0000000000..8116103377 --- /dev/null +++ b/play-services-fitness/src/main/aidl/com/google/android/gms/fitness/request/GetSyncInfoRequest.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +parcelable GetSyncInfoRequest; \ No newline at end of file diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/AppInfo.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/AppInfo.java new file mode 100644 index 0000000000..b4dea5d67d --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/AppInfo.java @@ -0,0 +1,48 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +import org.microg.gms.utils.ToStringHelper; + +@SafeParcelable.Class +public class AppInfo extends AbstractSafeParcelable { + + public static final AppInfo DEFAULT = new AppInfo("com.google.android.gms"); + + @Field(1) + public String packageName; + + public AppInfo() { + } + + public AppInfo(String packageName) { + this.packageName = packageName; + } + + @NonNull + @Override + public String toString() { + return ToStringHelper.name("AppInfo") + .field("packageName", packageName) + .end(); + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(AppInfo.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Bucket.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Bucket.java new file mode 100644 index 0000000000..1eaf0c49e7 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Bucket.java @@ -0,0 +1,60 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +import org.microg.gms.utils.ToStringHelper; + +import java.util.List; + +@SafeParcelable.Class +public class Bucket extends AbstractSafeParcelable { + + public static final int TYPE_TIME = 1; + public static final int TYPE_SESSION = 2; + public static final int TYPE_ACTIVITY_TYPE = 3; + public static final int TYPE_ACTIVITY_SEGMENT = 4; + + @Field(1) + public long startTimeMillis; + @Field(2) + public long endTimeMillis; + @Field(3) + public Session session; + @Field(4) + public int activityType; + @Field(5) + public List dataSets; + @Field(6) + public int bucketType; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(Bucket.class); + + @NonNull + @Override + public String toString() { + return ToStringHelper.name("Bucket") + .field("startTimeMillis", startTimeMillis) + .field("endTimeMillis", endTimeMillis) + .field("session", session) + .field("activityType", activityType) + .field("dataSets", dataSets) + .field("bucketType", bucketType) + .end(); + } +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSet.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSet.java new file mode 100644 index 0000000000..e96d311ed6 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSet.java @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +@SafeParcelable.Class +public class DataSet extends AbstractSafeParcelable { + + @Field(1000) + public int versionCode; + @Field(1) + public DataSource dataSource; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataSet.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSource.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSource.java new file mode 100644 index 0000000000..93d0aa6f89 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataSource.java @@ -0,0 +1,37 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +@SafeParcelable.Class +public class DataSource extends AbstractSafeParcelable { + + @Field(1) + public DataType dataType; + @Field(3) + public int type; + @Field(4) + public Device device; + @Field(5) + public AppInfo appInfo; + @Field(6) + public String info; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataSource.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataType.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataType.java new file mode 100644 index 0000000000..10cbe66472 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/DataType.java @@ -0,0 +1,102 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@SafeParcelable.Class +public class DataType extends AbstractSafeParcelable { + + public static final DataType TYPE_STEP_COUNT_DELTA = new DataType("com.google.step_count.delta", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_STEPS); + public static final DataType TYPE_STEP_COUNT_CUMULATIVE = new DataType("com.google.step_count.cumulative", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_STEPS); + public static final DataType TYPE_STEP_COUNT_CADENCE = new DataType("com.google.step_count.cadence", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_RPM); + public static final DataType TYPE_INTERNAL_GOAL = new DataType("com.google.internal.goal", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_FITNESS_GOAL_V2); + public static final DataType TYPE_ACTIVITY_SEGMENT = new DataType("com.google.activity.segment", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_ACTIVITY); + public static final DataType TYPE_SLEEP_SEGMENT = new DataType("com.google.sleep.segment", "https://www.googleapis.com/auth/fitness.sleep.read", "https://www.googleapis.com/auth/fitness.sleep.write", com.google.android.gms.fitness.data.Field.FIELD_SLEEP_SEGMENT_TYPE); + public static final DataType TYPE_CALORIES_EXPENDED = new DataType("com.google.calories.expended", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_CALORIES); + public static final DataType TYPE_BASAL_METABOLIC_RATE = new DataType("com.google.calories.bmr", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_CALORIES); + public static final DataType TYPE_POWER_SAMPLE = new DataType("com.google.power.sample", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_WATTS); + public static final DataType TYPE_SENSOR_EVENTS = new DataType("com.google.sensor.events", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_SENSOR_TYPE, com.google.android.gms.fitness.data.Field.FIELD_TIMESTAMPS, com.google.android.gms.fitness.data.Field.FIELD_SENSOR_VALUES); + public static final DataType TYPE_HEART_RATE_BPM = new DataType("com.google.heart_rate.bpm", "https://www.googleapis.com/auth/fitness.heart_rate.read", "https://www.googleapis.com/auth/fitness.heart_rate.write", com.google.android.gms.fitness.data.Field.FIELD_BPM); + public static final DataType TYPE_RESPIRATORY_RATE = new DataType("com.google.respiratory_rate", "https://www.googleapis.com/auth/fitness.respiratory_rate.read", "https://www.googleapis.com/auth/fitness.respiratory_rate.write", com.google.android.gms.fitness.data.Field.FIELD_RESPIRATORY_RATE); + public static final DataType TYPE_LOCATION_SAMPLE = new DataType("com.google.location.sample", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_LATITUDE, com.google.android.gms.fitness.data.Field.FIELD_LONGITUDE, com.google.android.gms.fitness.data.Field.FIELD_ACCURACY, com.google.android.gms.fitness.data.Field.FIELD_ALTITUDE); + @Deprecated + public static final DataType TYPE_LOCATION_TRACK = new DataType("com.google.location.track", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_LATITUDE, com.google.android.gms.fitness.data.Field.FIELD_LONGITUDE, com.google.android.gms.fitness.data.Field.FIELD_ACCURACY, com.google.android.gms.fitness.data.Field.FIELD_ALTITUDE); + public static final DataType TYPE_DISTANCE_DELTA = new DataType("com.google.distance.delta", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_DISTANCE); + public static final DataType TYPE_SPEED = new DataType("com.google.speed", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_SPEED); + public static final DataType TYPE_CYCLING_WHEEL_REVOLUTION = new DataType("com.google.cycling.wheel_revolution.cumulative", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_REVOLUTIONS); + public static final DataType TYPE_CYCLING_WHEEL_RPM = new DataType("com.google.cycling.wheel_revolution.rpm", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_RPM); + public static final DataType TYPE_CYCLING_PEDALING_CUMULATIVE = new DataType("com.google.cycling.pedaling.cumulative", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_REVOLUTIONS); + public static final DataType TYPE_CYCLING_PEDALING_CADENCE = new DataType("com.google.cycling.pedaling.cadence", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_RPM); + public static final DataType TYPE_HEIGHT = new DataType("com.google.height", "https://www.googleapis.com/auth/fitness.body.read", "https://www.googleapis.com/auth/fitness.body.write", com.google.android.gms.fitness.data.Field.FIELD_HEIGHT); + public static final DataType TYPE_WEIGHT = new DataType("com.google.weight", "https://www.googleapis.com/auth/fitness.body.read", "https://www.googleapis.com/auth/fitness.body.write", com.google.android.gms.fitness.data.Field.FIELD_WEIGHT); + public static final DataType TYPE_BODY_FAT_PERCENTAGE = new DataType("com.google.body.fat.percentage", "https://www.googleapis.com/auth/fitness.body.read", "https://www.googleapis.com/auth/fitness.body.write", com.google.android.gms.fitness.data.Field.FIELD_PERCENTAGE); + public static final DataType TYPE_NUTRITION = new DataType("com.google.nutrition", "https://www.googleapis.com/auth/fitness.nutrition.read", "https://www.googleapis.com/auth/fitness.nutrition.write", com.google.android.gms.fitness.data.Field.FIELD_NUTRIENTS, com.google.android.gms.fitness.data.Field.FIELD_MEAL_TYPE, com.google.android.gms.fitness.data.Field.FIELD_FOOD_ITEM); + public static final DataType AGGREGATE_HYDRATION = new DataType("com.google.hydration", "https://www.googleapis.com/auth/fitness.nutrition.read", "https://www.googleapis.com/auth/fitness.nutrition.write", com.google.android.gms.fitness.data.Field.FIELD_VOLUME); + public static final DataType TYPE_WORKOUT_EXERCISE = new DataType("com.google.activity.exercise", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_EXERCISE, com.google.android.gms.fitness.data.Field.FIELD_REPETITIONS, com.google.android.gms.fitness.data.Field.FIELD_DURATION_OPTIONAL, com.google.android.gms.fitness.data.Field.FIELD_RESISTANCE_TYPE, com.google.android.gms.fitness.data.Field.FIELD_RESISTANCE); + public static final DataType TYPE_MOVE_MINUTES = new DataType("com.google.active_minutes", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_DURATION); + public static final DataType AGGREGATE_MOVE_MINUTES = TYPE_MOVE_MINUTES; + public static final DataType TYPE_DEVICE_ON_BODY = new DataType("com.google.device_on_body", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_PROBABILITY); + public static final DataType AGGREGATE_ACTIVITY_SUMMARY = new DataType("com.google.activity.summary", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_ACTIVITY, com.google.android.gms.fitness.data.Field.FIELD_DURATION, com.google.android.gms.fitness.data.Field.FIELD_NUM_SEGMENTS); + public static final DataType AGGREGATE_BASAL_METABOLIC_RATE_SUMMARY = new DataType("com.google.calories.bmr.summary", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_STEP_COUNT_DELTA = TYPE_STEP_COUNT_DELTA; + public static final DataType AGGREGATE_DISTANCE_DELTA = TYPE_DISTANCE_DELTA; + public static final DataType AGGREGATE_CALORIES_EXPENDED = TYPE_CALORIES_EXPENDED; + public static final DataType TYPE_HEART_POINTS = new DataType("com.google.heart_minutes", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_INTENSITY); + public static final DataType AGGREGATE_HEART_POINTS = new DataType("com.google.heart_minutes.summary", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_INTENSITY, com.google.android.gms.fitness.data.Field.FIELD_DURATION); + public static final DataType AGGREGATE_HEART_RATE_SUMMARY = new DataType("com.google.heart_rate.summary", "https://www.googleapis.com/auth/fitness.heart_rate.read", "https://www.googleapis.com/auth/fitness.heart_rate.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_LOCATION_BOUNDING_BOX = new DataType("com.google.location.bounding_box", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_LOW_LATITUDE, com.google.android.gms.fitness.data.Field.FIELD_LOW_LONGITUDE, com.google.android.gms.fitness.data.Field.FIELD_HIGH_LATITUDE, com.google.android.gms.fitness.data.Field.FIELD_HIGH_LONGITUDE); + public static final DataType AGGREGATE_POWER_SUMMARY = new DataType("com.google.power.summary", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_SPEED_SUMMARY = new DataType("com.google.speed.summary", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_BODY_FAT_PERCENTAGE_SUMMARY = new DataType("com.google.body.fat.percentage.summary", "https://www.googleapis.com/auth/fitness.body.read", "https://www.googleapis.com/auth/fitness.body.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_WEIGHT_SUMMARY = new DataType("com.google.weight.summary", "https://www.googleapis.com/auth/fitness.body.read", "https://www.googleapis.com/auth/fitness.body.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_HEIGHT_SUMMARY = new DataType("com.google.height.summary", "https://www.googleapis.com/auth/fitness.body.read", "https://www.googleapis.com/auth/fitness.body.write", com.google.android.gms.fitness.data.Field.FIELD_AVERAGE, com.google.android.gms.fitness.data.Field.FIELD_MAX, com.google.android.gms.fitness.data.Field.FIELD_MIN); + public static final DataType AGGREGATE_NUTRITION_SUMMARY = new DataType("com.google.nutrition.summary", "https://www.googleapis.com/auth/fitness.nutrition.read", "https://www.googleapis.com/auth/fitness.nutrition.write", com.google.android.gms.fitness.data.Field.FIELD_NUTRIENTS, com.google.android.gms.fitness.data.Field.FIELD_MEAL_TYPE); + public static final DataType TYPE_HYDRATION = AGGREGATE_HYDRATION; + public static final DataType TYPE_WORKOUT_SAMPLES = new DataType("com.google.activity.samples", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_ACTIVITY_CONFIDENCE); + public static final DataType TYPE_SLEEP_ATTRIBUTES = new DataType("com.google.internal.sleep_attributes", "https://www.googleapis.com/auth/fitness.sleep.read", "https://www.googleapis.com/auth/fitness.sleep.write", com.google.android.gms.fitness.data.Field.FIELD_FITNESS_SLEEP_ATTRIBUTES); + public static final DataType TYPE_SLEEP_SCHEDULE = new DataType("com.google.internal.sleep_schedule", "https://www.googleapis.com/auth/fitness.sleep.read", "https://www.googleapis.com/auth/fitness.sleep.write", com.google.android.gms.fitness.data.Field.FIELD_FITNESS_SLEEP_SCHEDULE); + public static final DataType TYPE_PACED_WALKING_ATTRIBUTES = new DataType("com.google.internal.paced_walking_attributes", "https://www.googleapis.com/auth/fitness.activity.read", "https://www.googleapis.com/auth/fitness.activity.write", com.google.android.gms.fitness.data.Field.FIELD_FITNESS_PACED_WALKING_ATTRIBUTES); + public static final DataType TYPE_TIME_ZONE_CHANGE = new DataType("com.google.time_zone_change", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_ZONE_ID); + public static final DataType TYPE_MET = new DataType("com.google.internal.met", "https://www.googleapis.com/auth/fitness.location.read", "https://www.googleapis.com/auth/fitness.location.write", com.google.android.gms.fitness.data.Field.FIELD_MET); + + @Field(1) + public String packageName; + @Field(2) + public List fields; + @Field(3) + public String name; + @Field(4) + public String value; + + public DataType(String packageName, String name, String value, com.google.android.gms.fitness.data.Field... fieldArr) { + this.packageName = packageName; + this.fields = Collections.unmodifiableList(Arrays.asList(fieldArr)); + this.name = name; + this.value = value; + } + + public DataType() { + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataType.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Device.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Device.java new file mode 100644 index 0000000000..558569cde7 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Device.java @@ -0,0 +1,35 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +@SafeParcelable.Class +public class Device extends AbstractSafeParcelable { + + @Field(1) + public String manufacturer; + @Field(2) + public String model; + @Field(4) + public String uid; + @Field(5) + public int type; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(Device.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Field.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Field.java new file mode 100644 index 0000000000..a8b951a1d6 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Field.java @@ -0,0 +1,152 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +@SafeParcelable.Class +public class Field extends AbstractSafeParcelable { + + public static final com.google.android.gms.fitness.data.Field FIELD_ACTIVITY = formatIntField("activity"); + public static final com.google.android.gms.fitness.data.Field FIELD_SLEEP_SEGMENT_TYPE = formatIntField("sleep_segment_type"); + public static final com.google.android.gms.fitness.data.Field FIELD_CONFIDENCE = formatFloatField("confidence"); + public static final com.google.android.gms.fitness.data.Field FIELD_STEPS = formatIntField("steps"); + @Deprecated + public static final com.google.android.gms.fitness.data.Field FIELD_STEP_LENGTH = formatFloatField("step_length"); + public static final com.google.android.gms.fitness.data.Field FIELD_DURATION = formatIntField("duration"); + public static final com.google.android.gms.fitness.data.Field FIELD_DURATION_OPTIONAL = formatIntOptionalField("duration"); + public static final com.google.android.gms.fitness.data.Field FIELD_ACTIVITY_DURATION_ASCENDING = formatMapField("activity_duration.ascending"); + public static final com.google.android.gms.fitness.data.Field FIELD_ACTIVITY_DURATION_DESCENDING = formatMapField("activity_duration.descending"); + public static final com.google.android.gms.fitness.data.Field FIELD_BPM = formatFloatField("bpm"); + public static final com.google.android.gms.fitness.data.Field FIELD_RESPIRATORY_RATE = formatFloatField("respiratory_rate"); + public static final com.google.android.gms.fitness.data.Field FIELD_LATITUDE = formatFloatField("latitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_LONGITUDE = formatFloatField("longitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_ACCURACY = formatFloatField("accuracy"); + public static final com.google.android.gms.fitness.data.Field FIELD_ALTITUDE = formatFloatOptionalField("altitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_DISTANCE = formatFloatField("distance"); + public static final com.google.android.gms.fitness.data.Field FIELD_HEIGHT = formatFloatField("height"); + public static final com.google.android.gms.fitness.data.Field FIELD_WEIGHT = formatFloatField("weight"); + public static final com.google.android.gms.fitness.data.Field FIELD_PERCENTAGE = formatFloatField("percentage"); + public static final com.google.android.gms.fitness.data.Field FIELD_SPEED = formatFloatField("speed"); + public static final com.google.android.gms.fitness.data.Field FIELD_RPM = formatFloatField("rpm"); + public static final com.google.android.gms.fitness.data.Field FIELD_FITNESS_GOAL_V2 = formatObjectField("google.android.fitness.GoalV2"); + public static final com.google.android.gms.fitness.data.Field FIELD_FITNESS_DEVICE = formatObjectField("google.android.fitness.Device"); + public static final com.google.android.gms.fitness.data.Field FIELD_REVOLUTIONS = formatIntField("revolutions"); + public static final com.google.android.gms.fitness.data.Field FIELD_CALORIES = formatFloatField("calories"); + public static final com.google.android.gms.fitness.data.Field FIELD_WATTS = formatFloatField("watts"); + public static final com.google.android.gms.fitness.data.Field FIELD_VOLUME = formatFloatField("volume"); + public static final com.google.android.gms.fitness.data.Field FIELD_MEAL_TYPE = formatIntOptionalField("meal_type"); + public static final com.google.android.gms.fitness.data.Field FIELD_FOOD_ITEM = formatStringOptionalField("food_item"); + public static final com.google.android.gms.fitness.data.Field FIELD_NUTRIENTS = formatMapField("nutrients"); + public static final com.google.android.gms.fitness.data.Field FIELD_EXERCISE = formatStringField("exercise"); + public static final com.google.android.gms.fitness.data.Field FIELD_REPETITIONS = formatIntOptionalField("repetitions"); + public static final com.google.android.gms.fitness.data.Field FIELD_RESISTANCE = formatFloatOptionalField("resistance"); + public static final com.google.android.gms.fitness.data.Field FIELD_RESISTANCE_TYPE = formatIntOptionalField("resistance_type"); + public static final com.google.android.gms.fitness.data.Field FIELD_NUM_SEGMENTS = formatIntField("num_segments"); + public static final com.google.android.gms.fitness.data.Field FIELD_AVERAGE = formatFloatField("average"); + public static final com.google.android.gms.fitness.data.Field FIELD_MAX = formatFloatField("max"); + public static final com.google.android.gms.fitness.data.Field FIELD_MIN = formatFloatField("min"); + public static final com.google.android.gms.fitness.data.Field FIELD_LOW_LATITUDE = formatFloatField("low_latitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_LOW_LONGITUDE = formatFloatField("low_longitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_HIGH_LATITUDE = formatFloatField("high_latitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_HIGH_LONGITUDE = formatFloatField("high_longitude"); + public static final com.google.android.gms.fitness.data.Field FIELD_OCCURRENCES = formatIntField("occurrences"); + public static final com.google.android.gms.fitness.data.Field FIELD_SENSOR_TYPE = formatIntField("sensor_type"); + public static final com.google.android.gms.fitness.data.Field FIELD_TIMESTAMPS = formatLongField("timestamps"); + public static final com.google.android.gms.fitness.data.Field FIELD_SENSOR_VALUES = formatDoubleField("sensor_values"); + public static final com.google.android.gms.fitness.data.Field FIELD_INTENSITY = formatFloatField("intensity"); + public static final com.google.android.gms.fitness.data.Field FIELD_ACTIVITY_CONFIDENCE = formatMapField("activity_confidence"); + public static final com.google.android.gms.fitness.data.Field FIELD_PROBABILITY = formatFloatField("probability"); + public static final com.google.android.gms.fitness.data.Field FIELD_FITNESS_SLEEP_ATTRIBUTES = formatObjectField("google.android.fitness.SleepAttributes"); + public static final com.google.android.gms.fitness.data.Field FIELD_FITNESS_SLEEP_SCHEDULE = formatObjectField("google.android.fitness.SleepSchedule"); + @Deprecated + public static final com.google.android.gms.fitness.data.Field FIELD_CIRCUMFERENCE = formatFloatField("circumference"); + public static final com.google.android.gms.fitness.data.Field FIELD_FITNESS_PACED_WALKING_ATTRIBUTES = formatObjectField("google.android.fitness.PacedWalkingAttributes"); + public static final com.google.android.gms.fitness.data.Field FIELD_ZONE_ID = formatStringField("zone_id"); + public static final com.google.android.gms.fitness.data.Field FIELD_MET = formatFloatField("met"); + + public static final int FORMAT_INT32 = 1; + public static final int FORMAT_FLOAT = 2; + public static final int FORMAT_STRING = 3; + public static final int FORMAT_MAP = 4; + public static final int FORMAT_LONG = 5; + public static final int FORMAT_DOUBLE = 6; + public static final int FORMAT_OBJECT = 7; + + @Field(1) + public String name; + @Field(2) + public int format; + @Field(3) + public Boolean optional; + + public Field() { + } + + public Field(String name, int format, Boolean optional) { + this.name = name; + this.format = format; + this.optional = optional; + } + + public Field(String name, int format) { + this(name, format, null); + } + + public static com.google.android.gms.fitness.data.Field formatIntField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_INT32); + } + + public static com.google.android.gms.fitness.data.Field formatFloatField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_FLOAT); + } + + public static com.google.android.gms.fitness.data.Field formatStringField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_STRING); + } + + public static com.google.android.gms.fitness.data.Field formatMapField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_MAP); + } + + public static com.google.android.gms.fitness.data.Field formatLongField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_LONG); + } + + public static com.google.android.gms.fitness.data.Field formatDoubleField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_DOUBLE); + } + + public static com.google.android.gms.fitness.data.Field formatObjectField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_OBJECT); + } + + public static com.google.android.gms.fitness.data.Field formatIntOptionalField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_INT32, true); + } + + public static com.google.android.gms.fitness.data.Field formatFloatOptionalField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_FLOAT, true); + } + + public static com.google.android.gms.fitness.data.Field formatStringOptionalField(String name) { + return new com.google.android.gms.fitness.data.Field(name, FORMAT_STRING, true); + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(com.google.android.gms.fitness.data.Field.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Session.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Session.java new file mode 100644 index 0000000000..33132cb9b3 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/data/Session.java @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.data; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +@SafeParcelable.Class +public class Session extends AbstractSafeParcelable { + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(Session.class); +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataDeleteRequest.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataDeleteRequest.java new file mode 100644 index 0000000000..56f22e2522 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataDeleteRequest.java @@ -0,0 +1,70 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; +import com.google.android.gms.fitness.data.DataSource; +import com.google.android.gms.fitness.data.DataType; +import com.google.android.gms.fitness.data.Session; +import com.google.android.gms.fitness.internal.IStatusCallback; + +import org.microg.gms.utils.ToStringHelper; + +import java.util.List; + +@SafeParcelable.Class +public class DataDeleteRequest extends AbstractSafeParcelable { + @Field(1) + public long startTimeMillis; + @Field(2) + public long endTimeMillis; + @Field(3) + public List dataSources; + @Field(4) + public List dataTypes; + @Field(5) + public List sessions; + @Field(6) + public boolean deleteAllData; + @Field(7) + public boolean deleteAllSessions; + @Field(8) + public IStatusCallback callback; + @Field(10) + public boolean deleteByTimeRange; + @Field(11) + public boolean enableLocationCleanup; + + @NonNull + @Override + public String toString() { + return ToStringHelper.name("DataDeleteRequest") + .field("startTimeMillis", startTimeMillis) + .field("endTimeMillis", endTimeMillis) + .field("dataSources", dataSources) + .field("dataTypes", dataTypes) + .field("sessions", sessions) + .field("deleteAllData", deleteAllData) + .field("deleteAllSessions", deleteAllSessions) + .field("callback", callback) + .field("deleteByTimeRange", deleteByTimeRange) + .field("enableLocationCleanup", enableLocationCleanup) + .end(); + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataDeleteRequest.class); +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataInsertRequest.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataInsertRequest.java new file mode 100644 index 0000000000..504dd0c487 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataInsertRequest.java @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; +import com.google.android.gms.fitness.data.DataSet; +import com.google.android.gms.fitness.internal.IStatusCallback; + +@SafeParcelable.Class +public class DataInsertRequest extends AbstractSafeParcelable { + @Field(1) + public DataSet dataSet; + @Field(2) + public IStatusCallback callback; + @Field(4) + public boolean isPrimary; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataInsertRequest.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadRequest.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadRequest.java new file mode 100644 index 0000000000..513f9e73ea --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadRequest.java @@ -0,0 +1,59 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; +import com.google.android.gms.fitness.data.DataSource; + +import com.google.android.gms.fitness.data.DataType; +import com.google.android.gms.fitness.internal.IDataReadCallback; + +import java.util.List; + +@SafeParcelable.Class +public class DataReadRequest extends AbstractSafeParcelable { + + @Field(1) + public List dataTypes; + @Field(2) + public List dataSources; + @Field(3) + public long startTimeMillis; + @Field(4) + public long endTimeMillis; + @Field(5) + public List aggregatedDataTypes; + @Field(6) + public List aggregatedDataSources; + @Field(7) + public int bucketType; + @Field(8) + public long bucketDurationMillis; + @Field(9) + public DataSource activityDataSource; + @Field(10) + public int limit; + @Field(12) + public boolean flushBufferBeforeRead; + @Field(13) + public boolean areServerQueriesEnabled; + @Field(14) + public IDataReadCallback callback; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataReadRequest.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadResult.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadResult.java new file mode 100644 index 0000000000..dd091a6543 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/DataReadResult.java @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.api.Status; +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; +import com.google.android.gms.fitness.data.Bucket; +import com.google.android.gms.fitness.data.DataSet; + +import java.util.List; + +@SafeParcelable.Class +public class DataReadResult extends AbstractSafeParcelable { + + @Field(1) + public List rawDataSets; + @Field(2) + public Status status; + @Field(3) + public List rawBuckets; + @Field(5) + public int batchCount; + @Field(6) + public List uniqueDataSources; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DataReadResult.class); + +} diff --git a/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/GetSyncInfoRequest.java b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/GetSyncInfoRequest.java new file mode 100644 index 0000000000..1954dc4fb3 --- /dev/null +++ b/play-services-fitness/src/main/java/com/google/android/gms/fitness/request/GetSyncInfoRequest.java @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.fitness.request; + +import android.os.Parcel; + +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; +import com.google.android.gms.fitness.internal.ISyncInfoCallback; + +@SafeParcelable.Class +public class GetSyncInfoRequest extends AbstractSafeParcelable { + + @Field(1) + public ISyncInfoCallback callback; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(GetSyncInfoRequest.class); +} + diff --git a/settings.gradle b/settings.gradle index 8da636b3a1..0c2ee077ef 100644 --- a/settings.gradle +++ b/settings.gradle @@ -59,6 +59,7 @@ include ':play-services-tasks' include ':play-services-vision' include ':play-services-vision-common' include ':play-services-wearable' +include ':play-services-fitness' include ':play-services-api' include ':play-services'