在Android 2.3.4中使用ADK在(非活动)类中获取UsbManger的实例

时间:2011-07-25 09:41:55

标签: android usb android-context adk accessory

我试图让Android ADK在我的活动的另一个包中的库中工作,为此我需要各种权限/各种事件的实例。 我已经尝试将活动上下文传递给一个函数,然后运行:

public void setup(Context context)
{
    mManager = UsbManager.getInstance(context);
    UsbAccessory[] accessoryList = mManager.getAccessoryList();
    PendingIntent mPermissionIntent = PendingIntent.getBroadcast(context, 0,
            new Intent(ACTION_USB_PERMISSION), 0);
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    context.registerReceiver(mUsbReceiver, filter);
    mManager.requestPermission(accessoryList[0], mPermissionIntent);
    if (accessoryList[0] != null) {

        mAccessory = accessoryList[0];
        openAccessory(mAccessory);
    }
}

但这会导致应用程序崩溃,即使除了第一行之外的所有内容都已被注释掉了。我不完全确定我做错了什么并且会感谢任何帮助...(该函数被调用并通过“this”)

2 个答案:

答案 0 :(得分:1)

对我来说有用的是在将元素[0]分配给mAccessory之前检查accessoryList是否为空。

    UsbAccessory mAccessory = (accessoryList == null ? null : accessoryList[0]);

希望你能在此期间解决问题。

答案 1 :(得分:0)

你是2.3.4还是3.1?看到这个链接: http://developer.android.com/guide/topics/usb/accessory.html#usage