android学习: 酷狗手机遥控器
前言: 学习,掌握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学习: 酷狗手机遥控器相关推荐
- Android 模仿酷狗播放器(精品源码)
Android 模仿酷狗播放器精品Demo很值得学习特别推荐下载学习! 巨卓网下载地址:http://www.juapk.com/thread-516-1-1.html
- Android获取酷狗音乐歌曲详细信息
Android获取酷狗音乐歌曲详细信息 一.目标 二.实现方案 三.最终方案 四.网易云音乐 五.遗留问题 六.接下来 七.Finally 在<Android获取歌曲详细信息>一文中,介绍 ...
- android歌词效果,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
引言 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...
- Android获取酷狗音乐歌曲详情
Android获取酷狗音乐歌曲详情 一.目标 二.失效的实现方式 三.可用的实现方式 四.参考资料 五.写在最后 一.目标 酷狗音乐歌曲详情包括以下信息. 字段 描述 title 标题,即歌曲名称 a ...
- Android版酷狗音乐 v9.0.1 去广告SVIP珍藏V2版
by YYY~清羽 ◎兼容最新版MIUI系统 ◎去除启动页,首页,专辑页,听歌识曲页广告 ◎去除多余权限,服务,广播接收器,内容提供商 ◎去除安卓8以上系统的"正在运行通知" ◎去 ...
- Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
引言 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...
- Android仿酷狗SlidingMenuLayout界面实现
引言 该SlidingMenuLayout主要实现了左边侧边栏.主界面和多个Fragment功能.该控件主要是参考酷狗界面的功能,左侧菜单可设置缩放动画,及打开多个Fragment功能.该控件在后期会 ...
- android仿酷狗界面,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
简介 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...
- Android仿酷狗音乐自定义侧滑菜单控件简单实现
随着Android的不断成熟,许多绚丽的效果也在不断的被大家开发出来,其中侧滑的效果用到的项目很多,用的好的更是给吸引了很多用户.国内像QQ和酷狗App的侧滑就很给力,所以查了一些资料,并结合View ...
最新文章
- iOS动画开发之五——炫酷的粒子效果
- linux iostat 命令 统计信息 cpu 块设备 分区 io
- python中文版编译器下载-python编译器
- 正则表达式全部符号详解
- RabbitMq 安装
- P5748-集合划分计数【EGF,多项式exp】
- java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务
- 本地Vue前端请求本地Spring Boot跨域问题(CROS错误)
- 500能不能配个玩英雄联盟的电脑?
- 我的世界基岩版种子和java版种子_我的世界:对萌新最友好的种子,基岩版通用,对老玩家也很适合!...
- 不满当免费劳力,NPM 热门库 “colors” 和 “faker” 的作者设无限循环
- rsync java_Linux 同步工具rsync学习
- 2018年计算机考试玉林地点,广西壮族自治区玉林市2021上半年计算机等级考试时间...
- Python学习Day7
- FastJson之autotype bypass
- 什么是水晶报表_看不懂财务报表?别方!二十年老会计教你做财务报表分析
- Firefox书签同步工具Xmarks
- 我所收藏的重点大学BBS资源 .
- 【运筹学】指派问题匈牙利法
- 神奇的 ViewDragHelper,让你轻松定制拥有拖拽能力的 ViewGroup
热门文章
- 【路径规划】基于UKF和MPC实现无人机编队路径避碰matlab源码
- Android 星级评分条的基本用法
- 《信息安全等级保护管理办法》公通字[2007]43号
- 夜游经济:夜景“亮化”,形象“美化”,经济“活化”
- flex 电子表格实现
- 西南交大计算机绘图大作业,西南交大计算机绘图a第一次离线作业.doc
- CC2530中断初始化和中断函数
- p5.js的“运动”主题创作
- 声音推荐【Anaesthesia】Maximilian Hecker强烈推荐
- ubuntu上网问题以及ping通网络设备