1

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

回答

2

在花费更多时间寻找其他替代品之后,最后,我使用CyberLink For Java进行了工作。 Cyber​​Link库的实施非常简单。对于任何计划为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不理解你的外部讯连科技。我们包含的jar文件。当您尝试调试本机扩展时,您将收到错误日志:...在方法中找不到类'org ... ControlPoint'...。为了使它工作,你必须将所有的.jar文件合并为一个。我们有2个选择这里:

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

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

希望这有助于。