Health Connect, Android 14 ile birlikte ortak bir veri depolama katmanı olarak sunuluyor. ayrıntılı izinlerle korunan ve Android sistem uygulaması (bu belge boyunca "çerçeve" olarak anılacaktır) modülünü kullanabilirsiniz.
Geliştiriciler, Health Connect APK'sını (Android 13) geriye dönük olarak uyumluluk katmanını kullandı. Çerçeve modeli, değeri Önceki APK sürümüyle% 100 özellik denkliği.
Android 13'ten 14'e geçiş sırasında olabildiğince sorunsuz ve sezgisel bir kullanıcı deneyimi sunmaya devam ediyoruz.
Bu belgede taşıma planı özetlenmekte ve bazı taşıma örnekleri verilmiştir. komutlarını içerir ve Health Connect API'ye gidin.
Taşıma planı
- Android 14 kullanıma sunulduktan sonra Google, Health Connect'i sunmaya başlayacak. Android sistem uygulaması olarak.
- Daha sonra, özellik denkliği sağlandığında veriler APK'dan doldurulur.
- Tüm giriş noktaları, sistem uygulaması kullanıcı arayüzünü hedefler.
- Veri taşıma işlemi başlar. Taşıma işlemi devam ederken modül API'leri "Taşıma İşlemi Devam Ediyor" ile askıya alınır durumu. Bu Health Connect kullanıcı arayüzünde de görünür hale gelir.
- Taşıma işlemi tamamlandıktan sonra APK kaldırılabilir.
Örnek taşıma senaryoları
Aşağıda, her iki web sitesi için de taşıma sürecini açıklayan örnek senaryolar verilmiştir:
interval
ve series
veri türleri:
1. Örnek - Çalışan (aralık verileri)
Bir kullanıcı, her gün 1 saat boyunca 10 yıllık koşu rekoru toplamıştır. Bu şuna eşittir:
- Egzersiz Oturumu Kayıtları: 365 * 10 * 1
- Adımlar: 365 * 10 * 1
- Kalori: 365 * 10 * 1
- Toplam = 365 * 10 * 3 (365 * 30) = 10.150
1 parçanın 3.000 kayda eşit olduğu düşünüldüğünde, yukarıdaki verilerin toplamı yaklaşık 4. parçalar.
Dahili testlerimiz, tipik bir yığının yaklaşık olarak 28 saat harcamış ikincisi de eklenir. Bu yüzden yukarıdaki veriler yaklaşık olarak 4 saniye içinde taşınır. saniye.
2. Örnek: Nabız (seri verileri)
Bir kullanıcı 5 yıllık nabız verisi toplamış (her bir kayıt için dakika) toplam 2.628.000 kayıt.
Parça başına 3.000 kayıtta, veriler 876 parçaya dağıtılır. Verilen 1 yığının eklenmesi yaklaşık saniye sürerse veriler taşınır elde edebilirsiniz.
Önerilen taşıma akışı
Anında taşıma yöntemini tercih etmeye karar verdik. Pratikte bu, cihaz yeni sürüme geçer geçmez APK'nın devre dışı kalacağı anlamına gelir Android 14, kullanıcı müdahalesini minimum düzeyde tutar.
Genel bir taşıma akışına göz atalım:
- Kullanıcı, cihazını Android 14'e yükseltir.
- Jetpack 14, kullanıcıyı modül API'lerine yönlendiriyor ve taşıma işlemi devam ediyor.
- Taşıma süreci, modül sürümü özellikle uyumlu olduğunda başlar
APK ile birlikte kullanın (ör. modül sürümü aynı özellik kümesini içeriyorsa veya
daha fazla. Taşıma işlemi başladıktan sonra APK, izinleri taşır
ve verileri içerebilir.
- Her iki sürüm de özelliklerle uyumlu değilse modül sürümü yükseltilmesi gerekiyor. Yükseltme işlemi tamamlandığında taşıma işlemi, başlar.
- Taşıma işlemi tamamlandıktan sonra durum "Migration" olarak değiştirilir. Tamamlandı" olarak kabul edilir ve modül API'lerinin engellemesi kaldırılır.
- APK artık kaldırılabilir.
Taşıma kullanıcı arayüzü öğeleri
Kullanıcı eğitimi için çerçeve modülünde aşağıdaki ekranlar gösterilir hem taşımadan önce hem de taşıma sırasında:
Şekil 1. Health Connect APK'sı "taşımaya duyarlı" değilse bir istem gösterilir kullanıcıya APK'yı güncellemesi için talimat verir. Kullanıcı güncellemeyi reddederse modülü çalışmaya devam ederek izin ve veri toplamaya başlar:
.
Şekil 2. Çerçeve modülünün özellik haline gelmesi için güncellenmesi gerekiyorsa
uyumlu olduğunda, kullanıcıdan güncellemeyi gerçekleştirmesini isteyen bir istem görüntülenir ve
yeniden başlatmalarını isteyebilir. Kullanıcı güncellemeyi reddederse modül devam eder
işlevini yerine getirerek izinleri ve verileri toplamaya başlar:
.
Şekil 3. Taşıma işlemi sırasında bir döner simge ve verilerin senkronize edildiğini açıklayan metin gösterilir:
Tekilleştirilmiş veriler
Çerçeve modülü, veri ve izin almaya başladıysa Herhangi bir taşıma veya bulut tabanlı geri yükleme işlemi gerçekleşmeden önce geçerlidir.
İzinler
Çerçeve modülünde izinler varsa yinelenen APK'dan alınan izinler taşıma işlemi sırasında yoksayılır.
Veri
Taşıma sırasında, APK kaynaklı yinelenen veriler yoksayılır. Daha fazla en son verileri tercih edilir.
Kayıt kimliğini clientRecordId
tarafından sağlanırsa veriler tekilleştirilir.
gerekir. Değilse zaman aralıkları (dahili reklamlar için startTime
ve endTime
)
kayıtları ve anında kayıtlar için time
) verilerin yanı sıra anahtar olarak kabul edilir.
paket adını ve türünü belirtmelidir.
Jetpack SDK'daki değişiklikler
Jetpack SDK, web uygulamaları için hem Health hem de APK ve Health Connect çerçevesi API'lerini bağlayın.
OEM'ler, Jetpack 13 ile entegrasyona başlayabilir. Böylece, Jetpack 14 yeni kitaplığı uygun hale getirebilir ve içeriği Android 14.
SDK'nın Android 14. Mevcut entegrasyonunuzda bazı değişiklikler yapmanız gerekiyor: geçişin sorunsuz olmasını sağlar.
İzin beyanı
Android 13'te izinleri bir özel izin biçimi kullanarak tanımlarsınız. manifesto ile bağlantılı bir kaynak dosyası oluşturun:
#AndroidManifest.xml
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
</intent-filter>
<meta-data
android:name="health_permissions"
android:resource="@array/health_permissions"/>
</activity>
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
#health_permissions.xml
<resources>
<array name="health_permissions">
<item>androidx.health.permission.SleepSession.READ</item>
<item>androidx.health.permission.SleepStage.READ</item>
<item>androidx.health.permission.Weight.READ</item>
<item>androidx.health.permission.Weight.WRITE</item>
</array>
</resources>
Geliştiricilerin Android 14'ü desteklemek için standart izinlere geçmesi gerekir biçim:
#AndroidManifest.xml
<uses-permission android:name=”android.permission.health.READ_SLEEP” />
<uses-permission android:name=”android.permission.health.READ_WEIGHT” />
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT” />
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>
<queries>
<package android:name="com.google.android.apps.healthdata"/>
</queries>
Health Connect'i aç
Üçüncü taraf uygulamalarının çoğunda Health Connect uygulamasını açan bir düğme bulunur. Örneğin: 'Erişimi Yönet' düğmesi ekleyin.
Android 13'te Health Connect uygulamasını paket adını kullanarak açarsınız ya da
androidx.health.ACTION_HEALTH_CONNECT_SETTINGS
işlemiyle.
Android 14'te, Jetpack SDK'da belirtilen bir intent işlemi kullanmanız gerekir. Android sürümüne göre farklı değerlere sahiptir:
@get:JvmName("getHealthConnectSettingsAction")
@JvmStatic val
ACTION_HEALTH_CONNECT_SETTINGS
Health Connect istemcisini alma
Jetpack 11'de kullanıma sunulan sdkStatus
adlı tek bir API'yi oluşturduk.
kullanımdan kaldırılan diğer iki API'yi değiştirin - IsSdkSupported()
ve
isProviderAvailable()
.
Session record API değişiklikleri
alpha10 kapsamında dört ExerciseSession
alt tür silindi
sürüm:
ExerciseEvent
ExerciseLaps
ExerciseRepetitions
SwimmingStrokes
ExerciseSessionRecord
olduğu gibi, SleepStage
da
SleepSession
.
Hem ExerciseSessionRecord
alt tür hem de SleepSession
değişiklik
kapsamında yayınlanmıştır.
Egzersiz oturumu türü güncellemesi
Aşağıdaki egzersiz oturumu türleri artık desteklenmeyecek ancak eklenecek segment türü olarak şunlar olabilir:
EXERCISE_TYPE_BACK_EXTENSION
EXERCISE_TYPE_BARBELL_SHOULDER_PRESS
EXERCISE_TYPE_BENCH_PRESS
EXERCISE_TYPE_BENCH_SIT_UP
EXERCISE_TYPE_BURPEE
EXERCISE_TYPE_CRUNCH
EXERCISE_TYPE_DEADLIFT
EXERCISE_TYPE_DUMBBELL_CURL_LEFT_ARM
EXERCISE_TYPE_DUMBBELL_CURL_RIGHT_ARM
EXERCISE_TYPE_DUMBBELL_FRONT_RAISE
EXERCISE_TYPE_DUMBBELL_LATERAL_RAISE
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM
EXERCISE_TYPE_FORWARD_TWIST
EXERCISE_TYPE_JUMPING_JACK
EXERCISE_TYPE_JUMP_ROPE
EXERCISE_TYPE_LAT_PULL_DOWN
EXERCISE_TYPE_LUNGE
EXERCISE_TYPE_PLANK
EXERCISE_TYPE_SQUAT
EXERCISE_TYPE_UPPER_TWIST
Değiştirme türleri:
EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
EXERCISE_TYPE_STRENGTH_TRAINING
EXERCISE_TYPE_CALISTHENICS
Değişiklik günlüğü işleme
Değişiklik günlükleri, APK'dan Android 14'e geçiş kapsamında taşınmaz.
Taşıma tamamlandıktan sonra TOKEN_EXPIRED
veya
TOKEN_INVALID
istisna. Bunlar aşağıdaki yöntemlerle ele alınmalıdır (
tercih sırasına göre):
1. "Son okumadan" bu yana geçen tüm verileri okuma ve tekilleştirme veya zaman damgası 30 gün
Uygulamanın Health Connect'teki en son veri okumasına ilişkin bir zaman damgasını depolayın. Jeton üzerinde sona erdiğinde, veriler bu değerden veya önceki 30 gün üzerinden yeniden okunmalıdır. (hangisi minimuma eşitse) ve daha önce okunmuş verilerle karşılaştırılarak tekilleştirilmesi kullanabilirsiniz.
2. "Son okumadan" bu yana veri okuma zaman damgası
Verilerin Health Connect'ten en son ne zaman okunduğunu gösteren bir zaman damgası oluşturun. ve jetonun süresi dolduktan sonra, bu değerden sonraki tüm verileri okur.
3. Son 30 güne ait verileri silip yeniden okuma
Son 30 günde Health Connect'ten okunan tüm verileri silme ve okuma bu veriyi tekrar kontrol edin (ör. uygulamalar Sağlık uygulamasıyla ilk Bağlan) tıklayın.
4. Hiçbir şey yapmama (ör. son 30 güne ait verileri yeniden okuma ve tekilleştirme yapmayın)
Bu, görüntüleme riskiyle ilişkili olan son çare olarak kullanılmalıdır. yinelenen veriler. Geliştiriciler, UUID'lerin açık kaynaklandığı düşünülerek 1-3 arasındaki seçenekleri incelemelidir. zaten yürürlükte olmalıdır.
Jetpack SDK ile Android 14 API'lerini test etme
7 Haziran 2023'te, Android 14 Jetpack SDK'sı Android 14'ün Beta 3 sürümü. Derlemeye başlamak için: Android 14 Jetpack SDK'yı kullanabilmek için Android 14 gerekir.
Çözümünüzü Android Developer Preview derlemeleriyle test etmek isterseniz lütfen yardım almak için Google İletişim Sorumlunuzla iletişime geçin.
Çözümünüzü Beta 3 sürümüne göre test etmek istiyorsanız APK'nızda aşağıdaki değişiklikler:
compileSDKPreview = UpsideDownCake
ayarla.- Manifest dosyasını, Android 14'e yönelik bir intent içerecek şekilde güncelleyin:
# AndroidManifest.xml
<uses-permission android:name=”android.permission.health.READ_SLEEP”/>
<uses-permission android:name=”android.permission.health.READ_WEIGHT”/>
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT”/>
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
</intent-filter>
</activity>
<activity-alias>
android:name="AndroidURationaleActivity"
android:exported="true"
android:targetActivity=".RationaleActivity"
android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
</intent-filter>
</activity-alias>
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
OEM özelleştirme
Android 14'te Health Connect gizlilik ve verileri yönetmek için (Sistem Ayarları) bölümüne gidin.
Veri yönetimi ve izin ekranlarının, Health Connect, özel yer paylaşımlarını kullanarak OEM teması oluşturma olanağı sunar.
OEM stilleriyle ilgili dokümanlar için Health Connect Google Mobil Hizmetleri bölümüne bakın dokümanlarına göz atın.