android学习: 酷狗手机遥控器
来源:互联网 发布:java 转义双引号 编辑:程序博客网 时间:2024/04/29 18:00
前言: 学习,掌握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类也不对哦.
0 0
- android学习: 酷狗手机遥控器
- Android手机遥控器解决方案
- android 手机红外遥控器
- Android 手机红外遥控器实现
- Android 手机和盒子遥控器
- 手机遥控器
- Android 手机遥控器控制机顶盒(电视)
- android--基于wifi的手机遥控器--笔记1
- 基于蓝牙的可自学习手机遥控器android应用
- 手机遥控器 全新发布
- unifiedremote 手机遥控器
- 爱奇艺手机遥控器
- TCL爱奇艺电视手机遥控器
- 程序麻将机手机版遥控器
- 手机红外遥控器 求源码
- 红外遥控器学习
- android - IR 遥控器无效
- Android万能遥控器
- PLSQL性能优化方法
- 截断二进制指数退避算法(JAVA版)
- ============================================================ 博文原创,转载请声明出处 电子咖啡(原id蓝岩) ==============
- pat 1053
- 换个角度深入理解GlusterFS
- android学习: 酷狗手机遥控器
- 选择排序之直接选择排序
- shell的基础学习
- C#之流程控制语句
- 开源PaaS平台-ConPaaS介绍
- Android有效解决加载大图片时内存溢出的问题
- 生成Release版本时不需要进行任何更改即可屏蔽所有的Log输出
- 题目1026:又一版 A+B
- 第三周项目2--修旱冰场