- 博客(0)
- 资源 (10)
- 收藏
- 关注
Android局域网音频通信
Android局域网音频通信程序,利用AudioRecord采集,AudioTrack播放。程序通过无线局域网和2个android平板的测试,效果良好
2012-07-25
SipDroid客户端源码
1. sipdroid\src\org\zoolu 中是sip协议栈的实现
2. sipdroid\src\org\sipdroid 中是软电话的实现
3. sipdroid\src\com 中是stun相关的实现
4. sipdroid默认使用的编码格式为G711-A率。
5. 直接用ant debug的方法编译出的程序,只支持A率和U率两种音频编码格式,其他的都需要通过NDK的方法导入后,才能使用。
6. 如果对端终端支持视频的话(如linphone),菜单如下:
保持,静音,
转移 发送视频 挂断
注意:只能发送视频,接收不到对端的视频。
7. 如果对端终端不支持视频的话(如yate),菜单如下:
保持,静音,
转移 挂断
8. sipdroid\src\org\sipdroid\sipua\ui 中的VideoCamera.java,有视频捕获,发送,接收的实现。
9. sipdroid\src\org\sipdroid\sipua\ui 中的CallScreen.java中的 VIDEO_MENU_ITEM 标识了 “发送视频”
10. Activity2.java 实现了跳转到InCallScreen.java
11. class InCallScreenextends CallScreen
12. sipdroid.java 中有“关于 退出 设置”菜单的实现。
在AndroidManifest.xml中,
表明了哪个Activity先启动。
13. 网络传来的音频数据通过AudioTrack类进行播放。
14. 本地的音频数据通过AudioRecord类进行录制。
15. 在本地播放数据包中的视频流,可以先提取位图,再显示。由于系统没有提供直接播放的相关方法。
16. 线程同步的方法 – synchronized
17. F:\sipdroid\res\drawable 中的图标可以更换
18. sipdroid\res\values-zh-rCN 修改【关于】显示框的内容
19
在Sipdroid开源项目像服务器进行数据的发送统一是由SipProvider的sendMessage,因为首先得知道是什么连接 是UDP啊,还是TCP,然后就是message的封装
20.
是无连接的包投递服务,为什么是无连接呢,客户端和服务器压根就没有建立连接,服务器只是开放了端口来接受数据,有了就接受,没有就悬挂阻塞.
21双边的视频观看,走的还是数据报包,有数据报包的ip和端口就行了
22 但是Sipdroid可以直接的从MediaRecord里面已经生成好的视频数据中提取出H264/H263的数据,这些数据已经经过了相应的编码
23如何观看视频:
mVideoFrame.setVideoURI(Uri.parse("rtsp://"+Receiver.engine(mContext).getRemoteAddr()+"/"+
Receiver.engine(mContext).getRemoteVideo()+"/sipdroid"));
24 通过内置的videoview来通过RTSP来进行播放,那么也就是说服务器会将传递的RTP的视频数据流封装成RTSP的流传递给手机的videoview来实现观看,同样也不需要解码库,
所以Sipdroid开源代码里只有声音的编码库,没有视频的编码库.
25
最好的实现该软件的方法是,借助Android的MediaRecorder实时提取出H263/H264数据,然后经过RTP封装传给RTSP服务器,这种实现方式最理想,通过获取onPrewFrame来获取预览帧编码,无论怎么弄,不可避免的,延时,丢帧各种情况都会让你非常的棘手
2012-07-16
基于android手机的远程视频监控系统
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
import java.net.Socket;
import java.net.ServerSocket;
/**
*在服务器开启情况下,启动客户端,创建套接字接收图像
*/
public class ImageServer {
public static ServerSocket ss = null;
public static void main(String args[]) throws IOException{
ss = new ServerSocket(6000);
final ImageFrame frame = new ImageFrame(ss);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
while(true){
frame.panel.getimage();
frame.repaint();
}
}
}
/**
A frame with an image panel
*/
@SuppressWarnings("serial")
class ImageFrame extends JFrame{
public ImagePanel panel;
public JButton jb;
public ImageFrame(ServerSocket ss){
// get screen dimensions
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
// center frame in screen
setTitle("ImageTest");
setLocation((screenWidth - DEFAULT_WIDTH) / 2, (screenHeight - DEFAULT_HEIGHT) / 2);
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// add panel to frame
this.getContentPane().setLayout(null);
panel = new ImagePanel(ss);
panel.setSize(640,480);
panel.setLocation(0, 0);
add(panel);
jb = new JButton("拍照");
jb.setBounds(0,480,640,50);
add(jb);
saveimage saveaction = new saveimage(ss);
jb.addActionListener(saveaction);
}
public static final int DEFAULT_WIDTH = 640;
public static final int DEFAULT_HEIGHT = 560;
}
/**
A panel that displays a tiled image
*/
@SuppressWarnings("serial")
class ImagePanel extends JPanel {
private ServerSocket ss;
private Image image;
private InputStream ins;
public ImagePanel(ServerSocket ss) {
this.ss = ss;
}
public void getimage() throws IOException{
Socket s = this.ss.accept();
System.out.println("连接成功!");
this.ins = s.getInputStream();
this.image = ImageIO.read(ins);
this.ins.close();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
if (image == null) return;
g.drawImage(image, 0, 0, null);
}
}
class saveimage implements ActionListener {
RandomAccessFile inFile = null;
byte byteBuffer[] = new byte[1024];
InputStream ins;
private ServerSocket ss;
public saveimage(ServerSocket ss){
this.ss = ss;
}
public void actionPerformed(ActionEvent event){
try {
Socket s = ss.accept();
ins = s.getInputStream();
// 文件选择器以当前的目录打开
JFileChooser jfc = new JFileChooser(".");
jfc.showSaveDialog(new javax.swing.JFrame());
// 获取当前的选择文件引用
File savedFile = jfc.getSelectedFile();
// 已经选择了文件
if (savedFile != null) {
// 读取文件的数据,可以每次以快的方式读取数据
try {
inFile = new RandomAccessFile(savedFile, "rw");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
int amount;
while ((amount = ins.read(byteBuffer)) != -1) {
inFile.write(byteBuffer, 0, amount);
}
inFile.close();
ins.close();
s.close();
javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
"已接保存成功", "提示!", javax.swing.JOptionPane.PLAIN_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是PC机上使用类,详细请看附件...
2012-07-13
Android核心技术与实例详解
Android核心技术与实例详解是一本pdf电子书。全书结合真实的案例,向读者介绍了Android的基本组件的使用及应用程序开发的整个流程。此书适合Android初学者,也适合具备一定Android开发经验但需要开发实例的高级读者。
Android核心技术与实例详解,全书共有18章,由浅入深地介绍了Android开发的每一个细节,共包含三大领域:基础应用,网络应用和游戏应用。
以下是节选的目录列表:
1. Android的概述
2. Android的开发基础
3. Android中的资源访问
4. Android中的用户界面
5. Android基本程序单元Activity
6. Android组件之间的信使Intent
......
2012-07-13
Android核心技术与实例详解【源代码】
一:首先是源码部分
基 础 篇
第1章 android开发起步
本章将要介绍的是android开发起步的相关知识,首先对android平台进行简单的介绍,其中包括android的背景及其应用程序的框架。
第2章 android应用程序的构成
本章主要对android的基本组件及android应用程序的构成进行介绍,同时还将对android应用程序的生命周期进行分析,掌握android基本组件的特性及使用方法。
第3章 android布局管理器
本章要介绍的内容为android平台下的布局管理器。android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。下面将分别对每个布局管理器进行详细的介绍。
第4章 android常用基本控件
本章将对进行用户界面开发时常用到的android基本控件进行介绍,主要包括文本框、按钮、单选按钮和复选按钮、状态开关按钮和日期时间控件等。了解这些基本控件的工作方式有助于学习后面要介绍的android中的高级控件。
第5章 android常用高级控件
上一章已经介绍了android中的一些基本控件,本章将继续上一章的思路,对android中常用的高级控件逐一进行介绍。
第6章 菜单与对话框
在前面的章节中介绍了android平台下开发用户界面时常用的基本控件与高级控件,但在实际开发中只运用这些控件是不够的。本章将介绍用户界面中菜单与对话框的开发,同时还会对android平台下的toast和notification进行介绍。
第7章 android事件处理模型
本章将对android平台用户界面的各种事件响应进行详细介绍,以加深读者对android平台的事件处理模型的理解,熟练掌握控件的各种事件处理方法。
android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,接下来会分别对其进行介绍。
高 级 篇
第8章 游戏与3d应用程序开发
android平台下的应用开发,一般来说主要分为商业应用和游戏两种,在开发商业应用时主要会用到本书前面章节曾介绍过的控件和菜单对话框等知识,而开发游戏时就只能自己定义各种控件和界面了。本章将要介绍如何在android平台下使用view和surfaceview开发游戏,在本章的最后还将对android平台下进行3d场景的开发进行简单的介绍。
第9章 消息广播与服务
本章将对android的消息广播机制及服务组件进行详细介绍。在很多应用程序中,都会通过广播形式来发送和接收消息。当应用程序接收到消息后,一般启动一个activity或者一个service进行处理。本章将对之前介绍过的服务组件service进行详细介绍,章末通过对一个单机版的音乐播放盒的介绍帮助读者掌握服务组件的使用方法。
第10章 网络与数据处理
本章要介绍的内容是android平台下进行网络编程及数据处理的相关知识,内容包括网络通信的几种方式(如使用socket、url、socket等)、如何使用webview浏览网页,以及文件的上传和下载。最后介绍访问手机存储卡的方法及如何在程序中使用sqlite数据库。
第11章 手机通信功能开发
本章将对android手机通信功能的开发进行介绍,其中包括短信的收发及状态查询、电话的拨打与接听、来电的过滤和e-mail邮件的收发等,通过本章的学习,读者应该能够对android平台手机通信功能有一定的了解。
第12章 手机特有feature开发
本章将要介绍的是android手机特有feature的开发,主要包括响应系统设置更改事件、设置手机外观和其他的特性。同时还将介绍如何在程序中获取sim卡和电池电量等信息,最后将以手机闹钟为例讲述如何自己开发特定功能的手机应用。
第13章 桌面组件与多媒体数据采集
本章将介绍android中桌面组件及多媒体相关程序的开发,其中包括桌面快捷方式、实时文件夹、桌面控件、声音及图像的采集等。
第14章 传感器应用的开发
android系统的一大亮点之一就是对传感器的应用,利用传感器可以开发出很多新奇有趣的程序,小到水平仪、计步器,大到传感器游戏,本章将详细介绍各种传感器的原理及使用方法,并通过一个水平仪的开发向读者介绍传感器应用的开发方法,以及如何在模拟器中模拟各种传感器。
第15章 google服务
本章将介绍如何在android平台下开发基于google服务的应用程序。google提供了诸如gps定位、google map、天气预报、网络相册和在线翻译等多种服务,将这些服务融合到应用程序中将会带来非常好的用户体验。
案 例 篇
第16章 android游戏开发实践——快乐数独
益智类游戏是一种比较流行的游戏,其画面大都比较简单,很少有很复杂的游戏特效,但是通常用到人工智能的算法来控制游戏的难度。而算法的优化是开发该类游戏的难点。这类游戏主要包括棋牌类游戏和智力测试类游戏,例如麻将、扫雷、五子棋、扑克牌等。
数独就是益智游戏的一种,玩法简单但数字的排列方式千变万化,很多人认为数独是训练头脑的绝佳方式。本章通过讲解数独游戏在android平台上的设计与实现,使读者了解此类游戏的开发过程,掌握实用的开发技巧,学会此类游戏的开发。
第17章 android地图搜索应用——美食天下
第15章已经介绍了google map的简单使用,本章将通过之前介绍过的知识实现一个美食共享软件,其中包括服务端和手机端,希望通过本章的学习,读者能够掌握android系统与tomcat服务器的通信、google地图的使用及各种控件的综合应用。
第18章 android社交分享平台——口袋微博
本章将介绍社交分享平台——口袋微博的实现,该社交分享平台包括web端和android手机端两个部分。在介绍了整个系统的背景及功能架构之后,本书将对该系统在web端和android手机端的实现进行介绍。
1到18章的各章案例都有源码
二:其次是精品ppt课件
包括了第16章 Android游戏开发实践—快乐数独
第17章 Android地图搜索应用—美食天下
第18章 Android社交分享平台—口袋微博
这三个章节的课件
三:部分章节电子书
包括是第7和第14章节的pdf文档
由于权限限制第二、三部分内容在另外我的下载中。
QQ:719759705 msn:[email protected]
博客:http://blog.sina.com.cn/androidjimesjie
欢迎大家一起讨论交流。
另外一款应用Android_GooNuu也已经上传,包括天气、新闻、航班、火车、百宝箱、用户反馈等模块,大家可以下载使用多提意见。
最后希望对大家有帮助,动手多跑例子多修改程序才会发现自动的不足之处。
================================================================================================
2012-07-13
基于Android平台的实时自适应音频传输技术及其实现
为流媒体的一个重要分支也在不断地发展,然而大多数的应用都是在PC平台上,随着嵌入式平台的不断发展,流媒体的应用也在逐步迈向嵌入式系统,该文件以当前热门的Android系统为平台,提出一种高质量音频的实时自适应传输解决方案。
2012-07-12
MyEclipse_10.1_Activition
MyEclipse 10.1破解步骤*****************************************
1.打开MyEclipse10.1注册机文件夹,按照里面的破解步骤完成所有操作。
2.打开“替换文件”文件夹,将里面所有的文件和文件夹拷贝到..\MyEclipse\Common\plugins中(全部覆盖掉)。
3.在...\MyEclipse\MyEclipse 10\myeclipse.ini中添加
-Dgenuitec.honorDevMode=true
-Dosgi.dev=true
************************************MyEclipse 10.1破解步骤*****************************************
至此所有的破解步骤已经完成,Windows7和Ubuntu11.10测试通过。
声明:仅供学习研究之用,严禁任何商业用途,请于下载后的24小时内删除!
2012-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人