适用于Android的Upnp Native Extension - AIR

时间:2014-03-02 22:31:48

标签: android actionscript-3 actionscript air air-native-extension

我们一直在使用Adobe AIR开发Android项目,现在我们需要实现该功能来搜索网络中的Upnp设备。根据我的理解,不可能在AIR级别上实现此功能(如果我错了请纠正我),因此需要Android原生扩展。我找不到任何UPNP Native Extension,并决定基于Cling库Cling UPNP Browser构建一个。我可以将其作为原生Android应用程序工作,但当我尝试将其转换为AIR原生扩展时,它根本不起作用。有没有人在Android上成功实现UPNP - AIR,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

在花费更多时间搜索其他替代方案之后,最后,我使用CyberLink For Java使其工作。讯连科技图书馆的实施非常直截了当。对于计划为Android创建自己的UPNP原生扩展的任何人,这里是构建.jar原生扩展的过程。

  1. 将外部cyberlink .jar库包含在您的Android Java项目中。
  2. 要开始搜索UPNP设备,您必须打开一个新线程:

       new SearchingForUpnpTask().execute("Empty Param"); //You can specify your own param...
       private class SearchingForUpnpTask extends AsyncTask<String, Void, DeviceList>{
            protected DeviceList doInBackground(String... params){
                ControlPoint ctrPoint = new ControlPoint(); 
            ctrPoint.start("upnp:rootdevice");
                DeviceList devList = ctrPoint.getDeviceList();
                int nRootDevs = devList.size(); 
            for (int n=0; n < nRootDevs; n++) { 
                    Device dev = devList.getDevice(n); 
            String devName = dev.getFriendlyName(); 
                System.out.println("[" + n + "] = " + devName); 
            }
        ...              
       return devList;
      }
    
  3. 编译Android的.jar文件需要一些工作,因为Adobe AIR无法理解我们包含的外部cyberlink .jar文件。当您尝试调试本机扩展时,您将收到错误日志: ...类'org ...在方法中找不到ControlPoint'。为了使其工作,您必须将所有.jar文件合并为一个。我们有两个选择:

    • 第一种方法:导出你的Andoird .jar文件,将扩展名更改为.zip然后解压缩。然后将cyperlink .jar文件的.jar扩展名更改为.zip,然后将其解压缩。将源cyperlink .jar文件夹中的源复制到Android的.jar文件夹中。最后,再次jar整个文件夹。

    • 第二种方法(更简单):使用jarjar.jar from Google (thanks to Joe Ward)

  4. 希望这有帮助。