和把Log写入文件的原因相同:http://blog.csdn.net/wyzxk888/article/details/7478152

就是因为Android开发过程中会出现手机offline,为了达到更加实时的查看日志信息,可以使用Java提供的Socket相关类,通过不断的发送UDP包达到效果。

手机端同样是一个单例类,用于发送日志消息:

package org.test;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;import java.text.SimpleDateFormat;import java.util.Date;public class LogSender {private static LogSender mLogSender;private static DatagramSocket socket;private static InetAddress serverAddress;private static int port;private static SimpleDateFormat df;private LogSender(String host, int por) throws SocketException, UnknownHostException {socket = new DatagramSocket();port = por;serverAddress = InetAddress.getByName(host);}public static LogSender create(String host, int port) throws SocketException, UnknownHostException {if (mLogSender == null) {mLogSender = new LogSender(host, port);}df = new SimpleDateFormat("[yy-MM-dd hh:mm:ss]: ");return mLogSender;}public void close() {socket.close();}public void print(String log) throws IOException {log = df.format(new Date()) + log;DatagramPacket pack = new DatagramPacket(log.getBytes(), log.getBytes().length, serverAddress, port);socket.send(pack);}public void print(Class cls, String log) throws IOException {print(cls.getSimpleName() + " " + log);}}

用法和Log写入文件时一样的,生成实例,在需要打日志的地方print一下:

    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);           setContentView(R.layout.main);                try {        mLogSender = LogSender.create("192.168.1.184", 4567);} catch (IOException e) {// TODO Auto-generated catch blockLog.d(tag, e.getMessage());}                log("onCreate()");    }        public void log(String msg) {    Log.d(tag, msg);        try {    mLogSender.print(AlarmManagerDemo.class, msg); //这里发送} catch (IOException e) {// TODO Auto-generated catch blockLog.d(tag, e.getMessage());}    }

除了上面之外,还需要写一个简单的Java服务端程序接受发过来的日志消息进行打印


public class ServerApp {public static void main(String[] args) {new Thread(new Server()).start();}private static class Server implements Runnable {@Overridepublic void run() {ServerSocket mServerSocket = null;try {mServerSocket = new ServerSocket(4567);Socket client = mServerSocket.accept();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(client.getInputStream()));while(true) {String str = bufferedReader.readLine();System.out.println(str);}} catch (IOException e) {System.out.println(e.getMessage());} finally {try {mServerSocket.close();} catch (IOException e) {// TODO Auto-generated catch blockSystem.out.println(e.getMessage());}}}}}

效果图:

   

更多相关文章

  1. android 默认浏览器 无法下载,此手机不支持此内容(自定义文件or AP
  2. Android(cacerts.bks)添加根证书
  3. android studio查看genymotion模拟器上文件目录
  4. Cordova插件编写流程(Android平台)
  5. Android签名文件转化为pk8和pem的实现
  6. Android(安卓)多分包,方法数超出 65536 限制
  7. Android01————快速入门
  8. Android(安卓)OTA 升级之三:生成recovery.img
  9. android中ListView点击和里边按钮或ImageView点击不能同时生效问

随机推荐

  1. [置顶] Android:Android面试准备一
  2. Android实现输入手机号时自动添加空格
  3. Android编译环境(2) - 手工编译C模块
  4. Android(安卓)Tv U盘挂载
  5. 使用 Android(安卓)Studio 为 Android(安
  6. [置顶] android eoe客户端
  7. Android高手进阶教程(三)之----Android(
  8. Android应用程序架构
  9. Android(安卓)RTC 自下而上分析
  10. Android(安卓)重点知识回顾