5

我正在按照步骤使用 ADK 通过 Android Studio 控制 mbed

但是他们的 mbed adkport 代码(向下滚动到 adkport 超链接)需要这些导入

import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager;

我注意到另一个线程建议开发人员的解决方案是将其切换到 android.hardware.usb,但是当我这样做时,3 条不同的行将不起作用,因为基于硬件的包不支持 getAccessorygetInstance符号

这个问题有什么解决办法吗?无法理解它

我尝试按照替换代码的步骤来使用 android.hardware.usb 但我仍然遇到他们自己的android 开发人员例程的问题

     //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);

但是现在它无法识别 getSystemService

这就是失败的地方。

public void setup(Context context)
{

    //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);  //<-----
    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];
        if(mManager.hasPermission(mAccessory))
        {
        openAccessory(mAccessory);
        }
    }

}
4

2 回答 2

1

实际上应该复制其中一条评论(来自Morrison Chang)作为答案(在类似情况下为我工作)。

他对阅读USB 附件的建议是正确的。蒸馏说明:

  1. 确保你表现出来的 minSdkVersion 足够高(对我来说是 19)。
  2. 替换UsbManager.getInstance(this)(UsbManager) getSystemService(Context.USB_SERVICE)
  3. 替换UsbManager.getAccessory(intent)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY)
于 2017-12-02T03:20:44.953 回答
1

getSystemService()是一种可以activity使用活动从内部或非活动类内部调用的方法context

由于您的函数setup()应该通过传递 a 来调用ContextusbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);因此将解决您的问题。

于 2016-03-18T11:31:28.230 回答