在 Android 中监控 USB 驱动器插入和设置 Wi-Fi 的最佳方式
Best way to monitor USB drive insertion and set up Wi-Fi in Android
我是 运行ning stock Android KitKat 在定制板上。我希望能够检测到何时插入了 USB 驱动器,从驱动器中读取文本文件,然后根据文件的内容更改 Wi-Fi 设置。
理想情况下,我想使用 shell 脚本来完成此操作;因为在我认为那将是最快的方法之前,我从未编写过 Android 应用程序。但是我是 Android 的新手,我不确定是否可以通过 shell 脚本做我想做的事。我已经能够在启动时自动获得一个简单的脚本 运行,但是当我插入 USB 驱动器时 /dev 中没有任何显示。
我不确定这里是否是提出这个问题的最佳场所,但有人可以向我指出正确的方向吗?这可以通过 shell 脚本实现吗,还是我应该硬着头皮下载并学习 Android SDK?
谢谢
马龙
在shell脚本中检测USB设备插拔行为是可以的,但这种方法不可靠且丑陋。同时,在你的 shell 脚本中,如何在连接 USB 设备后设置 Wi-Fi?在应用层做的更好的方法是设置一个 BroadcastReceiver
来检测事件,并根据不同的事件执行不同的操作。在 Android 应用程序中,您可以这样做。
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(UsbManager.ACTION_USB_ACCESSORY_ATTACHED)) {
// TODO: handle accessory attache action
} else if (action.equals(UsbManager.ACTION_USB_ACCESSORY_DETACHED)) {
// TODO: handle accessory detach action
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
// TODO: handle device attache action
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
// TODO: handle device detach action
}
}
};
IntentFilter intentFilter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
intentFilter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(broadcastReceiver, intentFilter);
我是 运行ning stock Android KitKat 在定制板上。我希望能够检测到何时插入了 USB 驱动器,从驱动器中读取文本文件,然后根据文件的内容更改 Wi-Fi 设置。
理想情况下,我想使用 shell 脚本来完成此操作;因为在我认为那将是最快的方法之前,我从未编写过 Android 应用程序。但是我是 Android 的新手,我不确定是否可以通过 shell 脚本做我想做的事。我已经能够在启动时自动获得一个简单的脚本 运行,但是当我插入 USB 驱动器时 /dev 中没有任何显示。
我不确定这里是否是提出这个问题的最佳场所,但有人可以向我指出正确的方向吗?这可以通过 shell 脚本实现吗,还是我应该硬着头皮下载并学习 Android SDK?
谢谢
马龙
在shell脚本中检测USB设备插拔行为是可以的,但这种方法不可靠且丑陋。同时,在你的 shell 脚本中,如何在连接 USB 设备后设置 Wi-Fi?在应用层做的更好的方法是设置一个 BroadcastReceiver
来检测事件,并根据不同的事件执行不同的操作。在 Android 应用程序中,您可以这样做。
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(UsbManager.ACTION_USB_ACCESSORY_ATTACHED)) {
// TODO: handle accessory attache action
} else if (action.equals(UsbManager.ACTION_USB_ACCESSORY_DETACHED)) {
// TODO: handle accessory detach action
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
// TODO: handle device attache action
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
// TODO: handle device detach action
}
}
};
IntentFilter intentFilter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
intentFilter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(broadcastReceiver, intentFilter);