mtp java_Mtp / Ptp Android

我正在尝试将使用PTP的相机文件复制到我的平板电脑上 . 我使用了android API MTPDevice(https://developer.android.com/reference/android/mtp/MtpDevice.html#importFile%28int,%20java.lang.String%29),我已经请求了必要的权限(android.mtp.MtpClient.action.USB_PERMISSION) .

我打开设备,函数返回true,然后打开USBConnection(Connexion OK) .

我尝试在平板电脑上的临时文件夹中导入相机的所有文件(/ mnt / sdcard / tmpFolder) . 该路径存在于我的平板电脑上,但是当我将它提供给importFiles函数时,我有错误:

[logcat的]

MtpDevice: readObject: /mnt/sdcard/tmpFolder

MtpDevice: open failed for /mnt/sdcard/tmpFolder

Debug: File import KO

我试过一条路径不存在我有消息:

[logcat的]

MtpDevice: readObject: /mnt/sdcard/tptp

MtpDevice: readResponse failed

Debug: File import KO

有人可以帮帮我吗?

谢谢

@Background

@DebugLog

public void getMTPDevice() {

HashMap deviceList = manager.getDeviceList();

Iterator deviceIterator = deviceList.values().iterator();

if (deviceIterator.hasNext()) {

UsbDevice usbDevice = deviceIterator.next();

device = openDeviceLocked(usbDevice);

if(device!=null){

File folder = returnTempFolderCamera();

if(folder.exists()){

Log.d("Debug", "Folder exist /mnt/sdcard/tmpFolder");

if(device.importFile(0,folder.getPath()))

{

Toast.makeText(this, "File import OK", Toast.LENGTH_LONG).show();

Log.d("Debug", "Files import OK");

}else {

Toast.makeText(this, "File import KO", Toast.LENGTH_LONG).show();

Log.d("Debug", "Files import KO");

}

}

}

}

}/**

* Opens the {@link android.hardware.usb.UsbDevice} for an MTP or PTP device

* and return an {@link android.mtp.MtpDevice} for it.

*

* @param usbDevice

* the device to open

* @return an MtpDevice for the device.

*/

@DebugLog

private MtpDevice openDeviceLocked(UsbDevice usbDevice) {

String deviceName = usbDevice.getDeviceName();

byte[] data = new byte[128];

int TIMEOUT = 0;

boolean forceClaim = true;

// don't try to open devices that we have decided to ignore

// or are currently asking permission for

if (isCamera(usbDevice)

&& !mRequestPermissionDevices.contains(deviceName)) {

if (!manager.hasPermission(usbDevice)) {

manager.requestPermission(usbDevice, mPermissionIntent);

mRequestPermissionDevices.add(deviceName);

} else {

UsbInterface intf = usbDevice.getInterface(0);

UsbEndpoint endpoint = intf.getEndpoint(0);

UsbDeviceConnection connection = manager.openDevice(usbDevice);

connection.claimInterface(intf, forceClaim);

connection.bulkTransfer(endpoint, data, data.length, TIMEOUT);

if (connection != null) {

MtpDevice mtpDevice = new MtpDevice(usbDevice);

if (mtpDevice.open(connection)) {

mDevices.put(usbDevice.getDeviceName(), mtpDevice);

return mtpDevice;

}

}

}

}

return null;

}

private File returnTempFolder(){

File tmp = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/tmpFolder");

return tmp;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值