我们都知道,比如一个32G的U盘,连接到电脑上显示的肯定不是32G,手机也同样是这样,如何修改呢?
在这个文件中alps/frameworks/av/media/mtp/MtpStorage.cpp 修改
uint64_t MtpStorage::getMaxCapacity() {
if (mMaxCapacity == 0) {
struct statfs stat;
if (statfs(getPath(), &stat))
return -1;
mMaxCapacity = (uint64_t)stat.f_blocks * (uint64_t)stat.f_bsize;
}
// Add+++++++++++++ for mtp start ^_^
uint64_t b2Gb = 1024 * 1024 * 1024;
if (!mRemovable) {
if (mMaxCapacity <= 8 * b2Gb){
return 8 * b2Gb;
} else if (mMaxCapacity > 8 * b2Gb && mMaxCapacity <= 16 * b2Gb){
return 16 * b2Gb;
} else if (mMaxCapacity > 16 * b2Gb && mMaxCapacity <= 32 * b2Gb){
return 32 * b2Gb;
} else if (mMaxCapacity > 32 * b2Gb && mMaxCapacity <= 64 * b2Gb){
return 64 * b2Gb;
} else if (mMaxCapacity > 64 * b2Gb && mMaxCapacity <= 128 * b2Gb){
return 128 * b2Gb;
} else if (mMaxCapacity > 128 * b2Gb && mMaxCapacity <= 256 * b2Gb){
return 256 * b2Gb;
}
}
// Add++++++++++++++ for mtp end ^_^
return mMaxCapacity;
}
如果说要修改可用的部分,需要自行修改下,下面这部分代码逻辑
uint64_t MtpStorage::getFreeSpace() {
struct statfs stat;
if (statfs(getPath(), &stat))
return -1;
uint64_t freeSpace = (uint64_t)stat.f_bavail * (uint64_t)stat.f_bsize;
return (freeSpace > mReserveSpace ? freeSpace - mReserveSpace : 0);
}