Linux mtp路径,CentOS6.5上MTP读取Android手机

要达到读取安卓手机内容的目的,我们需要安装go-mtpfs,在这之前,需要先装上一些基本的配件:

1.yum install bison gcc mercurial libusb-devel

2.如果你的电脑没有libusb-1.0的话,在安装过程中会出错,下面是安装的链接:

http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2

下载到一个/tmp之类的文件夹中,解压 tar xjvf libu**  ,然后进入该文件夹,依次执行 ./configure ;make;make install(当然这需要在root的身份下)

安装完之后,还需要配置环境:

export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH   其中的/usr/lib/不一定是存在pkgconfig的,具体要写pkgconfig存在的位置

3.安装go语言包

属于Feroda的yum install golang并不属于我们,所以还是乖乖下载吧。

一.从Go官网(http://golang.org/)下载安装包,我下的是 go1.3.3 linux/amd64

二.解压安装包到/usr/local/下:

cd /usr/local

# tar xzvf go***

三.设置环境变量PATH

# export PATH=$PATH:/usr/local/go/bin

4.下载go-mtpfs(https://github.com/hanwen/go-mtpfs/)

mkdir /tmp/go

export GOPATH=/tmp/go

go get github.com/hanwen/go-mtpfs

cp /tmp/go/bin/go-mtpfs /usr/bin

chmod 4755 /usr/bin/go-mtpfs

5.配置挂载:

chmod 4755 /bin/fusermount

mkdir  /mnt/phone

chmod 777 /mnt/phone

然后在/usr/bin 中新建两个文件phone-mount.sh 和 phone-unmount.sh 并修改它们的权限为 777.

编辑两个文件的内容:

phone-mount.sh:

#/bin/bash

# Export a suitable path - it is requred by the module,

# but will not be supplied by the udev:

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

# Run the mounter as the user who will access the phone -

# replace USER with your username

su USER -c "/usr/bin/go-mtpfs /mnt/phone &"

# Exiting is important, else udev may hang here forever

exit

phone-unmount.sh:

#/bin/bash

# Export a suitable path

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

# Run the FUSE unmounter

/bin/fusermount -u /mnt/phone

保存后再修改权限为755。

最后到/etc/udev/rules.d 文件夹中,新建一个rules文件,当然,如果你之前已经创建或者文件夹里存在诸如51-android.rules这样子的文件,那就不用新建了:

进入新建的文件夹,编辑:

SUBSYSTEM=="usb", ATTRS{idVendor}=="AAAA", ATTRS{idProduct}=="BBBB", ACTION=="add", RUN+="/usr/bin/phone-mount.sh"

ENV{ID_VENDOR_ID}=="AAAA", ENV{ID_MODEL_ID}=="BBBB", ACTION=="remove", RUN+="/usr/bin/phone-unmount.sh"

其中 AAAA是你手机的供应商识别吗,而BBBB是你的手机产品识别码。你可以用lsusb的指令查看手机的具体ID。

6.写在后面,至此,重启后理论上应该就可以即插即用了,不过我出了点小差错,没反应。

所以我只能直接用指令罗,

su USER -c "/usr/bin/go-mtpfs /mnt/phone &"

其中USER记得替换为你自己的名字,在/mnt/phone里面终于出现我想要的东西。好吧,至少目的达到,不能即插即用的原因有待排查。

Linux环境下,使用Qt库来读取MTP(Media Transfer Protocol)设备通常涉及到多媒体文件管理。首先,你需要确保安装了Qt的支持库,包括对多媒体和跨平台IO操作的部分。以下是使用Qt进行MTP设备文件访问的基本步骤: 1. **添加必要的依赖**:确保已经安装了QtMultimediaWidgets模块,它包含了处理媒体文件的工具。如果需要,你可以通过QMake或CMake来配置构建系统,并包含这个模块。 ```bash $ sudo apt-get install libqt5multimediawidgets5-dev (对于Debian/Ubuntu) # 或者 $ sudo yum install qt5-multimediawidgets-devel (对于CentOS/RHEL) ``` 2. **检测MTP支持**:在Qt中,你可以使用`qobject_cast`配合`QMtpDevice`类来检查是否连接了MTP设备。确保已导入所需的头文件: ```cpp #include <QMediaPlayer> #include <QMtpDevice> ``` 3. **初始化MTP设备**: - 创建`QMtpDevice`实例,并尝试打开设备: ```cpp QMtpDevice *device = new QMtpDevice(); if (!device->open("/dev/mtp0")) { // 根据实际的MTP设备路径替换 qDebug() << "Failed to open MTP device."; return; } ``` 4. **浏览文件**: - 使用`QMtpDevice::listDirectories()`方法获取目录列表,然后遍历查找感兴趣的文件: ```cpp QDirListIterator<QMtpDirectory> it(device->directories()); while (it.hasNext()) { QMtpDirectory dir = it.next(); qDebug() << "Directory: " << dir.name(); QStringList entries = dir.entryInfoList(QDir::AllEntries); for (const QString &entry : entries) { qDebug() << "Entry: " << entry.fileName(); } } ``` 5. **读取文件**: - 获取到具体文件后,可以使用`QMtpFile`来读取内容,例如: ```cpp QMtpFile file(device, "/path/to/file"); QByteArray data; if (file.open(QIODevice::ReadOnly)) { data = file.readAll(); file.close(); } else { qDebug() << "Failed to read file."; } ``` 6. **错误处理**: - 编写适当的异常处理代码,以便在遇到问题时能够优雅地退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值