2012-08-20 74 views
1

我写了一个可执行文件,并将其推入/ system/bin。如何使用adb套接字从手机中获取结果?

运行该文件后,它将产生浮点结果。

现在在PC端,我想得到这个结果。

起初我把这个浮点数写入一个文件,并使用'adb pull'来拉这个文件,然后读文件。 因为我需要经常做这个操作,可能每秒2次。这会导致手机性能不佳。

当我使用adb套接字时,它对我的​​影响不大吗? 我的可执行文件应该输出在哪里? adb socket如何获得结果?

谢谢。 James。

回答

1

如果你要离开连接手机,你很可能只是做

adb shell /system/bin/myexecutable 

,只是有你的二进制打印输出到标准输出。只要你的程序运行得很快,每秒两次不应该太快。否则,你可以做

adb shell cat /somewhere/myoutfile 

查看当前文件中的内容。

+0

我想使用结果,而且当我经常使用它时,adb shell命令会导致手机性能不佳。 – james 2012-08-20 09:00:50

+0

令我惊讶的是,你的表现不佳。你能量化吗?如果你想使用结果,你可以很容易地完成这个任务 - 只要在任何你想要的地方输入命令的输出即可。 – bchurchill 2012-08-20 09:02:31

+0

我不知道你的意思是什么,“只要将任何一个命令的输出传送到任何你想要的地方。” PC的操作系统是win7。在我的应用程序中,有一个定时器(1秒),如果它定期调用adb shell命令,则可能导致应用程序未响应。 – james 2012-08-20 09:13:52

1

如果存在可用的ADB连接,您可以使用logcat作为从Android应用程序获取数据到台式机的媒介。

我的想法是,有两件:

  1. 登录用的logcat您的应用程序的输出在Android方面的唯一标签。例如,

    Log.d("MyAppOutput", "This is the output I am looking for"); 
    
  2. 在桌面端,你可以运行一个命令行,看起来专门为TAG,是这样的:

    adb logcat -s MyAppOutput 
    

我相信,这将让你阅读来自Android应用的结果近乎实时。如果您需要知道日志消息的时间戳,则可以添加-v time参数,以便为每个消息添加一个时间戳。

+0

我没有一个Android应用程序,可执行文件只是获取CPU使用率,现在我正试图编写一个服务器来监视端口,在PC端发送命令通知服务器发送结果。 – james 2012-08-20 09:04:13

+0

由于您的问题表明您已经编写了可执行文件,因此我认为您可以访问源代码。你能否修改可执行文件来将其输出写入logcat而不是文件。它可以运行在一个循环中,然后每秒多次写入logcat以供PC应用程序读取。这意味着你永远不需要拉任何文件,只需连续尾部logcat。 – brianestey 2012-08-20 09:09:18

+0

我的可执行文件用C语言编写,如何修改它的输出到loacat?我认为在手机中运行循环的后台进程可能会消耗手机的有限CPU和内存。 – james 2012-08-20 09:20:38