当前位置:  编程技术>移动开发
本页文章导读:
    ▪CSipsimple怎么添加视频通信功能        CSipsimple如何添加视频通信功能默认编译出来的CSipSimple是没有视频功能的,获取你去官网下载一个插件http://nightlies.csipsimple.com/plugins/CSipSimpleVideoPlugin.apk ,而如果你搜素CSipSimple视频通信的话.........
    ▪ 关于Asynctask的取消、停止有关问题        关于Asynctask的取消、停止问题。我的程序中,使用了AsyncTask在后台进行持续的轮询,实现一个定时器的功能,在doInBackground()有Thread.sleep()的代码 其原理是一个Service获得了通知以后就关掉Asynct.........
    ▪ 大寨腾讯“爱消除”游戏7日教程-DAY4       山寨腾讯“爱消除”游戏7日教程--DAY4  【课程内容】 在今天的课程中,我们将学习一个更加高级的图形特效:位置交换。由于我们采用的是OpenGL ES的技术,因此最终的效果,我们有条件设.........

[1]CSipsimple怎么添加视频通信功能
    来源: 互联网  发布时间: 2014-02-18
CSipsimple如何添加视频通信功能

默认编译出来的CSipSimple是没有视频功能的,获取你去官网下载一个插件http://nightlies.csipsimple.com/plugins/CSipSimpleVideoPlugin.apk ,而如果你搜素CSipSimple视频通信的话,你会看到一个CSipSimple(小X)的,我使用了一下,默认是可以视频通话的,我们如何实现在CSipSimple官网源码的基础上添加视频功能呢,在CSipsimple最新版本编译 里面我们下载的文件中有一个名字叫做CSipSimpleVideoPlugin的文件夹,当我们make   VideoLibs的时候会编译这个文件里的内容,会生成libpj_video_android.so 和libpj_vpx.so这个两个库,而CSipSimpleVideoPlugin就是官方提供的那个apk的项目,我们编译一下安装在手机上也可以实现视频,我们可以把CSipSimpleVideoPlugin里面的内容整合到CSipSimple项目里面步骤如下:

1.把CSipSimpleVideoPlugin里面的源码和libs拷贝到CSipSimple项目里面

2.把CSipSimpleVideoPlugin里面AndroidManifest.xml里面的内容拷贝到CSipSimple对应文件里面

3.整合完毕后,我们运行一下程序,然后主界面按menu键选择设置,进入媒体选项,点击Media thread count,把里面的1修改为2,进入呼叫选项,这时里面会有一个Use Video的选项,然后你选中,如果我们没有1,2步骤,这个选项是没有的,这时再返回到主界面的拨打电话界面,就会出现摄像图片,显示界面如下:


效果图如下:



如果不想自己编译的,可以使用我编译好的apk,http://download.csdn.net/detail/jwzhangjie/6452627


    
[2] 关于Asynctask的取消、停止有关问题
    来源: 互联网  发布时间: 2014-02-18
关于Asynctask的取消、停止问题。

我的程序中,使用了AsyncTask在后台进行持续的轮询,实现一个定时器的功能,在doInBackground()有Thread.sleep()的代码

其原理是一个Service获得了通知以后就关掉Asynctask,但是

task.cancel(true);

这句话并没有起作用,在task里 isCanceled()的值一直不变,查询发现,在cancel的时候,异步进程正在Sleep()的过程,这个时候对它的操作是无效的

所以如果你对异步进程取消无效的话,可以使用SharedPreference来进行传值。

在task里通过判断SP,来控制进程的终止。

 

欢迎拍砖讨论。

 

 


    
[3] 大寨腾讯“爱消除”游戏7日教程-DAY4
    来源: 互联网  发布时间: 2014-02-18
山寨腾讯“爱消除”游戏7日教程--DAY4

 

【课程内容】

在今天的课程中,我们将学习一个更加高级的图形特效:位置交换。由于我们采用的是OpenGL ES的技术,因此最终的效果,我们有条件设计得比原版“爱消除”还要好!加油!

【源代码下载地址】http://download.csdn.net/detail/elong_2009/6450675

1、位置交换特效简介

“爱消除”核心特效就是交换消除,通过滑动某个动物,实现两个动物的位置交换。“爱消除”完成了位置交换,但这个交换却缺少交换的过程细节。

今天要设计的山寨版本,除了要完成位置交换,同时还要把交换的过程完整展现出来。也就是要把交换的完整细节过程渲染出来!

 

2、渲染动态控制算法类

前面介绍DrawLoading渲染类时,通过启用一个线程来修改要显示的图片picId。由于要实现的功能比较简单,当时并没用考虑用一个统一的算法类来处理这个需求。

今天,我们将设计一个控制算法类,来实现控制算法与渲染的分离。后续还会有大量的特效,也将遵循这个设计原则,实现渲染与控制分离。

动态控制算法类是为渲染类服务的,给渲染类提供必要的渲染信息:如可以为DrawLoading提供图片信息picId,以及为即将实现的DrawExchange提供坐标变换信息,等等。

本节附件提供的代码,将DrawLoading的控制动作也分离了,专门设计了CtlLoading来实现同样的功能。

 

动态控制算法的代码放在 package elong.CrazyLink.Control 中。

 

3、CtlExchange 类

DrawExchange 的实现目的很简单,就是为DrawExchange 提供交换效果所需要的坐标变换信息。

对外提供了5个公有的方法:

public void run()       //执行坐标变换

public float getX1() //获取对象1的X方向偏移量 

public float getX2() //获取对象2的X方向偏移量

public float getY1() //获取对象1的Y方向偏移量

public float getY2() //获取对象2的Y方向偏移量

详细代码请参考附件。

要获得不同的运动效果,修改run()就可以了。

 

4、DrawExchange 类 

DrawExchange 的设计与前面已经完成的渲染类不同,它直接利用了已经设计好的DrawAnimal ,这样可以有效地复用代码。

4.1构造函数

DrawExchange 的构造函数原型如下:

public DrawExchange(DrawAnimal drawAnimal, int witch1, int col1, int row1, int witch2, int col2, int row2);

Para1:传入DrawAnimal对象

Para2:第一个对象要显示的图片

Para3/Para4:第一个对象的网格坐标(0~6)

Para5:第二个对象要显示的图片

Para6/Para7:第二个对象的网格坐标(0~6)

 

4.2动态控制对象

在前面介绍的的方法中,如果渲染类要支持动态属性,需要启动一个线程,随着渲染类逐渐增多(如数十个),管理上会变得越来越困难,而且会占用过多的资源。

在今天的课程里,我们已经改进了动态控制的方法,不再在渲染类中启动线程来修改动态属性。控制动态属性的线程,放到了CrazyLinkGLSurfaceView 类中,并且在package elong.CrazyLink.Control 里设计了一个简单的Control类来统一管理所有的动态控制对象。

 

package elong.CrazyLink.Control;

 

public class Control {

public CtlExchange exchange;

public CtlLoading loading;

//TODO:后续新增动态控制类在这里添加

}

 

4.3 draw 方法

在这个方法中,用动态控制算法提供的数据,执行坐标变换glTranslatef,这样,动态的交换效果就出来了,是不是很cool!

 

public void draw(GL10 gl)

{

gl.glPushMatrix();

gl.glTranslatef(ctlExchange.getX1()*CrazyLinkConstent.translateRatio, ctlExchange.getY1()*CrazyLinkConstent.translateRatio, 0f);

drawAnimal.draw(gl, witch1, col1, row1);

gl.glPopMatrix();

gl.glPushMatrix();

gl.glTranslatef(ctlExchange.getX2()*CrazyLinkConstent.translateRatio, ctlExchange.getY2()*CrazyLinkConstent.translateRatio, 0f);

drawAnimal.draw(gl, witch2, col2, row2);

gl.glPopMatrix();

}

 

4.4堆栈技术

在draw方法中,我们使用了堆栈技术。

在OpenGL ES中,调用glPushMatrix()和glPopMatrix()方法进行堆栈操作。

glPushMatrix()表示复制一份当前矩阵,并把复制的矩阵添加到堆栈的顶部;glPopMatrix表示丢弃堆栈顶部的那个矩阵。

可以这样理解:glPushMatrix()记录下当前坐标的位置,经过一系列的平移、旋转变换之后,调用glPopMatrix()回到原来的坐标位置。

 

把DrawGrid/DrawAnimal/DrawLoading/DrawExchange叠加在一起使用的效果图如下:整个交换的过程细节渲染得非常清楚。

 

 

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3