【问题标题】:Upnp Native Extension for Android - AIR适用于 Android 的 Upnp 本机扩展 - AIR
【发布时间】:2014-04-03 18:43:23
【问题描述】:
长期以来,我们一直在使用 Adobe AIR 开发一个 Android 项目,现在我们需要实现该功能以在网络中搜索 Upnp 设备。据我了解,无法在 AIR 级别实现此功能(如果我错了请纠正我),因此需要 Android 原生扩展。我找不到任何可用的 UPNP 本机扩展,并决定基于 Cling 库 Cling UPNP Browser 构建一个。我可以让它作为原生 Android 应用程序工作,但是当我尝试将其转换为 AIR 原生扩展时,它根本不起作用。是否有人在 Android - AIR 上成功实施 UPNP,任何帮助将不胜感激。
【问题讨论】:
标签:
android
actionscript-3
actionscript
air
air-native-extension
【解决方案1】:
在花了更多时间寻找其他替代方案之后,我终于使用CyberLink For Java 使其工作。 CyberLink 库的实施非常简单。对于任何计划为 Android 创建自己的 UPNP 原生扩展的人,以下是构建 .jar 原生扩展的过程。
- 将外部网络链接 .jar 库包含到您的 Android Java 项目中。
-
要开始搜索 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;
}
-
为您的 Android 编译 .jar 文件需要一些工作,因为 Adobe AIR 不理解我们包含的您的外部网络链接 .jar 文件。当您尝试调试本机扩展时,您将收到错误 Log: ...the class 'org...ControlPoint' is not found in the method ... 。为了使其工作,您必须将所有 .jar 文件合并为一个。我们有两个选择:
第一种方法:导出您的 Andoird .jar 文件,将扩展名更改为 .zip 然后解压缩。然后将 cyperlink .jar 文件的 .jar 扩展名更改为 .zip 然后解压缩。将 cyperlink .jar 文件夹中的源代码复制到 Android 的 .jar 文件夹中。最后,再次 jar 整个文件夹。
第二种方法(更简单):使用jarjar.jar from Google (thanks to Joe Ward)。
希望这会有所帮助。