要求
· 熟悉ADB工具在Ubuntu Kylin系统上的安装、配置与使用;完整准确地理解ADB各项命令的参数和含义
· 基本功能(最低要求):
· 形成完善的设计文档
· 根据可以实现的管理功能,设计出独具特色的图形化管理界面(推荐但不限于使用Qt/QML);
· 能够上传/下载手机文件
· 能够安装/卸载手机应用
· 能够发送短信、打电话
· 高级功能(任选1项,多选不限)
· 壁纸、铃声的设置
· 相同wifi下的手机与电脑互联,可传送文件
· 手机垃圾的清理和性能加速
· 获取root权限等
· ...
目标
1.实现Android端服务器的架设。
2.实现项目在Ubuntu Kylin操作系统下的桌面化。
3.实现Android端服务器的前台框架。
4.实现项目的基本功能,如上传/下载手机文件、安装/卸载手机应用、发送短信、打电话等。
5.实现项目的高级功能,如壁纸、铃声的设置。
6.实现USB连接。
手机端采用的服务器框架
手机端采用Paw Server做为服务器框架,Paw Server实现了PC与Android手机的交互,并允许在Android手机中发布动态网页。
通过PAW服务器,我们可以把在浏览器上使用Android系统的各种功能。在Android系统上搭建自己的Web服务器。支持添加插件和使用PHP脚本。
PAW Server支持的功能如下:
1.将服务器中的属性通过<bsh>标签在Html中展示。
2.拨号、呼叫
3.发短信
4.发邮件
5.播放多媒体文件
6.GPS
7.控制Wifi
8.调用相机
9.消息推送
手机端服务器框架技术评估
优麒麟手机助手的最终目的是帮助用户简化管理手机的操作,提供给用户完美的用户体验,所以必须具备的功能有文件显示、照片/视频播放、打电话、发短信、安装/卸载应用、手机铃声、壁纸等等。
1短信功能
而Paw框架提供给我们所有的与Android交互的调用方法和范例,如发送短信,Paw定义的短信参数有smsMessage和 smsNumber.。
另外SmsListener提供了如下的脚本方法:
1. boolean registerScript(String name, String code);
2. boolean updateScript(String name, String code);
3. boolean removeScript(String name):
4. TreeMap getScripts():
5. clearScripts():
6. testMessage(String phoneNumber, String smsBody):
如需要发送短信,我们只需在HTML代码中插入如下脚本:
1. import de.fun2code.android.pawserver.listener.*;
2. SmsListener.registerScript("test", "makeToast(\"Number: \" + smsNumber + \"
3. Message: \" + smsMessage, \"short\");");
4. SmsListener.testMessage("5463", "SMS message...");
2多媒体功能
在对音频和视频文件的调用和操作中,paw也提供了很多方法,如:
5. void openfile(String path);
6. void openfileAsync(String path);
7. void open(in int [] list, int position);
8. int getQueuePosition();
9. boolean isPlaying();
10. void stop();
11. void pause();
12. void play();
13. void prev();
14. void next();
15. long duration();
16. long position();
17. long seek(long pos);
18. String getTrackName();
19. String getAlbumName();
20. int getAlbumId();
21. String getArtistName();
22. int getArtistId();
23. void enqueue(in int [] list, int action);
24. int [] getQueue();
25. void moveQueueItem(int from, int to);
26. void setQueuePosition(int index);
27. String getPath();
28. int getAudioId();
29. void setShuffleMode(int shufflemode);
30. int getShuffleMode();
31. int removeTracks(int first, int last);
32. int removeTrack(int id);
33. void setRepeatMode(int repeatmode);
34. int getRepeatMode();
35. int getMediaMountedCount();
3文件展示功能
相比于以上操作,对Android本地目录的展示和交互是一个难点,但是我们调用FileManager来处理,我们通过SVN来获取FileManager:
1. svn co svn://corefive.com/svn/trunk/
将FileManager的配置文件放在Content.zip中的脚本文件目录下即可。
FileManager提供了操作文件夹和文件的方法,我们要做的只剩下和Android系统的对接。
如获取文件夹操作,我们可以调用getfolder,getfolder方法会返回一个文件对象的数组,同时我们可以调用getinfo方法来得到文件的详细信息。
比如我们发送一个请求:
1. [path to connector]?mode=getfolder&path=/UserFiles/Image/&getsizes=true
会得到如下回复:
1. [
2. "/UserFiles/Image/logo.png" = {
3. Path: "/UserFiles/Image/logo.png",
4. Filename: "logo.png",
5. File Type: "png",
6. Preview: "/UserFiles/Image/logo.png",
7. Properties: {
8. Date Created: null,
9. Date Modified: "02/09/2007 14:01:06",
10. Height: 14,
11. Width: 14,
12. Size: 384
13. },
14. Error: "",
15. Code: 0
16. },
17. "/UserFiles/Image/icon.png" = {
18. Path: "/UserFiles/Image/icon.png",
19. Filename: "icon.png",
20. File Type: "png",
21. Preview: "/UserFiles/Image/icon.png",
22. Properties: {
23. Date Created: null,
24. Date Modified: "02/09/2007 14:01:06",
25. Height: 14,
26. Width: 14,
27. Size: 384
28. },
29. Error: "",
30. Code: 0
31. }
32. ]
每一个key在这个数组中都是一个类目的路径,而value则是这个文件类型对象。
4 拨打电话
拨打电话的行为分为两个部分:拨号和呼出。
电话号码就是一个参数,如果我们需要拨一个号码,可以调用如下脚本:
1. dial("*100#");
在手机上呼叫一个号码,号码同样被认为是一个参数,如下脚本可以呼出一个号码:
1. call("*100#");
5 与前台的对接
在与前台的对接中,由于所有后台代码都直接嵌入在HTML中,所以可以很方便的进行JS库的调用。
桌面端技术评估
为了在桌面端表现的更像是一个桌面应用,我们采用Qt+HTML5的技术架构。采用这种架构需要解决三个大问题:
1)需要考虑交互式设计,使页面能够根据“设备”(电脑端应用窗口)的大小进行自动调整。
2)页面图标的样式和行为具有一定的模式和可定制性,看起来像桌面的快捷方式。包含一个中间为加号的图标,点击的话用户可以从后台选择并添加指定的功能图标。
3)点击某个功能图标能够打开一个看起来像应用的窗口。