我正在按照步骤使用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);
}
}
}
答案 0 :(得分:0)
getSystemService()
是一种方法,可以使用活动的activity
从context
内部或非活动类内部调用。
由于您的函数setup()
应该通过传递Context
来调用,
usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
将解决您的问题。
答案 1 :(得分:0)
其中一条评论(来自Morrison Chang)实际上应该被复制为答案(在类似的情况下为我工作)。
他建议阅读USB Accessory。蒸馏说明:
UsbManager.getInstance(this)
替换为(UsbManager) getSystemService(Context.USB_SERVICE)
。UsbManager.getAccessory(intent)
替换为intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY)
。