文档详情

PC客户端与Android服务端的Socket同步通信(USB).doc

发布:2017-03-05约3.15万字共22页下载文档
文本预览下载声明
PC客户端与Android服务端的Socket同步通信(USB) /wufenglong/article/details/5778862 需求: 1.一个android端的service后台运行的程序,作为socket的服务器端;用于接收Pc client端发来的命令,来处理数据后,把结果发给PC client 2.PC端程序,作为socket的客户端,用于给android手机端发操作命令 难点分析: 1.手机一定要有adb模式,即插上USB线时马上提示的对话框选adb。好多对手机的操作都可以用adb直接作。 不过,我发现LG GW880就没有,要去下载个 2.android默认手机端的IP为“” 3.要想联通PC与android手机的sokcet,一定要用adb forward 来作下端口转发才能连上socket. [java] view plaincopy Runtime.getRuntime().exec(adb forward tcp:12580 tcp:10086); Thread.sleep(3000); 4.android端的service程序Install到手机上容易,但是还要有方法来从PC的client端来启动手机上的service ,这个办法可以通过PC端adb命令来发一个Broastcast ,手机端再写个接收BroastcastReceive来接收这个Broastcast,在这个BroastcastReceive来启动service pc端命令: [java] view plaincopy Runtime.getRuntime().exec( adb shell am broadcast -a NotifyServiceStart); android端的代码:ServiceBroadcastReceiver.java [java] view plaincopy package com.otheri.service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class ServiceBroadcastReceiver extends BroadcastReceiver { private static String START_ACTION = NotifyServiceStart; private static String STOP_ACTION = NotifyServiceStop; @Override public void onReceive(Context context, Intent intent) { Log.d(androidService.TAG, Thread.currentThread().getName() + ---- + ServiceBroadcastReceiver onReceive); String action = intent.getAction(); if (START_ACTION.equalsIgnoreCase(action)) { context.startService(new Intent(context, androidService.class)); Log.d(androidService.TAG, Thread.currentThread().getName() + ---- + ServiceBroadcastReceiver onReceive start end); } else if (STOP_ACTION.equalsIgnoreCase(action)) { context.stopService(new Intent(context, androidService.class)); Log.d(androidService.TAG, Thread.c
显示全部
相似文档