无法导入com.android.future.usb。*

Ian*_*ici 5 android adk mbed

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

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

import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager;
Run Code Online (Sandbox Code Playgroud)

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

这个问题有解决方案吗?我无法解决

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

     //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Run Code Online (Sandbox Code Playgroud)

但是现在它无法识别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);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Sar*_*ran 1

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

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