当前位置:  编程技术>移动开发
本页文章导读:
    ▪视频通信demo源码        视频通讯demo源码 以下为anychat视频通讯系统中的部分回调函数源码: 具体可以在 http://download.csdn.net/detail/xujinquan19/4512304 http://download.csdn.net/detail/xujinquan19/4513223 http://download.csdn.net/detail/xujinqu.........
    ▪ 小圈子.大社交:利用圈子引爆盛行        小圈子.大社交:利用圈子引爆流行 《小圈子.大社交:利用圈子引爆流行》基本信息作者: (爱尔兰)Paul Adams [作译者介绍]译者: 王志慧出版社:人民邮电出版社ISBN:9787115296818上架时间:2012.........
    ▪ PowerManager.WakeLock应用(转)       PowerManager.WakeLock使用(转) 使用PowerManager.WakeLock来保证程序运行时保持手机屏幕的恒亮。    public class WakeLockDemo extends Activity {          private PowerManager.WakeLock wakeLock = null;          .........

[1]视频通信demo源码
    来源: 互联网  发布时间: 2014-02-18
视频通讯demo源码

以下为anychat视频通讯系统中的部分回调函数源码:

具体可以在

http://download.csdn.net/detail/xujinquan19/4512304

http://download.csdn.net/detail/xujinquan19/4513223

http://download.csdn.net/detail/xujinquan19/4513024

下载

 

  • /**  
  •  *  视频数据回调函数  
  •  */  
  • void CALLBACK VideoData_CallBack(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •         pDemoDlg->DrawUserVideo(dwUserid,lpBuf,dwLen,bmiHeader);   
  • }   
  • /**  
  •  *  音频数据回调函数  
  •  */  
  • void CALLBACK AudioData_CallBack(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, WAVEFORMATEX waveFormatEx, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         // do something ...   
  •     }   
  • }   
  •   
  • /**  
  •  *  音量更改回调函数  
  •  */  
  • void CALLBACK VolumeChange_CallBack(BRAC_AudioDevice device, DWORD dwCurrentVolume, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         if(device == BRAC_AD_WAVEIN)   
  •             pDemoDlg->OnWaveInVolumeChange(dwCurrentVolume);   
  •         else  
  •             pDemoDlg->OnWaveOutVolumeChange(dwCurrentVolume);   
  •     }   
  • }   
  • // 透明通道数据回调函数定义   
  • void CALLBACK TransBuffer_CallBack(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         CString strNotify;   
  •         strNotify.Format("TransBuffer_CallBack:dwUserid-%d, bufSize-%d",dwUserid,dwLen);   
  •         pDemoDlg->AppendLogString(strNotify);   
  •     }   
  • }   
  •   
  • // 透明通道数据扩展回调函数定义   
  • void CALLBACK TransBufferEx_CallBack(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         BOOL bSuccess = FALSE;   
  •         if(dwLen > 1000)   
  •         {   
  •             bSuccess = lpBuf[1000] == 'Y' ? TRUE : FALSE;   
  •         }   
  •         CString strNotify;   
  •         strNotify.Format("TransBufferEx_CallBack:dwUserid-%d, bufSize-%d,verify:%s",dwUserid,dwLen,bSuccess ? "Success" : "Fail");   
  •         pDemoDlg->AppendLogString(strNotify);   
  •     }      
  • }   
  • // 文件传输回调函数定义   
  • void CALLBACK TransFile_CallBack(DWORD dwUserid, LPCTSTR lpFileName, LPCTSTR lpTempFilePath, DWORD dwFileLength, DWORD wParam, DWORD lParam, DWORD dwTaskId, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         CString strNotify;   
  •         strNotify.Format("TransFile_CallBack:dwUserid-%d, lpFileName-%s, lpTempFilePath-%s",dwUserid,lpFileName,lpTempFilePath);   
  •         pDemoDlg->AppendLogString(strNotify);   
  •     }   
  • }   
  •   
  • // 录像、快照任务完成回调函数定义   
  • void CALLBACK RecordSnapShot_CallBack(DWORD dwUserid, LPCTSTR lpFileName, DWORD dwParam, BOOL bRecordType, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         CString strNotify;   
  •         strNotify.Format("%s CallBack:dwUserid-%d, FilePathName-%s",bRecordType?"Record":"SnapShot",(int)dwUserid,lpFileName);   
  •         pDemoDlg->AppendLogString(strNotify);   
  •     }   
  • }   
  •   
  • // SDK Filter 通信数据回调函数定义   
  • void CALLBACK SDKFilterData_CallBack(LPBYTE lpBuf, DWORD dwLen, LPVOID lpUserValue)   
  • {   
  •     CBRAnyChatSDKDemoDlg*   pDemoDlg = (CBRAnyChatSDKDemoDlg*)lpUserValue;   
  •     if(pDemoDlg)   
  •     {   
  •         CString strNotify;   
  •         strNotify.Format("SDK Filter CallBack:%s",lpBuf);   
  •         pDemoDlg->AppendLogString(strNotify);   
  •     }   
  • }   
  •   
  • /**  
  •  *  绘制用户视频  
  •  *  数据来源于回调函数  
  •  *  @param dwUserid 用户ID号  
  •  *  @param lpBuf 视频数据缓冲区  
  •  *  @param dwLen 缓冲区大小  
  •  *  @param bmiHeader 视频缓冲区的头信息,包含了视频的大小、颜色位数等信息  
  •  */  
  • void CBRAnyChatSDKDemoDlg::DrawUserVideo(DWORD dwUserid, LPVOID lpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader)   
  • {   
  •     // 根据用户ID号找到合适的显示区域   
  •     DWORD dwSite = -1;   
  •     for(INT i=0; i<DEMO_SHOW_USER_NUM; i++)   
  •     {   
  •         if(m_iUserID[i] == (INT)dwUserid)   
  •         {   
  •             dwSite = i;   
  •             break;   
  •         }   
  •     }   
  •     if(dwSite == -1)   
  •         return;   
  •   
  •     CRect dispRect = m_UserRect[dwSite];   
  •   
  •     //构建Bitmap     
  •     BITMAPINFOHEADER  *lpbmi = (BITMAPINFOHEADER*)malloc(sizeof(BITMAPINFOHEADER)+dwLen);     
  •     ZeroMemory(lpbmi,sizeof(BITMAPINFOHEADER)+dwLen);   
  •     memcpy((LPBYTE)lpbmi,&bmiHeader,sizeof(bmiHeader));   
  •     memcpy(((LPBYTE)lpbmi+sizeof(BITMAPINFOHEADER)),lpBuf,dwLen);     
  •   
  •     HDC hdc = ::GetDC(m_hWnd);   
  •     HDC dcMem = ::CreateCompatibleDC(hdc);     
  •     HBITMAP hBitmap = CreateDIBitmap(hdc,lpbmi,CBM_INIT,(LPBYTE)lpbmi+sizeof(BITMAPINFOHEADER),(LPBITMAPINFO)lpbmi,DIB_RGB_COLORS);     
  •     //绘图     
  •     HBITMAP holdbm = (HBITMAP)SelectObject(dcMem,hBitmap);     
  •     ::SetStretchBltMode(hdc,COLORONCOLOR);   
  •     ::StretchBlt(hdc,dispRect.left,dispRect.top,dispRect.Width(),dispRect.Height(),dcMem,0,0,bmiHeader.biWidth,bmiHeader.biHeight,SRCCOPY);   
  •   
  •     SelectObject(dcMem,holdbm);     
  •     ::DeleteDC(dcMem);   
  •     ::DeleteObject(hBitmap);   
  •     ::ReleaseDC(m_hWnd,hdc);   
  •     free(lpbmi);   
  •     lpbmi = NULL;   
  • }   
  •   
  • BOOL CBRAnyChatSDKDemoDlg::OnInitDialog()   
  • {   
  •     CDialog::OnInitDialog();   
  •   
  •     // IDM_ABOUTBOX must be in the system command range.   
  •     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);   
  •     ASSERT(IDM_ABOUTBOX < 0xF000);   
  •   
  •     CMenu* pSysMenu = GetSystemMenu(FALSE);   
  •     if (pSysMenu != NULL)   
  •     {   
  •         CString strAboutMenu;   
  •         strAboutMenu.LoadString(IDS_ABOUTBOX);   
  •         if (!strAboutMenu.IsEmpty())   
  •         {   
  •             pSysMenu->AppendMenu(MF_SEPARATOR);   
  •             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   
  •         }   
  •     }   
  •   
  •     SetIcon(m_hIcon, TRUE);         // Set big icon   
  •     SetIcon(m_hIcon, FALSE);        // Set small icon   
  •        
  •     // 初始化每个视频显示位置信息   
  •     GetDlgItem(IDC_STATIC_USER0)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_USER0)->GetClientRect(m_UserRect[0]);     
  •     GetDlgItem(IDC_STATIC_USER0)->ClientToScreen(m_UserRect[0]);   
  •     ScreenToClient(m_UserRect[0]);   
  •   
  •     GetDlgItem(IDC_STATIC_USER1)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_USER1)->GetClientRect(m_UserRect[1]);     
  •     GetDlgItem(IDC_STATIC_USER1)->ClientToScreen(m_UserRect[1]);   
  •     ScreenToClient(m_UserRect[1]);   
  •   
  •     GetDlgItem(IDC_STATIC_USER2)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_USER2)->GetClientRect(m_UserRect[2]);     
  •     GetDlgItem(IDC_STATIC_USER2)->ClientToScreen(m_UserRect[2]);   
  •     ScreenToClient(m_UserRect[2]);   
  •   
  •     GetDlgItem(IDC_STATIC_USER3)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_USER3)->GetClientRect(m_UserRect[3]);     
  •     GetDlgItem(IDC_STATIC_USER3)->ClientToScreen(m_UserRect[3]);   
  •     ScreenToClient(m_UserRect[3]);   
  •   
  •     // 隐藏录像状态标志   
  •     GetDlgItem(IDC_STATIC_RECORDSTATE0)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_RECORDSTATE1)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_RECORDSTATE2)->ShowWindow(SW_HIDE);   
  •     GetDlgItem(IDC_STATIC_RECORDSTATE3)->ShowWindow(SW_HIDE);   
  •        
  •     for(INT i=0; i<DEMO_SHOW_USER_NUM; i++)   
  •     {   
  •         m_iUserID[i] = -1;   
  •     }   
  •        
  •     m_dwTransTaskId = -1;   
  •   
  •     m_iPort = 8906;   
  •     m_iRoomId = 1;   
  •     SetDlgItemText(IDC_IPADDRESS_SERVER,"demo.anychat.cn");   
  •     SetDlgItemText(IDC_EDIT_USERNAME,"AnyChat5");   
  •     UpdateData(FALSE);   
  •     return TRUE;  // return TRUE  unless you set the focus to a control   
  • }   
  •   
  • void CBRAnyChatSDKDemoDlg::OnSysCommand(UINT nID, LPARAM lParam)   
  • {   
  •     if ((nID & 0xFFF0) == IDM_ABOUTBOX)   
  •     {   
  •         CAboutDlg dlgAbout;   
  •         dlgAbout.DoModal();   
  •     }   
  •     else  
  •     {   
  •         CDialog::OnSysCommand(nID, lParam);   
  •     }   
  • }   
  •   
  • // If you add a minimize button to your dialog, you will need the code below   
  • //  to draw the icon.  For MFC applications using the document/view model,   
  • //  this is automatically done for you by the framework.  

  •     
    [2] 小圈子.大社交:利用圈子引爆盛行
        来源: 互联网  发布时间: 2014-02-18
    小圈子.大社交:利用圈子引爆流行

    《小圈子.大社交:利用圈子引爆流行》
    基本信息
    作者: (爱尔兰)Paul Adams [作译者介绍]
    译者: 王志慧
    出版社:人民邮电出版社
    ISBN:9787115296818
    上架时间:2012-11-13
    出版日期:2012 年11月
    开本:32开
    页码:1
    版次:1-1
    所属分类: 计算机 > 电子商务与计算机文化 > 综合

    更多关于 》》》《小圈子.大社交:利用圈子引爆流行》
    内容简介
    书籍
    计算机书籍
      《小圈子·大社交:利用圈子引爆流行》以对社交网络和社交行为的最新研究为基础,描述了如何与人们建立良好的关系,以及如何通过社交网络传播理念与品牌信息。内容涉及社交网络会怎样影响人,联系最密切的人为何会造成最大的影响,关注朋友间相互联系的社交圈为何比关注极具影响力的人物更重要。
      《小圈子·大社交:利用圈子引爆流行》观点新颖,内容贴近实际,不仅能为营销人员提供具有启示意义的参考,也适合普通大众阅读。
    目录
    《小圈子·大社交:利用圈子引爆流行》
    第1章  网络在改变  1
    1.1  网络在如何改变  2
    1.2  为什么网络会改变  9
    1.3  为什么社交网络对企业有着重要意义  11
    1.4  小结  13
    1.5  延伸阅读  14
    第2章  我们为何及如何与他人沟通  17
    2.1  我们为何交谈  18
    2.2  我们谈些什么  21
    2.3  我们与谁交谈  26
    2.4  小结  29
    2.5  延伸阅读  30
    第3章  社交方式对我们的影响  33
    3.1  社交圈结构  34
    3.2  自然而然形成圈子  40
    3.3  社交圈结构改变我们受影响的方式  45
    3.4  小结  50
    3.5  延伸阅读  51
    第4章  人际关系如何影响我们  53
    4.1  人际关系的类型和模式  54
    4.2  强联系  61
    4.3  弱联系  64
    4.4  人际关系如何变化  68
    4.5  小结  69
    4.6  延伸阅读  70
    第5章  有影响力的人:破灭的神话  73
    5.1  来往的人多并不代表影响力大  74
    5.2  人会被影响,所以思想得以传播  76
    5.3  核心人物如何传播思想  79
    5.4  小结  83
    5.5  延伸阅读  84
    第6章  我们被周围的事物所影响  87
    6.1  社会认同  88
    6.2  圈子内部的影响  92
    6.3  扩大的社交圈的影响  96
    6.4  专家如何施加影响  98
    6.5  小结  99
    6.6  延伸阅读  100
    第7章  大脑如何影响我们  103
    7.1  我们不是理性的思考者  104
    7.2  大多数行为受潜意识脑支配  108
    7.3  记忆十分不可靠  113
    7.4  小结  115
    7.5  延伸阅读  116
    第8章  偏见如何影响我们  119
    8.1  他人影响我们的看法  120
    8.2  既有观念影响我们的看法  122
    8.3  习惯影响我们的看法  125
    8.4  环境暗示影响我们的看法  127
    8.5  小结  129
    8.6  延伸阅读  130
    第9章  社交网络上的营销和广告  133
    9.1  打扰式营销的困境  134
    9.2  许可营销和口碑营销的兴起  137
    9.3  建立信任和信誉  143
    9.4  小结  147
    9.5  延伸阅读  147
    第10章  总结  151
    10.1  今日社交网络  152
    10.2  放眼未来  156

    本图书信息来源:中国互动出版网


        
    [3] PowerManager.WakeLock应用(转)
        来源: 互联网  发布时间: 2014-02-18
    PowerManager.WakeLock使用(转)

    使用PowerManager.WakeLock来保证程序运行时保持手机屏幕的恒亮。

        public class WakeLockDemo extends Activity { 
            private PowerManager.WakeLock wakeLock = null; 
         
            //获取锁 
            public void acquireWakeLock(Context context) { 
                if (wakeLock == null) { 
                    PowerManager powerManager = (PowerManager)(context.getSystemService(Context.POWER_SERVICE)); 
                    wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); 
                    wakeLock.acquire(); 
                } 
            } 
         
            //释放锁 
            public void releaseWakeLock() { 
                if(wakeLock != null && wakeLock.isHeld()){ 
                    wakeLock.release(); 
                    wakeLock = null; 
                } 
            } 
         
            @Override 
            public void onCreate() { 
                super.onCreate(); 
                 //初始化 
            } 
         
            @Override 
            public void onResume() { 
                 acquireWakeLock(this); 
                super.onResume(); 
            } 
         
            @Override 
            public void onPause() { 
                 releaseWakeLock(); 
                super.onPause(); 
            } 
         
        } 





    各种锁的类型对CPU 、屏幕、键盘的影响:

    PARTIAL_WAKE_LOCK:       保持CPU 运转,屏幕和键盘灯可以关闭。

    SCREEN_DIM_WAKE_LOCK:   保持CPU 运转,保持屏幕显示,但可以变暗,允许键盘灯关闭。

    SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许键盘灯关闭。

    FULL_WAKE_LOCK:         保持CPU 运转,保持屏幕和键盘灯都高亮显示。

    ACQUIRE_CAUSES_WAKEUP:  当获取锁后,立刻亮屏,典型地使用在通知中,以让用户立刻查看。

    ON_AFTER_RELEASE:       在释放锁(release())后,手机屏幕仍会继续亮一会儿。

        
    最新技术文章:
    ▪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