-
AndroidRTC_WebScoke(修改版)
应用背景实现android手机采集音视频进行webrtc处理后, 用 webscoket发送出去, 后台接受后可以实现音视频的通话. 后台代码可在网上查询webtrc node.js版本,直接发布运行即可.关键技术
WebRTC是Google于2011年6月3日开源的即时通讯项目,旨在使其成为客户端视频通话的标准。
刚接触WebRTC的时候你会被里面的一堆概念搞晕,特别是对没接触过音视频的人来说,如WebRTC, ICE, STUN, TURN, P2P, NAT, Jingle, TALK, VOIP, FFMPEG, H264, VP8, NACK, RTP, RTCP, RTSP, RTMP, SIP, XMPP, ISAC, ILBC, OPUS, G711, G722. 晕了吧,凡事都要有个过程的,一步步来吧!不懂了就问问度娘或GOOGLE.大家一起进步吧!加油
请点击左侧文件开始预览 !预览只提供20%的代码片段,完整代码需下载后查看 加载中 侵权举报
- 2022-05-22 10:01:11下载
- 积分:1
-
QQ-for-Android
android客户端仿QQ源代码,包括Client、Server和SQL执行语句(在SQl server中执行就可以),主要实现了一对一、一对多聊天(android client imitation QQ source code, including the Client, Server, and SQL statement is executed (SQl server), the main achievement of the one-to-one, one-to-many chat)
- 2013-04-02 18:42:56下载
- 积分:1
-
Weight
一个简单的计算标准体重的安卓手机软件,用户选择性别,然后输入身高,软件计算出用户标准体重。(This is a software used to calculate the standard weight of people.)
- 2014-03-03 20:27:16下载
- 积分:1
-
Android 自定义的扇形进度条例子
Android 自定义的扇形进度条例子,为了可以模拟真实的加载效果,这里加载了多张网络图片,使用了一个网络图片链接数组来存储图片地址,然后下载这些网络图片,建立 异步任务类等。对扇形进度条的定义说明:
可以设置扇形颜色,背景,起始位置(度数)。
定义了扇形颜色,起始位置(度数),进度等属性。
并为其设置进度。符合条件则更新进度条
这个扇形进度条带给我们的思考:
(1)如何绘制扇形。
(2)重写onDraw(Canvas canvas) 或 draw(Canvas canvas)。
(3)是否保留背景设置。
(4)什么时候以及如何更新进度。
(5)自定义进度、绘画起点度、扇形颜色(背景)等属性。
(6)进度文字的显示。
(7)扫描、旋转、阴影等效果的实现。
- 2022-03-04 09:07:59下载
- 积分:1
-
android 小学生 课程表
小学生课程表,可以自定义课程,自定义每周课程数目。为了程序的健壮性,程序自动记录异常的信息并mail到设定的邮箱
- 2022-01-25 17:48:11下载
- 积分:1
-
Android应用源码之android打电话源码.rar
【实例简介】
- 2021-09-07 00:31:14下载
- 积分:1
-
微信公众平台开发模式(JAVA) SDK/微信app
【核心代码】package com.gson;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.Properties;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletInputStream;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import com.gson.bean.Articles;import com.gson.bean.InMessage;import com.gson.bean.OutMessage;import com.gson.bean.TextOutMessage;import com.gson.inf.MessageProcessingHandler;import com.gson.util.Tools;import com.gson.util.XStreamFactory;import com.thoughtworks.xstream.XStream;/** * 请求拦截 * * @author GodSon * */public class WeChatFilter implements Filter { private final Logger logger = Logger.getLogger(WeChatFilter.class); private String _token; private String conf = "classPath:wechat.properties"; private String defaultHandler = "com.gson.inf.DefaultMessageProcessingHandlerImpl"; private Properties p; @Override public void destroy() { logger.info("WeChatFilter已经销毁"); } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; Boolean isGet = request.getMethod().equals("GET"); String path = request.getServletPath(); String pathInfo = path.substring(path.lastIndexOf("/")); if (pathInfo == null) { response.getWriter().write("error"); } else { _token = pathInfo.substring(1); if (isGet) { doGet(request, response); } else { doPost(request, response); } } } private void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); OutMessage oms = new OutMessage(); ServletInputStream in = request.getInputStream(); // 转换微信post过来的xml内容 XStream xs = XStreamFactory.init(false); xs.alias("xml", InMessage.class); String xmlMsg = Tools.inputStream2String(in); logger.debug("输入消息:[" xmlMsg "]"); InMessage msg = (InMessage) xs.fromXML(xmlMsg); // 获取自定消息处理器,如果自定义处理器则使用默认处理器。 String handler = p.getProperty("MessageProcessingHandlerImpl"); if (handler == null) handler = defaultHandler; try { // 加载处理器 Class clazz = Class.forName(handler); MessageProcessingHandler processingHandler = (MessageProcessingHandler) clazz.newInstance(); // 取得消息类型 String type = msg.getMsgType(); Method mt = clazz.getMethod(type "TypeMsg", InMessage.class); oms = (OutMessage) mt.invoke(processingHandler, msg); if (oms == null) { oms = new TextOutMessage(); ((TextOutMessage) oms).setContent("系统错误!"); } setMsgInfo(oms,msg); } catch (Exception e) { logger.error(e); oms = new TextOutMessage(); ((TextOutMessage) oms).setContent("系统错误!"); try { setMsgInfo(oms,msg); } catch (Exception e1) { logger.error(e); } } // 把发送发送对象转换为xml输出 xs = XStreamFactory.init(true); xs.alias("xml", oms.getClass()); xs.alias("item", Articles.class); String xml = xs.toXML(oms); logger.debug("输出消息:[" xml "]"); response.getWriter().write(xml); } private void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String signature = request.getParameter("signature");// 微信加密签名 String timestamp = request.getParameter("timestamp");// 时间戳 String nonce = request.getParameter("nonce");// 随机数 String echostr = request.getParameter("echostr");// // 验证 if (Tools.checkSignature(_token, signature, timestamp, nonce)) { response.getWriter().write(echostr); } } private void setMsgInfo(OutMessage oms,InMessage msg) throws Exception { // 设置发送信息 Class outMsg = oms.getClass().getSuperclass(); Field CreateTime = outMsg.getDeclaredField("CreateTime"); Field ToUserName = outMsg.getDeclaredField("ToUserName"); Field FromUserName = outMsg.getDeclaredField("FromUserName"); ToUserName.setAccessible(true); CreateTime.setAccessible(true); FromUserName.setAccessible(true); CreateTime.set(oms, new Date().getTime()); ToUserName.set(oms, msg.getFromUserName()); FromUserName.set(oms, msg.getToUserName()); } /** * 启动的时候加载wechat.properties配置 可以在过滤器配置wechat.properties路径 */ @Override public void init(FilterConfig config) throws ServletException { String cf = config.getInitParameter("conf"); if (cf != null) { conf = cf; } String classPath = this.getClass().getResource("/").getPath().replaceAll("%20", " "); conf = conf.replace("classPath:", classPath); p = new Properties(); File pfile = new File(conf); if (pfile.exists()) { try { p.load(new FileInputStream(pfile)); } catch (FileNotFoundException e) { logger.error("未找到wechat.properties", e); } catch (IOException e) { logger.error("wechat.properties读取异常", e); } } logger.info("WeChatFilter已经启动!"); }}
- 2014-01-21下载
- 积分:1
-
Get sms and send sms in android and order list
- 2022-01-31 09:39:27下载
- 积分:1
-
发布活动
可用于图片上传,发布活动 点赞以及收藏 采用bmob云服务器
- 2022-01-23 11:21:51下载
- 积分:1
-
AndroidPushNotificationsDemo
android 推送的项目源码,基于ibm的mqtt的客户端,打包即可运行(Push android project source code, based on the ibm mqtt client, packaged to run)
- 2013-05-25 17:15:51下载
- 积分:1