PlatinumUPnPSDK是一个跨平台的C++库,利用该库,可以很容易就构建出DLNA/UPnP控制点(DLNA/UPnPControlPoint)和DLNA/UPnP设备(DLNA/UPnPDevice),其中包括有UPnPAVMediaServer,MediaRender&ControlPoint的例子。它可以在Windows,MacOSX,Linux,iPhone,Android,Symbian等多种C语言开发平台上编译通过且运行

官方网址:http://www.plutinosoft.com/platinum

SDK下载地址:http://sourceforge.net/projects/platinum/

下载后得到一个PlatinumKit-1-0-4-2_99100e_aab601.zip

版本信息为

PlatinumKitVersion1-0-4-2

-----------------------------

Neptune:aab601

Platinum:99100e

解压开来先熟悉下该包的内容

查看Platinum目录下的ReadMe.txt


该包包含了这两个主要的库

进入Platinum\Build\Targets\x86-microsoft-win32-vs2008目录

打开PlatinumManaged.sln解决方案可以看到工程的关联

NeptunePlatinum都是静态链接库,后续编译so库会用到

Platinum.Managed是动态链接库,暂时不用管

看看给android调用的so库如何编译


首先要下载ndk组件包

网址:http://developer.android.com/tools/sdk/ndk/index.html#Installing

这里我以ubuntun64位环境为例,下载android-ndk-r8e-linux-x86_64.tar.bz2

ubuntun下解压后配置ANDROID_NDK_ROOT环境变量

<1>使用命令vi~/.bashrc打开环境变量设置,并在文件末尾添加:

ANDROID_NDK_ROOT=你的ndk根目录绝对路径

exportANDROID_NDK_ROOT

<2>使用命令source~/.bashrc使环境变量设置生效。

<3>使用命令echo$ANDROID_NDK_ROOT查看是否生效,如果输出完整路径正确,说明环境变量设置ok.

<4>此步可选,使用cd命令进入到androidNDK/samples/hello-jni进入例子目录,然后使用命令:sudo$ANDROID_NDK_ROOT/ndk-build如果编译成功,则会生成so库,表示NDK能够正常Work

Ndk环境搭好后就可以编译Platinumlib了

<1>androidNDK目录下面生成out/config.mk文件,里面输入内容如下:

HOST_TAG:=linux-x86

然后保存退出;

<2>进入Platinum目录

打命令sconstarget=arm-android-linuxbuild_config=Release

(请确保scons工具已安装)

正常的话最后会输出:scons:donebuildingtargets.表示编译完成了。

在Platinum\Build\Targets\arm-android-linux\Release目录下生成相关*.a

不带后缀的是c可执行文件

<3>进入到/PlatinumKit/Platinum/Source/Platform/Android/module/platinum/jni目录下面,

注意:这里需要先修改该jni目录下的Android.mk文件,将LOCAL_LDLIBS+=-laxTls改为LOCAL_LDLIBS+=-laxTLS,主要是前面生成库的名字是-laxTLS而不是-laxTls

使用命令:$ANDROID_NDK_ROOT/ndk-buildNDK_DEBUG=0

编译之后会输出如下信息,表示生成SO库成功。

SharedLibrary:libplatinum-jni.so

Install:libplatinum-jni.so=>libs/armeabi/libplatinum-jni.so

进入到目录PlatinumKit/Platinum/Source/Platform/Android/module/platinum/lib目录下面可以看到生成so.

最后是测试该so

将Platinum\Source\Platform\Android下的两个工厂导入eclipse

一个是lib工程,一个是apk工程,建立引用关系,然后在platinum工程下建立libs/armeabi目录并将前面编好的so库放进去


运行sample-upnp



示例比较粗糙,start后设备并不能被外界发现,需要自己重新封装,具体用法可参照

Platinum\Source\Tests\MediaRenderer下的MediaRendererTest.cpp文件

可在PlatinumManaged.sln解决方案下将MediaRendererTest工程导入,然后配置项目依赖项把那两个静态库添进来,在window下将MediaRendererTest跑起来可被外界发现

至此一个简单的platinumso库封装和调用就实现了

至于DMR,DMS以及DMC等实现就需要自己先摸透该框架的使用方法

主要涉及到这三个类

PLT_FileMediaServer:封装实现了DMS
PLT_MicroMediaController:不是库里的类,是其一个例子的类,继承了PLT_SyncMediaBrowserPLT_MediaController,即实现了DMC
PLT_MediaRenderer:实现了DMR

另外里面许多示例程序包括Platinum.Managed都是值得参考借鉴的

好了PlatinumUPnPSDK的初级使用教程到此结束

预知后事如何,且听下回分解

more brilliant,Please pay attention to my CSDN blog -->http://blog.csdn.net/geniuseoe2012

更多相关文章

  1. Android(安卓)Studio安装教程及第一个HelloWorld程序
  2. ubuntu10.04 android编译问题
  3. 实战技巧:用Enum(枚举类型)取代整数集
  4. Android(安卓)Studio NDK开发命令配置
  5. Android(安卓)壁纸 保存的目录
  6. android led_misc驱动 + 测试应用程序(ndk-build)
  7. AndroidStudio中gradle,buildToolsVersion,complieSdkVersion的关
  8. 关于ionic混合开发App打包过程详解-android
  9. 用Android(安卓)Studio进行NDK编程入门实例

随机推荐

  1. Android(安卓)Studio中Xml的新建及shape
  2. Android(安卓)SDK更新后Eclipse无法正常
  3. Android中的ListView点击时的背景颜色设
  4. Android的selector 背景选择器
  5. Android画图之Matrix(二)
  6. Android(安卓)Studio 3.6 特征大揭秘
  7. Android基础UI篇------六种基本布局
  8. Android的MediaPlayer架构介绍
  9. android 按百分比设置布局
  10. android 命令行安装apk