android mtp 映射流程,Android 通过MTP拷贝音乐文件流程分析

1 read()

根据MTP启动流程中分析可知: MTP启动后,MtpServer.cpp中的MtpServer::run()会通过read()不断地从"/dev/mtp_usb"中读取出"PC发来的消息"。

2 handleRequest()

read()在读取到PC来的消息之后,会交给MtpServer::handleRequest()进行处理。"PC读取文件内容"的消息的ID是MTP_OPERATION_SEND_OBJECT;因此,它会通doSendObject()进行处理。

3 doSendObject()

MtpServer.cpp中doSendObject()中

……………交给Kernal负责传输文件

……………………………….

mDatabase->endSendObject(mSendObjectFilePath, mSendObjectHandle, mSendObjectFormat, result == MTP_RESPONSE_OK);

4 endSendObject ()

doSendObject()会调用的endSendObject ()。该函数在android_mtp_MtpDatabase.cpp中实现,实际上调用MtpDatabase.java中的endSendObject(),会启动媒体扫描

…………

mMediaScanner.scanMtpFile(path, mVolumeName, handle, format);

…………

对于MtpDatabase的构造函数:

public MtpDatabase(Context context, String volumeName, String storagePath,

String[] subDirectories) {

native_setup();

…………………………………………….

mMediaScanner = new MediaScanner(context);

…………………………………………….

// Set locale to MediaScanner.

Locale loc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值