- 博客(0)
- 资源 (13)
- 收藏
- 关注
数字对讲通信协议
一、 系统结构
二、基本网络设置
三、 通信流程
四、 音视频格式
视频捕获:VGA(640*480)25帧/秒
编码:MJPEG
音频捕获:8K采样率 16位 单声道
编码:G.711 a 律
注:
端口:8300 ―――用于数据及命令
8302 ―――用于对讲相关
地址编码:
通信协议地址编码采用20字节方便以后升级,目前总共12字节,以ASCII码表示,其中第1字节内部使用,即实际供用户输入的最多11字节。
室内机
2016-02-01
仿微信朋友圈图片查看
package com.example.imagedemo;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* 自定义的“九宫格”——用在显示帖子详情的图片集合
* 解决的问题:GridView显示不全,只显示了一行的图片,比较奇怪,尝试重写GridView来解决
*
* @author lichao
* @since 2014-10-16 16:41
*
*/
public class NoScrollGridView extends GridView {
public NoScrollGridView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public NoScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public NoScrollGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
2016-02-01
g711编解码
#include <stdio.h>
#include <stdlib.h>
#include "g7.h"
#include "g711.h"
/*G711DECODE_API */int CALLMETHOD decode_Init(void)
{
return g711_ERR_NOERROR;
}
/*G711DECODE_API */int CALLMETHOD g711a_Encode(unsigned char *src,unsigned char *dest,unsigned int srclen,unsigned int *dstlen)
{
int i,tmp;
signed short src_data;
unsigned char mask;
unsigned short *ps=(unsigned short*)src;
*dstlen=0;
tmp = srclen/2;
for(i=0; i<tmp; i++)
{
//dest[i]=linear2alaw(ps[i]);
src_data = ps[i];
mask = (src_data < 0) ? 0x7f : 0xff;
if (src_data < 0)
src_data = -src_data;
src_data >>= 4;
dest[i] = _l2A[src_data] & mask;
}
*dstlen = srclen/2;
return 1;
}
G711DECODE_API int CALLMETHOD g711a_Decode( unsigned char *src,unsigned char *dest,unsigned int srclen,unsigned int *dstlen)
{
int i;
unsigned short *pd=(unsigned short*)dest;
for(i=0; i<srclen; i++)
{
pd[i]=(unsigned short)_A2l[src[i]];
}
*dstlen = srclen<<1;
return 1;
}
G711DECODE_API int CALLMETHOD g711u_Encode(unsigned char *src,unsigned char *dest,unsigned int srclen,unsigned int *dstlen)
{
int i,tmp;
signed short src_data;
unsigned char mask;
unsigned short *ps=(unsigned short*)src;
static unsigned int data_type = 0xffffffff;
*dstlen=0;
tmp = srclen/2;
for(i=0; i<tmp; i++)
{
dest[i]=linear2ulaw(ps[i]);
}
*dstlen = srclen/2;
return 1;
}
G711DECODE_API int CALLMETHOD g711u_Decode( unsigned char *src,unsigned char *dest,unsigned int srclen,unsigned int *dstlen)
{
int i;
unsigned short *pd=(unsigned short*)dest;
for(i=0; i<srclen; i++)
{
pd[i]=(unsigned short)_u2l[src[i]];
// pd[i]=(unsigned short)_l2u[src[i]];
}
*dstlen = srclen<<1;
return 1;
}
G711DECODE_API int CALLMETHOD decode_Cleanup(void)
{
return g711_ERR_NOERROR;
}
2016-02-01
ListViewLoadMore
listview 加载更多
/**
* 模拟加载数据
*/
private void loadData() {
int count = adapter.getCount();
for (int i = count; i < count + 20; i++) {
adapter.addItem(String.valueOf(i + 1));
}
}
public class ListViewAdapter extends BaseAdapter {
private Map<Integer,View> m=new HashMap<Integer,View>();
private List<String> items;
private LayoutInflater inflater;
public ListViewAdapter(List<String> items, Context context) {
super();
this.items = items;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return items.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View contentView, ViewGroup arg2) {
// TODO Auto-generated method stub
contentView=m.get(position);
if(contentView==null){
contentView=inflater.inflate(R.layout.listview_item, null);
TextView text=(TextView) contentView.findViewById(R.id.list_item_text);
text.setText(items.get(position));
}
m.put(position, contentView);
return contentView;
}
public void addItem(String item) {
items.add(item);
}
2016-02-01
CTA认证资料
CTA认证数据资料
CTA认证数据
1、 摸底测试
摸底机构:中心实验室及其它检测中心
摸底目的:保证入网检测顺利通过。
摸底周期:无委2天、EMC/泰尔3天、现网1天
摸底项目:
EMC:射频杂散骚扰(需要合作方提供摸底检测报告)、辐射连续骚(需要合作方提供摸底检测报告)、静电放电抗扰度(ESD);
无委:射频传导杂散、辐射杂散(需要合作方提供摸底检测报告)、射频;
泰尔:业务与功能测试、性能测试、音频测试、环境适应性测试、寿命测试;
现网:电信业务、GPRS业务、与不同移动通信运营商长时间通话的通信效果。
摸底样机:EMC\泰尔样机:12部;
无委样机:6部;
现网样机:2部;
二、省市无委型号核准申请办理
目的:省无线电发射设备型号核准和审批。
周期:15天(市无委3-5天,省无委7-10天)
项目:功能(所提供机器功能良好,外观与送样机器一致)
样机:1部(带电池)
资料:①技术指标1份;
②彩照2份(要求机型型号,身份条型号清晰、完整);
③省无委入网申请表1份;
④核准无线电发射设备型号申请表3份。
备注:省市无委核准证办理样机需尽早提供。(办理无委型号核准证必须拿到省无委型号核准申请才可办理)
三、北京无委测试
。。。。。。。。。。。
2013-07-02
Android学习笔记
Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。
SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。
今天主要讨论的,还是永远不变的话题:Hello World.
2009-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人