Health Connect, Android 14 ile birlikte tüketici sağlığı ve fitness verileri için ortak bir veri depolama katmanı olarak paketlenecek. Bu katman, ayrıntılı izinlerle korunacak ve Android sistem uygulaması (bu belgede "framework" modülü olarak anılacaktır) olarak erişilebilecek.
Geliştiriciler, Health Connect APK'sını (Android 13) çerçeve modeli için geriye dönük uyumluluk katmanı olarak değerlendirmelidir. Çerçeve modeli, APK'sının önceki sürümüyle% 100 özellik eşliğine sahip olacaktır.
Android 13'ten 14'e geçiş sırasında kullanıcı deneyiminin mümkün olduğunca sorunsuz ve sezgisel kalması son derece önemlidir.
Bu belgede, taşıma planı özetlenmekte, bazı örnek taşıma senaryoları verilmekte ve Health Connect API'ye erişimi kolaylaştıran Jetpack SDK'sında yapılan değişiklikler listelenmektedir.
Taşıma planı
- Android 14 yayınlandıktan sonra Google, Health Connect'i Android sistem uygulaması olarak sunmaya başlayacak.
- Özellik eşliği sağlandıktan sonra 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 işlemi devam ediyor" durumuyla askıya alınır. Bu bilgi, Health Connect kullanıcı arayüzünde de görünür.
- Taşıma işlemi tamamlandıktan sonra APK kaldırılabilir.
Örnek taşıma senaryoları
Aşağıda, hem interval
hem de series
veri türleri için taşıma sürecini açıklayan bazı örnek senaryolar verilmiştir:
1. örnek: Koşu (aralık verileri)
Bir kullanıcı, her gün 1 saat koşarak 10 yıllık koşu kayıtları topladı. Bu, aşağıdakilere eşittir:
- Egzersiz seansı kayıtları: 365 * 10 * 1
- Adımlar: 365 * 10 * 1
- Kalori: 365 * 10 * 1
- Toplam = 365 * 10 * 3 (365 * 30) = 10.950
1 parçanın 3.000 kayda eşit olduğu göz önüne alındığında, veriler yaklaşık 4 parça tutar.
Dahili testlerimiz, tipik bir parçanın eklenmesinin yaklaşık bir saniye sürdüğünü doğruladı. Bu nedenle, örnekteki veriler yaklaşık 4 saniyede taşınır.
2. örnek: Nabız (seri verileri)
Bir kullanıcı, toplam 2.628.000 kayıtla 5 yıllık nabız verisi (her dakika bir kayıt oluşturularak) topladı.
Parça başına 3.000 kayıtla veriler 876 parçaya dağıtılır. 1 parçanın eklenmesi yaklaşık bir saniye sürdüğünden veriler 15 dakikadan kısa sürede taşınır.
Önerilen taşıma akışı
Anında taşıma seçeneğini kullanmaya karar verdik. Pratik olarak bu, cihaz Android 14'e yükseltilir yükseltilmez APK'nın etkinliğini kaybedeceği anlamına gelir. Bu işlem için kullanıcı etkileşimi minimum düzeyde olur.
Genel taşıma akışı şu şekildedir:
- Kullanıcı, cihazını Android 14'e yükseltir.
- Jetpack 1.4, kullanıcıyı modül API'lerine yönlendirir ve taşıma işlemi devam ederken kullanıcıyı engeller.
- Taşıma işlemi, modül sürümü APK ile özellik açısından uyumlu olduğunda (yani modül sürümü aynı özellik kümesini veya daha fazlasını içerdiğinde) başlar. Taşıma işlemi başladıktan sonra APK, izinleri ve verileri taşır.
- Her iki sürüm de özellik uyumlu değilse modül sürümünün yükseltilmesi gerekir. Yükseltme tamamlandıktan sonra taşıma işlemi başlar.
- Taşıma işlemi tamamlandıktan sonra durum "Taşıma Tamamlandı" olarak değişir ve modül API'lerinin engeli kaldırılır.
- APK artık kaldırılabilir.
Taşıma kullanıcı arayüzü öğeleri
Aşağıdaki ekranlar, hem taşıma işleminden önce hem de taşıma işlemi sırasında kullanıcıları bilgilendirmek amacıyla çerçeve modülü tarafından gösterilir:
Şekil 1. Health Connect APK'sı "taşıma işlemine uygun" değilse kullanıcıya APK'yı güncellemesini isteyen bir istem gösterilir. Kullanıcı güncellemeyi reddederse modül çalışmaya devam eder ve izinler ile veriler biriktirmeye başlar.

Şekil 2. Çerçevenin özellik uyumlu olması için güncellenmesi gerekiyorsa kullanıcıdan güncellemeyi yapıp cihazını yeniden başlatmasını isteyen bir istem gösterilir. Kullanıcı güncellemeyi reddederse modül çalışmaya devam eder ve izinlerle verileri biriktirmeye başlar.

3.Şekil Taşıma işlemi sırasında, verilerin senkronize edildiğini açıklayan metinle birlikte bir yükleme simgesi gösterilir.

Tekilleştirilmiş veriler
Çerçeve modülü, herhangi bir taşıma veya bulut tabanlı geri yükleme işlemi yapılmadan önce veri ve izinleri almaya başladıysa aşağıdaki kurallar geçerlidir.
İzinler
İzinler çerçeve modülünde mevcutsa APK'dan alınan tüm yinelenen izinler taşıma işlemi sırasında yoksayılır.
Veri
Taşıma sırasında, APK'dan kaynaklanan yinelenen veriler yoksayılır. Modüldeki daha yeni verilere öncelik verilir.
Kayıt kimliği istemci tarafından sağlanırsa veriler clientRecordId
üzerinde tekilleştirilir. Aksi takdirde, zaman aralıkları (dahili kayıtlar için startTime
ve endTime
, anlık kayıtlar için time
) uygulamanın veri türü ve paket adıyla birlikte anahtar olarak kabul edilir.
Jetpack SDK'sındaki değişiklikler
Jetpack SDK, hem Health Connect APK'sı hem de Health Connect çerçeve API'leri için ortak entegrasyon noktası olarak kullanılır.
OEM'ler, Jetpack 14 kullanıma sunulduğunda yeni kitaplığı uygun hale getirebilmek ve Android 14'te derleyebilmek için Jetpack 13 ile entegrasyona başlayabilir.
Android 14'e geçişi destekleyen yeni bir SDK sürümü yayınlayacağız. Sorunsuz bir geçiş için mevcut entegrasyonunuzda bazı değişiklikler yapmanız gerekir.
İzin beyanı
Android 13'te izinleri, manifeste bağlı bir kaynak dosyasında özel izin biçimi kullanarak beyan edersiniz:
#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>
Android 14'ü desteklemek için geliştiricilerin standart izin biçimine geçmesi gerekir:
#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çın.
Çoğu üçüncü taraf uygulamasında Health Connect uygulamasını açan bir düğme bulunur. Örneğin, Fitbit'teki "Erişimi Yönet" düğmesi.
Android 13'te Health Connect uygulamasını paket adını kullanarak veya androidx.health.ACTION_HEALTH_CONNECT_SETTINGS
işlemiyle açabilirsiniz.
Android 14'te, Jetpack SDK'sında belirtilen bir amaç işlemi kullanmanız gerekir. Bu işlemin değerleri, üzerinde işlem yaptığı Android sürümüne göre değişir:
@get:JvmName("getHealthConnectSettingsAction")
@JvmStatic val
ACTION_HEALTH_CONNECT_SETTINGS
Health Connect istemcisini edinme
Diğer iki kullanımdan kaldırılan API'nin (IsSdkSupported()
ve isProviderAvailable()
) yerini alacak sdkStatus
adlı tek bir API oluşturduk. Bu API, Jetpack 11'de kullanılabilir.
Oturum kaydı API'sinde yapılan değişiklikler
Alfa10 sürümü kapsamında dört ExerciseSession
alt türü silindi:
ExerciseEvent
ExerciseLaps
ExerciseRepetitions
SwimmingStrokes
ExerciseSessionRecord
'da olduğu gibi SleepStage
da SleepSession
'nin alt türü olacak.
Hem ExerciseSessionRecord
alt türleri hem de SleepSession
değişiklikleri, Nisan SDK güncellemesi kapsamında yayınlanacak.
Egzersiz oturumu türü güncellemesi
Aşağıdaki egzersiz oturumu türleri artık desteklenmeyecek ve daha sonra segment türleri olarak eklenecektir:
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 işlemi tamamlandıktan sonra TOKEN_EXPIRED
veya TOKEN_INVALID
istisnaları almaya başlarsınız. Bunlar aşağıdaki şekillerde ele alınmalıdır (tercih sırasına göre):
1. "Son okuma" zaman damgasından bu yana veya son 30 gün içindeki tüm verileri okuyup tekilleştirme
Bir uygulamanın Health Connect'ten en son veri okuduğu zamanın zaman damgasını saklar. Jetonun süresi dolduğunda veriler, bu değerden veya önceki 30 günden (hangisi minimuma eşitse) yeniden okunmalı ve UUID kullanılarak daha önce okunan verilerle tekilleştirilmelidir.
2. "Son okuma" zaman damgasından itibaren verileri okuma
Verilerin Health Connect'ten en son ne zaman okunduğunu gösteren bir zaman damgası oluşturun ve jetonun süresi dolduğunda bu değerden sonraki tüm verileri okuyun.
3. Son 30 güne ait verileri silip yeniden okuma
Health Connect'ten son 30 gün içinde okunan tüm verileri silip bu verilerin tamamını tekrar okuyun (ör. uygulamalar ilk kez Health Connect ile entegre edildiğinde yapılan işlem).
4. Hiçbir şey yapmayın (ör. son 30 güne ait verileri yeniden okuyun ve tekilleştirme yapmayın)
Bu seçenek, son çare olarak kullanılmalı ve yinelenen verilerin gösterilmesiyle ilgili riskler göz önünde bulundurulmalıdır. UUID'ler zaten mevcut olduğundan geliştiriciler bunun yerine 1-3 arasındaki seçenekleri değerlendirmelidir.
Android 14 API'lerini Jetpack SDK ile test etme
Android 14 Jetpack SDK'sının, Android 14'ün Beta 3 sürümüyle birlikte 7 Haziran 2023'te yayınlanması planlanmaktadır. Android 14 Jetpack SDK'sını kullanabilmek için uygulamanızı Android 14'e göre derlemeye başlamanız gerekir.
Çözümünüzü 7 Haziran'dan önce Android Developer Preview derlemeleriyle test etmek isterseniz yardım için Google'daki ilgili kişinizle 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şiklikleri yapmanız gerekir:
compileSDKPreview = UpsideDownCake
olarak ayarlayın.- Manifest dosyasını Android 14 için 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ştirmesi
Android 14'te Health Connect gizlilik ve veri yönetimi kontrolleri, Sistem Ayarları'nda yer alır.
Health Connect, veri yönetimi ve izin ekranlarının cihazın bir parçası gibi görünmesi için özel yer paylaşımları kullanarak OEM temalandırması sunar.
OEM stiliyle ilgili dokümanlar için Health Connect Google Mobil Hizmetleri dokümanlarına bakın. Sayfayı görüntülemek için Google Developers'a giriş yapmanız gerekebilir.