装着検出の状態
装着検出が有効かどうかと、左右どちらのイヤホンが現在装着されているかを確認します。
前提条件
- デバイスが接続済みで、操作可能な状態であること。
- デバイスが
DeviceWearDetectionAPIに準拠していること。
API リファレンス
フレームワーク
AIBuds.xcframework
インポート
- Swift
- Objective-C
import AIBuds#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>プロトコル
- Swift
- Objective-C
/// The protocol for device wear detection API.
protocol DeviceWearDetectionAPI: DeviceAPI {
/// Indicates whether wear detection is currently enabled
var isWearDetectionEnabled: Bool { get }
/// The current wear status of the device.
var wearStatus: WearStatus { get }
}/// The protocol for device wear detection API.
@protocol AIBudsDeviceWearDetectionAPI <AIBudsDeviceAPI>
/// Indicates whether wear detection is currently enabled
@property(nonatomic, readonly) BOOL isWearDetectionEnabled;
/// The current wear status of the device.
@property(nonatomic, readonly) enum AIBudsWearStatus wearStatus;
@endプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
isWearDetectionEnabled | Bool / BOOL | 装着検出が現在有効かどうか。 |
wearStatus | WearStatus | 左右イヤホンの現在の装着状態。 |
装着状態の値
| Swift | Objective-C | 意味 |
|---|---|---|
.unknown | AIBudsWearStatusUnknown | 装着状態を判定できません。 |
.notWearing | AIBudsWearStatusNotWearing | 左右とも未装着です。 |
.leftWearing | AIBudsWearStatusLeftWearing | 左側のみ装着されています。 |
.rightWearing | AIBudsWearStatusRightWearing | 右側のみ装着されています。 |
.bothWearing | AIBudsWearStatusBothWearing | 左右とも装着されています。 |
使用例
- Swift
- Objective-C
import AIBuds
guard let device = device as? DeviceWearDetectionAPI else {
print("Device does not support wear detection")
return
}
print("Wear detection enabled: \(device.isWearDetectionEnabled)")
switch device.wearStatus {
case .unknown:
print("Wear state is unknown")
case .notWearing:
print("Neither side is worn")
case .leftWearing:
print("Only the left side is worn")
case .rightWearing:
print("Only the right side is worn")
case .bothWearing:
print("Both sides are worn")
@unknown default:
print("Unsupported wear-state value")
}#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>
id<AIBudsDeviceWearDetectionAPI> device = (id<AIBudsDeviceWearDetectionAPI>)self.device;
if ([device conformsToProtocol:@protocol(AIBudsDeviceWearDetectionAPI)]) {
NSLog(@"Wear detection enabled: %@", device.isWearDetectionEnabled ? @"YES" : @"NO");
NSLog(@"Wear status raw value: %ld", (long)device.wearStatus);
}エラー処理
これらは同期的に現在値を返すプロパティであり、エラーは返しません。プロトコル非対応と .unknown を明示的に処理してください。取得後に状態が変化する場合があります。
ベストプラクティス
- 有効状態と装着状態を分ける:
falseと.notWearingは異なる状態を表します。 - 更新を監視する: UI を最新状態に保つ場合は、
didWearDetectionEnabledChangedとdidWearStatusChangedを実装します。 - メインスレッドで UI を更新する: 必要に応じて、デリゲートからの UI 更新をメインキューへ切り替えます。
注意事項
- SDK は
getWearDetectionSwitchStatusやResultベースの問い合わせメソッドではなく、プロパティを公開しています。 .unknownを「未装着」として表示しないでください。