HarmonyOS如何监听U盘插拔
·
// 定义U盘插拔事件的监听器
export default class UsbEventListener {
private subscriber: commonEventManager.CommonEventSubscriber | null = null;
// 订阅U盘插拔事件
subscribeUsbEvents() {
const subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
events: [
'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED',
'usual.event.hardware.usb.action.USB_DEVICE_DETACHED'
]
};
// 创建订阅者
commonEventManager.createSubscriber(subscribeInfo,
(err: BusinessError, subscriber: commonEventManager.CommonEventSubscriber) => {
if (err) {
console.error(`Failed to create subscriber. Code: ${err.code}, message: ${err.message}`);
return;
}
this.subscriber = subscriber;
// 订阅事件
commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEventManager.CommonEventData) => {
if (err) {
console.error(`Failed to subscribe event. Code: ${err.code}, message: ${err.message}`);
return;
}
console.error(data.event);
// 获取连接的USB设备信息
if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED') {
console.info('U 盘已插入');
this.handleUsbAttached();
} else if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_DETACHED') {
console.info('U 盘已拔出');
this.handleUsbDetached();
}
});
});
}
// 处理U盘插入事件
private handleUsbAttached() {
console.info('处理 U 盘插入逻辑');
}
// 处理U盘拔出事件
private handleUsbDetached() {
console.info('处理 U 盘拔出逻辑');
}
// 取消订阅
unsubscribeUsbEvents() {
if (this.subscriber) {
commonEventManager.unsubscribe(this.subscriber, (err: BusinessError) => {
if (err) {
console.error(`Failed to unsubscribe. Code: ${err.code}, message: ${err.message}`);
return;
}
console.info('已取消订阅 U 盘插拔事件');
});
}
}
}
import { BusinessError } from '@ohos.base';
import commonEventManager from '@ohos.commonEventManager';
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
private usbListener: UsbEventListener = new UsbEventListener();
aboutToAppear() {
this.usbListener.subscribeUsbEvents();
}
aboutToDisappear() {
this.usbListener.unsubscribeUsbEvents();
}
build() {
RelativeContainer() {
Text(this.message)
.id('HelloWorld')
.fontSize($r('app.float.page_text_font_size'))
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
this.message = 'Welcome';
})
}
.height('100%')
.width('100%')
}
}
// 定义U盘插拔事件的监听器
export default class UsbEventListener {
private subscriber: commonEventManager.CommonEventSubscriber | null = null;
// 订阅U盘插拔事件
subscribeUsbEvents() {
const subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
events: [
'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED',
'usual.event.hardware.usb.action.USB_DEVICE_DETACHED'
]
};
// 创建订阅者
commonEventManager.createSubscriber(subscribeInfo,
(err: BusinessError, subscriber: commonEventManager.CommonEventSubscriber) => {
if (err) {
console.error(`Failed to create subscriber. Code: ${err.code}, message: ${err.message}`);
return;
}
this.subscriber = subscriber;
// 订阅事件
commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEventManager.CommonEventData) => {
if (err) {
console.error(`Failed to subscribe event. Code: ${err.code}, message: ${err.message}`);
return;
}
console.error(data.event);
// 获取连接的USB设备信息
if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED') {
console.info('U 盘已插入');
this.handleUsbAttached();
} else if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_DETACHED') {
console.info('U 盘已拔出');
this.handleUsbDetached();
}
});
});
}
// 处理U盘插入事件
private handleUsbAttached() {
console.info('处理 U 盘插入逻辑');
}
// 处理U盘拔出事件
private handleUsbDetached() {
console.info('处理 U 盘拔出逻辑');
}
// 取消订阅
unsubscribeUsbEvents() {
if (this.subscriber) {
commonEventManager.unsubscribe(this.subscriber, (err: BusinessError) => {
if (err) {
console.error(`Failed to unsubscribe. Code: ${err.code}, message: ${err.message}`);
return;
}
console.info('已取消订阅 U 盘插拔事件');
});
}
}
}
所有评论(0)