E/MediaPlayerNative: stop called in state 1, mPlayer(0x0)
V/MediaPlayerNative: message received msg=100, ext1=-38, ext2=0
E/MediaPlayerNative: error (-38, 0)
<manifest>
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<!-- Needed only if your app looks for Bluetooth devices.
You must add an attribute to this permission, or declare the
ACCESS_FINE_LOCATION permission, depending on the results when you
check location usage in your app. -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<!-- Needed only if your app makes the device discoverable to Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<!-- Needed only if your app communicates with already-paired Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
...
</manifest>
2. 블루투스 사용 권한 요청 시 requestPermission 요청
if (PermissionType.BLUETOOTH == type ) {
permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
permissions.add(Manifest.permission.BLUETOOTH);
permissions.add(Manifest.permission.BLUETOOTH_ADMIN);
permissions.add(Manifest.permission.BLUETOOTH_SCAN);
permissions.add(Manifest.permission.BLUETOOTH_ADVERTISE);
permissions.add(Manifest.permission.BLUETOOTH_CONNECT);
}
Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
E/TypefaceCompatApi26Impl: Unable to collect necessary methods for class java.lang.NoSuchMethodException java.lang.NoSuchMethodException: android.graphics.FontFamily.<init> []
This app has crashed because it attempted to access privacy-sensitive data without a usage description.The app's Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.
한화생명은 그동안 헬스케어 시장에 상당한 관심을 보여왔다. 지난 2019년에는 그룹사 컨소시엄을 만들어 정보기술(IT) 기반 의료서비스 기업인 ‘유비케어’ 인수를 시도하기도 했으며, 지난해에는 글로벌 제약사 한국에자이와 업무협약을 맺고 치매 예방 및 케어 플랫폼 개발에 나서고 있다.
또한 지난 2019년부터 소비자들의 식단이나 수면상태를 체크해주는 건강관리 앱도 운영 중이다. 헬로는 사용자가 공인인증서로 본인인증을 하면 과거 10년치의 건강검진정보를 한 눈에 보여주고 건강 수준을 나이로 환산한 ‘생체나이’를 분석해준다. 특히 본인이 먹는 음식을 스마트폰 카메라로 찍어서 영양소와 칼로리는 어떤지 자동으로 AI가 분석해 식단관리도 할 수 있다.
해외는 보험사가 원격의료 서비스도 시도
이미 해외에서는 단순한 건강관리 서비스를 넘어 원격 의료 상당까지 진행하고 있다. 중국 핑안보험은 헬스케어 플랫폼 핑안굿닥터를 만들어 모바일 기반의 개인화된 헬스케어 서비스를 제공하고 있고, 남아프리카공화국의 보험사 올라이프는 에이즈나 당뇨병 환자가 건강검진과 치료를 받으면 사망 및 장해보장 보험을 제공하는 시스템을 갖추고 있다.
한 보험사 관계자는 “국내는 보험업법 자체가 워낙 보수적으로 돼있고, 의료법에도 저촉돼 아직 획기적인 헬스케어 사업을 할 수 없는 상황”이라며 “다만, 지난해부터 일반인대상 건강관리 서비스를 할 수 있도록 법이 명확화된 만큼 보험사들도 관련 서비스 개발에 나설 것”이라고 말했다
이스라엘 AI 의료 기술 스타트업 비나.AI(Binah.AI·이하 비나)가 영상으로 건강 상태를 추적하는 헬스 모니터링 앱을 개발했다고 소개했다. 비나는 즉시 사용 가능한 건강 모니터링 솔루션을 제공해 이번 CES2021에 데뷔할 예정이다.
비나가 개발한 이 앱은 얼굴의 윗볼을 촬영해 생체 신호를 추출하고 AI 딥러닝 알고리즘으로 분석해 환자를 진단한다. 심박수, 산소 포화도, 정신적 스트레스 등 다양한 인체의 활력 징후를 측정할 수 있다.
비접촉 진단을 위해 카메라를 활용해 원격광용적맥파(RPPG·Remote Photoplethysmographic) 진단을 한다. 광용적맥파란 빛을 활용해, 혈액이 심장에서 물결 모양을 이루며 전파되는 모습을 진단하는 것. 피부에서 반사되는 적색, 녹색, 청색 빛의 변화를 측정하는 식이다. 얼굴이 아닌 손가락을 스마트폰 후면 카메라에 대는 방법으로도 광용적맥파 진단이 가능하다.
비나측은 이러한 신호 처리 방식은 95%에서 98% 사이의 의료장비 수준의 정확도를 갖는다고 설명했다.
구글이 스마트폰 카메라로 심박수와 호흡수를 측정하는 인공지능(AI) 기술을 선보일 예정이다. 자사 스마트폰 시리즈 ‘픽셀’에 카메라로 심박수와 분당 호흡수를 모니터링하는 기능을 이번 달 중 추가할 예정
스마트폰의 전면 카메라와 후면 카메라를 이용해 사용자를 감지하면 AI가 건강 정보를 계산한다.
호흡수의 경우 전면 카메라에 머리부터 가슴까지 상체를 인식시키면 흉부가 상승하고 하강하는 장면을 추적해 AI가 분당 호흡수를 측정한다. 구글헬스 잭 포(Jack Po) 제품 매니저는 “의사는 환자의 가슴이 오르락내리락하는 모습을 보고 호흡수를 계산한다”.
심박수의 경우 후면 카메라를 이용한다. 후면 카메라에 손가락 끝을 비추면 혈액이 흐르는 양을 측정하는 ‘맥박산소 측정’법을 적용했다.
구글헬스 슈택 페이텔(Shwetak Patel) 기술 이사는 “심장이 뛰면 손가락 끝으로 흐르는 혈액 양이 변하는 원리를 적용했다”라며 “스마트폰 카메라와 컴퓨터비전 알고리즘 발전으로 눈에 띄지 않는 인체 변화도 측정할 수 있게 됐다”라고 말했다.
4일 구글헬스가 발표한 초기 연구 결과에 따르면 분당 호흡수는 평균 1회 이내 아주 적은 오차범위를 갖는다. 심박수 측정은 98% 정확도를 갖는다. 페이텔 이사는 건강 정보 모니터링 알고리즘은 “다양한 연령, 성별, 피부 톤, 건강 상태의 사람들을 대상으로 검증을 거쳤다”라고 말했다. 잭 포 매니저는 “건강 정보 모니터링이 가능한 ‘웨어러블 기기’를 가지고 있는 사람들이 많지 않다”라며 “더 많은 사람들에게 이러한 혜택을 제공하기 위해 건강 정보 모니터링 기능을 스마트폰에 통합하기로 결정했다”라고 말했다.
On March 29, 2021, token and certificate-based HTTP/2 connections to the Apple Push Notification service must incorporate the new root certificate (AAACertificateServices 5/12/2020) which replaces the old GeoTrust Global CA root certificate. To ensure a seamless transition and to avoid push notification delivery failures, verify that both the old and new root certificates for the HTTP/2 interface are included in the Trust Store of each of your notification servers before March 29.
Note that Apple Push Notification service SSL provider certificates issued to you by Apple do not need be to updated at this time.
Apple Worldwide Developer Relations Intermediate Certificate updates
Starting January 28, 2021, the digital certificates you use to sign your software for installation on Apple devices, submit apps to theApp Store,and connect to certain Apple services will be issued from the new intermediate Apple Worldwide Developer Relations certificate that expires on February 20, 2030. Learn how to prepare for the new intermediate certificate.
Using the new certificate with Xcode
If you’re runningXcode 11.4.1or later, you’ll receive the updated certificate automatically when you sign an app after January 28, 2021. If you’re running an earlier release of Xcode and need to generate new certificates, download and install the new intermediate certificate and utilize the command line to sign your app. You can also archive your build with your existing Xcode version and sign it for distribution withXcode 11.4.1or later.
Why is the Apple Worldwide Developer Relations Certification Authority being updated now if the current version doesn’t expire until 2023?
Certificates cannot be issued with a validity period that extends past the intermediate certificate’s expiration date. Updating the intermediate certificate allows developers to obtain certificates before expiration that last for the expected duration, and provides ample time to prepare for the expiration of the existing intermediate certificate.
Do I need to regenerate any of my certificates?
No. Your existing certificates will continue to function until expiration or revocation, whichever comes first.
Will customers be affected by the certificate renewal?
No. Customers who have installed apps from theApp Storeor Safari Extensions will not be affected by the certificate renewal.
Will my apps in development continue working?
Yes. The development versions of your apps will continue to run until the provisioning profile used to compile them expires or you revoke your signing certificate.
Will my in-house enterprise apps continue working?
Yes. All in-house enterprise apps for iOS, iPadOS, tvOS, or watchOS that you’ve deployed will continue to run as expected until the provisioning profile used to compile them expires or you revoke your signing certificate. The iOS Distribution Certificate for the Apple Developer Enterprise Program was updated on September 1, 2020. iOS Distribution Certificates generated as part of the Apple Developer Enterprise Program between February 7 and September 1, 2020, will expire on February 7, 2023. Rotate the certificate before expiration to ensure your apps are installed and signed with an active certificate.
Should I keep both intermediate certificates installed?
Yes. The intermediate certificate that expires on February 7, 2023, will continue to issue select Apple services certificates, including Apple Push Notification service (APNs) SSL certificates and Apple Wallet pass signing certificates, so you should keep both versions installed on your development systems and servers. See the complete list and timeline of certificate changes below.
In what cases should I continue using the certificate that expires in 2023?
Continue using the existing Apple Worldwide Developer Relations Intermediate Certificate (expiring in 2023) if you use any of the certificates signed with it that are listed below. These services will be updated with a new intermediate certificate (expiring in 2030) by the the end of 2021. Keep both versions installed on your development systems and servers until later this year.
Apple Push Notification service SSL (Sandbox)
Apple Push Notification service SSL (Sandbox and Production)
macOS Apple Push Notification service SSL (Production)
Website Push ID
WatchKit Services
VoIP Services
Pass Type ID
Pass Type ID with NFC support
App StoreReceipt Signing
IsDeveloper IDsigned software affected?
No.Developer IDsigning certificates are associated with a different intermediate certificate and aren’t affected by this renewal.
Certificate update timeline
These certificates will be issued with the new intermediate certificate (expiring in 2030).
September 1, 2020
iOS Distribution for Enterprise Developer Program memberships
January 28, 2021
Apple Development
Apple Distribution
iOS App Development
iOS Distribution (App Storeand Ad Hoc)
Mac Development
Mac App Distribution
Mac Installer Distribution
MDM CSR
Apple PayMerchant Identity
Updated by end of 2021
Apple Push Notification service SSL (Sandbox)
Apple Push Notification service SSL (Sandbox and Production)
macOS Apple Push Notification service SSL (Production)
Website Push ID
WatchKit Services
VoIP Services
Pass Type ID
Pass Type ID with NFC support
App StoreReceipt Signing
No changes
These certificates are not associated with the Apple Worldwide Developer Intermediate Certificate and are not affected by this change.
W/ConnectionTracker: Exception thrown while unbinding
java.lang.IllegalArgumentException: Service not registered: ls@7f043fa
at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1752)
at android.app.ContextImpl.unbindService(ContextImpl.java:1797)
at android.content.ContextWrapper.unbindService(ContextWrapper.java:741)
at ci.f(:com.google.android.gms.dynamite_measurementdynamite@204714081@20.47.14 (120400-0):1)
at ci.d(:com.google.android.gms.dynamite_measurementdynamite@204714081@20.47.14 (120400-0):2)
at lt.E(:com.google.android.gms.dynamite_measurementdynamite@204714081@20.47.14 (120400-0):9)
at ld.a(:com.google.android.gms.dynamite_measurementdynamite@204714081@20.47.14 (120400-0):3)
at ef.run(:com.google.android.gms.dynamite_measurementdynamite@204714081@20.47.14 (120400-0):3)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at iy.run(:com.google.android.gms.dynamite_measurementdynamite@204714081@20.47.14 (120400-0):5)