前言: 学习,掌握Android下套接字的使用.与MFC套接字的通信.

1. 需求: 手机端控制电脑酷狗播放, 上/下一曲, 声音增/减

2. 分析: 手机端用Android , 电脑使用MFC框架实现.酷狗中有全局热键,因此我们可以通过模拟键盘按键从而达到切歌等操作.

3. 手机端实现:

digraph G{fontname="kaiti";label="酷狗手机遥控";edge[fontname="kaiti"];node[shape=record, fontname="kaiti"]{ServiceKugou[label="{(ServiceKugou)连接电脑服务端|发送消息 \|接收消息(Runnable)}"];ControlKugou[label = "{(ControlKugou)响应界面消息|产生相应消息通过ServiceKugou发送出去}"];  CommandType[label="{(CommandType)控制消息集(enum)|播放\|暂停\|上下曲\|声音增减|NEXT_MUSIC\| LAST_MUSIC\| PLAY\| PAUSE\| SOUND_MINUS\| SOUND_PLUS;}"];Main[label="(MainActivity)主界面"];};Main -> ControlKugou -> ServiceKugou[label="消息:播放\|暂停\|上下曲\|声音增减"];ServiceKugou->CommandType[arrowhead = none];node[shape=plaintext]{ControlKugou:w -> 单例;Main:w -> 界面布局;}
}

4.电脑端实现:具体操作封装成一个类.

digraph G{fontname="kaiti";label="电脑控制端";edge[fontname="kaiti"];node[shape=record]{TcpLuv[label="{TcpLuv|- sListen:SOCKET\l|+ StartServer(void): void\l+ ListenProc(LPVOID): DWORD WINAPI\l+ RecvMessageProc(LPVOID): DWORD WINAPI \l+ GetHostIp(CString&): void\l+ SendMessage(void): void\l+ SendKeyEvent(char*): void\l}"];};}

最后实现效果:

电脑:

手机:

总结:

Android端:

1.在使用socket时 需要在AndroidManifest.xml清单声明使用权限:

<uses-permission android:name="android.permission.INTERNET" />

并且在MainActivity中的onCreate()添加如下代码:

if (android.os.Build.VERSION.SDK_INT > 9) {StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);}

2. 在输入输出流中:

// pWriter.println(content); //此句..对MFC socket阻塞,对方收不到消息pWriter.print(content);// 发送给服务器pWriter.flush();

输入中:

try {//此处也不可用readlinelen = bReader.read(buffer);string = new String(buffer, 0, len);Log.i("TAG", string);

3. 正则表达式验证是否输入正确ip:

private boolean checkIp(String ipString) {if (TextUtils.isEmpty(ipString)) {Toast.makeText(this,getResources().getText(R.string.ip_is_empty),Toast.LENGTH_SHORT).show();return false;}// 正则表达式ip:port//  String pat = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d+";//ipString pat = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";Pattern p = Pattern.compile(pat);if (!p.matcher(ipString).matches()) {Toast.makeText(this,getResources().getText(R.string.ip_is_error),Toast.LENGTH_SHORT).show();return false;}return true;}

电脑端:

模拟按键消息:

if (strcmp(dataBuf, "PLAY")==0 || strcmp(dataBuf, "PAUSE")==0) {keybd_event(VK_MENU, 0, 0, 0);keybd_event(VK_F5, 0, 0, 0);keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);}else if (strcmp(dataBuf, "NEXT_MUSIC")==0){

本来想获得酷狗的hwnd 从而可发送给手机客户端当前的歌曲信息等信息, 但貌似酷狗的主界面是无标题的,kugou_ui类也不对哦.

android学习: 酷狗手机遥控器相关推荐

  1. Android 模仿酷狗播放器(精品源码)

    Android 模仿酷狗播放器精品Demo很值得学习特别推荐下载学习! 巨卓网下载地址:http://www.juapk.com/thread-516-1-1.html

  2. Android获取酷狗音乐歌曲详细信息

    Android获取酷狗音乐歌曲详细信息 一.目标 二.实现方案 三.最终方案 四.网易云音乐 五.遗留问题 六.接下来 七.Finally 在<Android获取歌曲详细信息>一文中,介绍 ...

  3. android歌词效果,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    引言 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  4. Android获取酷狗音乐歌曲详情

    Android获取酷狗音乐歌曲详情 一.目标 二.失效的实现方式 三.可用的实现方式 四.参考资料 五.写在最后 一.目标 酷狗音乐歌曲详情包括以下信息. 字段 描述 title 标题,即歌曲名称 a ...

  5. Android版酷狗音乐 v9.0.1 去广告SVIP珍藏V2版

    by YYY~清羽 ◎兼容最新版MIUI系统 ◎去除启动页,首页,专辑页,听歌识曲页广告 ◎去除多余权限,服务,广播接收器,内容提供商 ◎去除安卓8以上系统的"正在运行通知" ◎去 ...

  6. Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    引言 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  7. Android仿酷狗SlidingMenuLayout界面实现

    引言 该SlidingMenuLayout主要实现了左边侧边栏.主界面和多个Fragment功能.该控件主要是参考酷狗界面的功能,左侧菜单可设置缩放动画,及打开多个Fragment功能.该控件在后期会 ...

  8. android仿酷狗界面,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    简介 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  9. Android仿酷狗音乐自定义侧滑菜单控件简单实现

    随着Android的不断成熟,许多绚丽的效果也在不断的被大家开发出来,其中侧滑的效果用到的项目很多,用的好的更是给吸引了很多用户.国内像QQ和酷狗App的侧滑就很给力,所以查了一些资料,并结合View ...

最新文章

  1. iOS动画开发之五——炫酷的粒子效果
  2. linux iostat 命令 统计信息 cpu 块设备 分区 io
  3. python中文版编译器下载-python编译器
  4. 正则表达式全部符号详解
  5. RabbitMq 安装
  6. P5748-集合划分计数【EGF,多项式exp】
  7. java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务
  8. 本地Vue前端请求本地Spring Boot跨域问题(CROS错误)
  9. 500能不能配个玩英雄联盟的电脑?
  10. 我的世界基岩版种子和java版种子_我的世界:对萌新最友好的种子,基岩版通用,对老玩家也很适合!...
  11. 不满当免费劳力,NPM 热门库 “colors” 和 “faker” 的作者设无限循环
  12. rsync java_Linux 同步工具rsync学习
  13. 2018年计算机考试玉林地点,广西壮族自治区玉林市2021上半年计算机等级考试时间...
  14. Python学习Day7
  15. FastJson之autotype bypass
  16. 什么是水晶报表_看不懂财务报表?别方!二十年老会计教你做财务报表分析
  17. Firefox书签同步工具Xmarks
  18. 我所收藏的重点大学BBS资源 .
  19. 【运筹学】指派问题匈牙利法
  20. 神奇的 ViewDragHelper,让你轻松定制拥有拖拽能力的 ViewGroup

热门文章

  1. 【路径规划】基于UKF和MPC实现无人机编队路径避碰matlab源码
  2. Android 星级评分条的基本用法
  3. 《信息安全等级保护管理办法》公通字[2007]43号
  4. 夜游经济:夜景“亮化”,形象“美化”,经济“活化”
  5. flex 电子表格实现
  6. 西南交大计算机绘图大作业,西南交大计算机绘图a第一次离线作业.doc
  7. CC2530中断初始化和中断函数
  8. p5.js的“运动”主题创作
  9. 声音推荐【Anaesthesia】Maximilian Hecker强烈推荐
  10. ubuntu上网问题以及ping通网络设备