【转】在android平台上实现基于xmpp的摄像头截屏发送

前言

本文将讲述一种在android手机之间传输照片的方法。照片来源于手机摄像头的快照,传输的途径是通过xmpp协议。

技术原理

实现照片传输的方式很简单,主要涉及到以下流程:
发送端:
a.绑定本机到一个jabber session。
b.从摄像头获取快照,然后转化成bitmap图片,进而转化成png压缩格式。
c.使用base64,获取该png图片数据的文本形式.
d.通过IXmppSession的sendDataMessage方法,向接收对象的JID发送一个Intent.该intent的extra bundle 中置入png图片的文本载体。该Intent的action假定为SNAPSHOT_XMPP.
接收端:
a.绑定本机到另一个jabber session。
b.在AndroidManifest.xml中注册一个receiver,接收action为SNAPSHOT_XMPP的intent。
c.在该receiver中使用NotificationManager.notifyWithText方法发送一个通知,同时把receiver所接收到的intent的bundle内容(包含照片),拷贝到该通知的clickIntent的bundle中。
d.在该通知所绑定的clickIntent所激活的Activity中,从intent中获取照片的base64编码,再解码成Bitmap,显示。同时取消该通知。
之所以把图片转化文本,进行传输,是因为IXmppSession的sendDataMessage方法所使用的Bundle,目前只能夹带文本数据。

工程下载
点击这里,获取完整的eclipse android工程,名为camera_xmpp.

如何运行
1.在eclipse中运行camera_xmpp.系统将启动模拟器5555
2.将模拟器5555绑定到gmail1.
3.使用adb shell启动模拟器5557。
4.在5557上安装camera_xmpp的apk。
5.将模拟器5557绑定到gmail2.
这5步的操作步骤都可以在文1中找到,其中第4步比较麻烦,涉及到在第2个模拟器中安装apk应用的问题。我常常失败,后来我找到了一种很简单而又很稳妥的解决办法。新的步骤如下:
1.在eclipse中运行camera_xmpp.系统将启动模拟器5555
2.将模拟器5555绑定到gmail1.
3.拷贝C:/Documents and Settings/chenwf/Local Settings/Application Data/Android/userdata.img到c:/userdata2.img。你的环境可能需要酌情修改。
4.在cmd窗口执行以下指令:

emulator -skin QVGA-L -data C:/userdata2.img 

系统将启动模拟器5557,而且因为用户数据和模拟器5555一样,自然就安装了5555的所有应用。
5.将模拟器5557绑定到gmail2.

6.让5555停留在桌面界面。让5557运行截屏传输应用。

7.在5557中传送屏幕截屏到5555所绑定的gmail1.

8.稍后,5555的通知就出现了(左上角).

9.在5555中按上键,通知icon获得焦点。

10.在5555中点击通知icon,显示收到的来自5557的截屏。


题外话
我曾试着在android平台实现远程设备进行实时视频,音频传输,可是目前wifi api还未公布,而xmpp又开不了socket连接,好像还没有办法,不知道大家有没有办法。

作者信息
Jagie,移动开发爱好者,可以通过chen_cwf@163.com与他联系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值