无法在Jar创建的jar内实例化usbmanager

时间:2013-09-16 19:35:20

标签: java android jar usbserial ftdi

我正在尝试在我创建的库中使用usbmanager。

在我的图书馆,我有:

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 usb_manager extends Service{

   private UsbManager myUsbManager;

        public usb_manager(UsbManager in){
          mUsbManager = in;
        }     
...
}

在我的程序的MainActivity中:

  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_SERVICE);

在库文件中。

1 个答案:

答案 0 :(得分:0)

简单getSystemService()在构造函数中返回null,因为Context未被初始化。覆盖onCreate()服务中的usb_manager并在其中指定myUsbManager。 并且不要在Activity中使用startService()来调用服务构造函数。

请参阅此services tutorial