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

时间:2014-03-30 20:01:58

标签: android adk mbed

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

然而他们的mbed adkport code(向下滚动到adkport超链接)需要这些导入

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

我注意到另一个thread表明开发人员的解决方案是将其切换到android.hardware.usb,但是当我这样做时,3个不同的行将无法工作,因为基于硬件的包没有支持 getAccessory getInstance 符号

解决这个问题的方法是什么?无法理解我的头脑

我尝试按照替换代码的步骤来使用android.hardware.usb,但我仍然遇到了自己的问题android developer routine

     //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);
        }
    }

}

2 个答案:

答案 0 :(得分:0)

  

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

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

答案 1 :(得分:0)

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

他建议阅读USB Accessory。蒸馏说明:

  1. 确保你表现出来的minSdkVersion足够高(对我而言是19岁)。
  2. UsbManager.getInstance(this)替换为(UsbManager) getSystemService(Context.USB_SERVICE)
  3. UsbManager.getAccessory(intent)替换为intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY)