1

我正在尝试使用广播接收器来让我的设备连接到 USB 或车载底座,但没有得到正确的结果。请帮忙?提前致谢。收货人代码为:

public class CarDockReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Car Dock Receiver registerd", Toast.LENGTH_SHORT).show();
        switch (intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)) {
        case BatteryManager.BATTERY_PLUGGED_AC:
            Toast.makeText(context, "Battery plugged AC", Toast.LENGTH_SHORT).show();
            break;
        case BatteryManager.BATTERY_PLUGGED_USB:
            Toast.makeText(context, "Battery plugged USB", Toast.LENGTH_SHORT).show();
            break;
        default:
            break;
        }
    }
}

清单文件中的接收者是:

<receiver
     android:name=".CarDockReceiver"
     android:enabled="true" >
     <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
     </intent-filter>
</receiver>
4

2 回答 2

1

刚刚解决了检测USB设备插入的类似问题。事实证明 - 因为您在清单中指定了一个意图过滤器 - 当插入某些东西时,Android 会调用 onResume。您可以尝试添加以下内容:

@Override
protected void onResume() {
    super.onResume();

    Intent intent = getIntent();
    if (intent != null) {
        Log.d("onResume", "intent: " + intent.toString());
        if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
            // Do your thing ...
        }

运行它以查看确切记录的内容并使用该信息检查要检查的正确操作(在上面的示例中替换 ACTION_USB_DEVICE_ATTACHED)。

于 2013-10-15T08:18:32.300 回答
0

要检查您的设备是否连接到 USB 配件,您可以使用此意图。

<activity ...>
    ...
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
    </intent-filter>

    <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
     android:resource="@xml/accessory_filter" />
</activity>

参考:http: //developer.android.com/guide/topics/connectivity/usb/accessory.html

如果您只是检测 USB 连接,那么只需将这些意图用于您的意图过滤器:UsbManager.ACTION_USB_DEVICE_ATTACHED 和 UsbManager.ACTION_USB_DEVICE_DETACHED

希望这可以帮助。

更新:

如果您正在处理提供电源的配件,您还可以使用此意图检测连接:ACTION_POWER_CONNECTED。当外部电源连接到设备时,会广播此意图。这是一个示例代码。

在你的 AndroidManifest.xml

<receiver android:name=".YourReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name="android.intent.action.BATTERY_CHANGED" />
    </intent-filter>
</receiver>

和你的receiver.java 源:

public class YourReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("connection", "power connected");
    }
}
于 2013-10-10T04:51:03.110 回答