Java Can';t在创建的Jar中实例化usbmanager
我试图在我创建的库中使用usbmanager 在我的图书馆里,我有:Java Can';t在创建的Jar中实例化usbmanager,java,android,jar,usbserial,ftdi,Java,Android,Jar,Usbserial,Ftdi,我试图在我创建的库中使用usbmanager 在我的图书馆里,我有: public class usb_manager extends Service{ private UsbManager myUsbManager; public usb_manager(){ myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); } } ... } 然后我尝试在
public class usb_manager extends Service{
private UsbManager myUsbManager;
public usb_manager(){
myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
}
}
...
}
然后我尝试在另一个java文件中调用构造函数
public class MainActivity extends Activity {
public usb_manager testusb = new usb_manager();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
...
}
应用程序启动时崩溃
但如果我将库中的代码更改为(即,将usbmanager的初始化移动到活动):
在我项目的主要活动中:
public class MainActivity extends Activity {
public usb_manager testusb; = new usb_manager();
private UsbManager myUsbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
testusb = new usb_manager(myUsbManager);
}
...
}
它起作用了
有人能告诉我使用的问题是什么吗
myUsbManager=(UsbManager)getSystemService(Context.USB_服务)
在库文件中。只需
getSystemService()
在构造函数中返回null
,因为上下文
未初始化。在您的usb\u管理器中覆盖onCreate()
服务,并在那里分配myUsbManager
。
不要在Activity
中调用服务构造函数,而是使用startService()
看到这个了吗发生了什么事故?您是否为库指定了com.android.future.usb.accessory
?在我的库中,我有导入android.hardware.usb.UsbDevice代码>导入android.hardware.usb.UsbManager代码>是。。。但也要正确地实例化服务,而不是调用它的构造函数。我忽略了构造函数调用。回答更新了。好的,我知道发生了什么,让我来做,我会在以后给你们更新,谢谢
public class MainActivity extends Activity {
public usb_manager testusb; = new usb_manager();
private UsbManager myUsbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
testusb = new usb_manager(myUsbManager);
}
...
}