Health Connect'i Android 13'ten (APK) Android 14'e (çerçeve) taşıma

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ı

  1. Android 14 kullanıma sunulduktan sonra Google, Health Connect'i sunmaya başlayacak. Android sistem uygulaması olarak.
  2. Daha sonra, özellik denkliği sağlandığında veriler APK'dan doldurulur.
  3. Tüm giriş noktaları, sistem uygulaması kullanıcı arayüzünü hedefler.
  4. 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.
  5. Taşıma işlemi tamamlandıktan sonra APK kaldırılabilir.
ziyaret edin.

Ö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:

  1. Kullanıcı, cihazını Android 14'e yükseltir.
  2. Jetpack 14, kullanıcıyı modül API'lerine yönlendiriyor ve taşıma işlemi devam ediyor.
  3. 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.
    1. 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.
  4. 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.
  5. 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:

Telefon güncellemesi gerekli


. Ş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:

APK'nın güncellenmesi gerekiyor


. Şekil 3. Taşıma işlemi sırasında bir döner simge ve verilerin senkronize edildiğini açıklayan metin gösterilir:

Veri Senkronizasyonu

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
ziyaret edin.

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:

  1. compileSDKPreview = UpsideDownCake ayarla.
  2. 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.