我目前正在开发适用于Android的WiFi应用程序.我在尝试访问设备上的数据库时遇到问题.模拟器中的调试对我不起作用,因为模拟器中没有WiFi支持.我尝试使用将数据库文件从设备中拉出来
adb pull data/data/package-name/databases/database-name
Run Code Online (Sandbox Code Playgroud)
但我收到错误"Permission denied.".在这个答案Android:数据库文件存储在哪里?,Commonsware建议通过在调试模式下运行来提取数据库文件.但它也不起作用.任何有关如何调试数据库而不需要设备生根的帮助将非常感激.
我正试图尽快获得手机屏幕的截图.目前,我正在做:
adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png
Run Code Online (Sandbox Code Playgroud)
但它太慢,需要3秒钟.有没有更好的方法来做到这一点?我打算在没有根据的手机上使用此功能.
还有什么我可以用于screencap的不同论点?
谢谢.
编辑(额外信息):我打算使用这种方法能够将屏幕的实时馈送到我的电脑上.目前的方法有效但速度太慢.我无法使用,adb shell screenrecord因为在录制时我无法访问视频文件.
我的目标是能够键入一个单词命令,并从USB连接的Nexus One屏幕截图中获取屏幕截图.
到目前为止,我可以32bit xRGB888通过这样拉动它来获得我认为是原始图像的帧缓冲:
adb pull /dev/graphics/fb0 fb0
Run Code Online (Sandbox Code Playgroud)
从那里开始,我很难将它转换为png.我正在尝试像这样的ffmpeg:
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb8888 -s 480x800 -i fb0 -f image2 -vcodec png image.png
Run Code Online (Sandbox Code Playgroud)
这创造了一个可爱的紫色图像,其部分模糊地与屏幕相似,但它绝不是一个干净的屏幕截图.
有没有办法让Android用户在他/她的手机上浏览SQLite数据库并查看数据库中的数据?
我经常使用SoftTrace beta程序.它很棒,但我无法找到将其跟踪的数据下载到PC.
最近,我写了一个PC客户端,可以使用adb实时显示和控制我的Android手机屏幕.我使用猴子来控制设备,它工作正常.问题是如何抓住手机屏幕并顺利显示.
第一个解决方案,我想出了是不断抢framebuffer通adb(如DDMS的屏幕捕捉功能).现在,当我这样做时,性能是非常不可接受的.从中捕获的帧速率低至framebuffer每秒5帧(帧大小为800*480).当我在手机上滑动时,我的程序看起来像打嗝.
我的程序是用java编写的,ddmslib用来抓取framebuffer.
add:
我发现将原始framebuffer数据编码为.png格式要慢得多,否则这将是传输压缩原始图像的快速方法.
如何将屏幕捕获速度提高到平稳水平?
我有一部智能手机,无法插入SD卡.我想转储最大的分区(因为我丢失了文件,我想使用转储来恢复它们).
分区是10GB.
我正在寻找使用但没有任何东西的ADB命令......pulldd
我尝试使用Carliv touch recoveryOTG的32GB usb密钥,但USB密钥没有安装......然后我无法直接在手机上使用"dd" Aroma file manager和终端仿真.
谢谢!
我一直在尝试使用类似的东西将文件从我的Android设备移动到我的osx机器:adb shell tar -c directory_to_copy | tar -x.似乎远程tar正在工作,但文件被破坏的方式.经过一番游戏,我发现:
似乎adb shell命令将LF转换为CRLF:
% adb shell 'cd /mnt/sdcard;echo hi>a.bin'
% adb shell 'cd /mnt/sdcard;cat a.bin' | hexdump -C
00000000 68 69 0d 0a |hi..|
00000004
% adb pull /mnt/sdcard/a.bin
0 KB/s (3 bytes in 0.457s)
% hexdump -C a.bin
00000000 68 69 0a |hi.|
00000003
Run Code Online (Sandbox Code Playgroud)它看起来是服务器或守护进程导致的而不是客户端(请参阅len = 4):
% ADB_TRACE=1 adb shell 'cd /mnt/sdcard;cat a.bin'
[... snip ...]
system/core/adb/commandline.c::read_and_dump():read_and_dump(): post adb_read(fd=3): len=4
[... snip ...]
Run Code Online (Sandbox Code Playgroud)我猜这个守护进程在windows用户的shell命令中进行了那种翻译.
我的问题是:
谢谢!
我正在执行adb shell调用以使用ffmpeg创建新的图像文件.目前,我将ffmpeg转换的输出jpg保存到设备,然后使用adb pull将文件拉到计算机.我想知道我是否可以先将其保存在android上,然后将其直接保存到计算机上.
这是我试图运行的代码(本质上):
adb shell "screencap | /data/local/tmp/tools/./ffmpeg -f rawvideo -vcodec mjpeg -q:v 5 -" > C:/Users/User/Desktop/new.jpg
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我运行它时,它不仅复制了ffmpeg调用的输出数据,还复制了打印到adb标准输出的所有内容.所以我留下了一个jpg文件,其中包含我的所有图像数据,但顶部有一堆单词(adb shell调用的输出).
谢谢.
我尝试使用单线程解决方案通过adb捕获屏幕截图,并且该文件在PC上成功创建,但它不可读:
C:\Program Files\Android\android-sdk\platform-tools>adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > c:\users\utilisateur\desktop\android_screenshot1.png
Run Code Online (Sandbox Code Playgroud)

该文件似乎是正确的,但我认为魔术是不正确的:

编辑: Git Bash for Windows也出现了同样的问题.
我想使用命令行截取已 root 的三星设备的屏幕截图。我时间有限,不能超过2秒。所以我的问题是如何使用命令行截取屏幕截图。