我正在尝试使用广播接收器将我的设备连接到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>
答案 0 :(得分:1)
刚刚解决了检测USB设备插入的类似问题。事实证明 - 因为您在清单中指定了一个intent过滤器 - 当插入某些内容时,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)。
答案 1 :(得分: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");
}
}