文件管理器中打开录音文件修改为音乐播放器播放
2016-11-23 16:29
344 查看
在文件系统中播放录音文件(.3gp或者.ogg)时,默认是用video player播放,如何修改使其可以选择音乐播放器播放?
解决方法如下:
1. vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/service/FileManagerService.java
恢复FileManagerService.java中被注释掉的函数及其函数体
public String update3gppMimetype(FileInfo fileInfo) {
LogUtils.d(TAG, "update3gppMimetype...");
String mimeType = FileInfo.MIMETYPE_3GPP_VIDEO;
ContentResolver resolver = getContentResolver();
if (resolver != null && fileInfo != null) {
// fileInfo.setFileMimeType(FileInfo.MIMETYPE_3GPP_VIDEO);
final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
final String[] projection = new String[] { MediaStore.MediaColumns.MIME_TYPE };
final String selection = MediaStore.MediaColumns.DATA + "=?";
final String[] selectionArgs = new String[] { fileInfo
.getFileAbsolutePath() };
Cursor cursor = null;
try {
cursor = resolver.query(uri, projection, selection,
selectionArgs, null);
LogUtils.d(TAG, "update3gppMimetype,file:" + fileInfo.getFileAbsolutePath());
if (cursor != null && cursor.moveToFirst()) {
mimeType = cursor.getString(cursor
.getColumnIndex(MediaStore.MediaColumns.MIME_TYPE));
LogUtils.d(TAG, "update3gppMimetype mimeType: " + mimeType);
} else {
mimeType = fileInfo.getFileOriginMimeType();
LogUtils.d(TAG, "update3gppMimetype, not find from media,origin mimeType: " + mimeType);
if (mimeType == null) {
mimeType = FileInfo.MIMETYPE_3GPP_VIDEO;
}
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
return mimeType;
}
2.vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfo.java
恢复其中的部分代码:
1.恢复被注释掉的代码///M:@#3gp#@{the follow code is to handle the 3gp file.not do special handle now
private static HashMap<String, String> sMimeType3GPPMap = new HashMap<String, String>();
///M:@{the top code is to handle the 3gp file.not do special handle now
修改完这两支文件后可单编验证,希望对大家有所帮助。
解决方法如下:
1. vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/service/FileManagerService.java
恢复FileManagerService.java中被注释掉的函数及其函数体
public String update3gppMimetype(FileInfo fileInfo) {
LogUtils.d(TAG, "update3gppMimetype...");
String mimeType = FileInfo.MIMETYPE_3GPP_VIDEO;
ContentResolver resolver = getContentResolver();
if (resolver != null && fileInfo != null) {
// fileInfo.setFileMimeType(FileInfo.MIMETYPE_3GPP_VIDEO);
final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
final String[] projection = new String[] { MediaStore.MediaColumns.MIME_TYPE };
final String selection = MediaStore.MediaColumns.DATA + "=?";
final String[] selectionArgs = new String[] { fileInfo
.getFileAbsolutePath() };
Cursor cursor = null;
try {
cursor = resolver.query(uri, projection, selection,
selectionArgs, null);
LogUtils.d(TAG, "update3gppMimetype,file:" + fileInfo.getFileAbsolutePath());
if (cursor != null && cursor.moveToFirst()) {
mimeType = cursor.getString(cursor
.getColumnIndex(MediaStore.MediaColumns.MIME_TYPE));
LogUtils.d(TAG, "update3gppMimetype mimeType: " + mimeType);
} else {
mimeType = fileInfo.getFileOriginMimeType();
LogUtils.d(TAG, "update3gppMimetype, not find from media,origin mimeType: " + mimeType);
if (mimeType == null) {
mimeType = FileInfo.MIMETYPE_3GPP_VIDEO;
}
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
return mimeType;
}
2.vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfo.java
恢复其中的部分代码:
1.恢复被注释掉的代码///M:@#3gp#@{the follow code is to handle the 3gp file.not do special handle now
private static HashMap<String, String> sMimeType3GPPMap = new HashMap<String, String>();
///M:@{the top code is to handle the 3gp file.not do special handle now
2.恢复被注释掉的代码 public String getFileMimeType(FileManagerService service) { LogUtils.d(TAG, "getFileMimeType,service."); String mimeType = null; if (!isDirectory()) { if (!isDrmFile()) { mimeType = getMimeType(mFile); LogUtils.d(TAG, "getFileMimeType, mimetype is : " + mimeType); } else { mimeType = DrmManager.getInstance().getOriginalMimeType(mAbsolutePath); LogUtils.d(TAG, "getFileMimeType, is drm file,mimetype is: " + mimeType); } ///M:@#3gp#@{the follow code is to handle the 3gp file.not do special handle now if (mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_UNKONW)) { mimeType = service.update3gppMimetype(this); } if (mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_AUDIO) || mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_VIDEO) || mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP2_VIDEO)) { String name = null; int sepIndex = mName.lastIndexOf("("); if (sepIndex > 0) { name = mName.substring(0, sepIndex); } else { name = mName.substring(0, mName.indexOf(".")); } LogUtils.d(TAG, "getFileMimeType ,record the mimetype: " + mimeType + ",name = " + name + ",mName = " + mName); sMimeType3GPPMap.put(name, mimeType); } ///@the top code is to handle the 3gp file.not do special handle now} } return mimeType; }
3.恢复被注释掉的代码 private String getMimeType(File file) { String fileName = getFileName(); String extension = FileUtils.getFileExtension(fileName); LogUtils.d(TAG, "getMimeType fileName=" + fileName + ",extension = " + extension); if (extension == null) { return FileInfo.MIMETYPE_EXTENSION_NULL; } String mimeType = MediaFile.getMimeTypeForFile(fileName); LogUtils.d(TAG, "getMimeType mimeType =" + mimeType); if (mimeType == null) { return FileInfo.MIMETYPE_EXTENSION_UNKONW; } ///M:#3gp#@{the follow code is to handle the 3gp file.not do special handle now // sp ecial solution for checking 3gpp original mimetype // 3gpp extension could be video/3gpp or audio/3gpp if (mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP_VIDEO) || mimeType.equalsIgnoreCase(FileInfo.MIMETYPE_3GPP2_VIDEO)) { LogUtils.d(TAG, "getMimeType, a 3gpp or 3g2 file,mimeType=" + mimeType); return FileInfo.MIMETYPE_3GPP_UNKONW; } ///M:@{the top code is to handle the 3gp file.not do special handle now return mimeType; }
4.全部恢复 ///M:@#3gp#{the follow code is to handle the 3gp file.not do special handle now public String getFileOriginMimeType() { String key = null; LogUtils.d(TAG, "getFileOriginMimeType, mName =" + mName); int sepIndex = mName.lastIndexOf("("); if (sepIndex > 0) { key = mName.substring(0, sepIndex); } else { key = mName.substring(0, mName.indexOf(".")); } LogUtils.d(TAG, "getFileOriginMimeType,key is:" + key); String orginalMimeType = sMimeType3GPPMap.get(key); LogUtils.d(TAG, "getFileOriginMimeType, OrginalMimeType=" + orginalMimeType); if (orginalMimeType != null) { sMimeType3GPPMap.remove(key); } return orginalMimeType; } ///M:@{the top code is to handle the 3gp file.not do special handle now
修改完这两支文件后可单编验证,希望对大家有所帮助。
相关文章推荐
- 打开文件管理器读取录音文件报错问题解决方案
- 若要转换此解决方案,请将此解决方案文件的权限更改为允许修改,然后重新打开它。
- 用注册表修改文件打开方式
- Linux系统 查看修改进程打开文件数上限
- PHP——Eclipse如何修改打开PHP文件时有编码方式
- rman复制数据库ORA-01547ORA-01194ORA-01110,强制打开并修改日志文件
- 修改已经打开的对话框的浏览路径-修改文件属性和查找指定窗口
- 修改MyEclipse文件的默认打开方式
- Win7 : 如何修改某种文件的默认打开方式
- Win7 : 如何修改某种文件的默认打开方式
- 一打开Excel文件,该文件就会立即被修改
- ulimit的修改(主要修改可以打开的文件数和进程数)
- 修改freebsd所允许打开的最大文件数
- jspsmart 下载文件不支持中文 升级使其另存为时显示中文,但打开时还是乱码(已修改正常)
- 使用FormServies打开Infopath文件(修改Task画面的指向Item的链接)
- 修改IE以文本格式打开下载文件的问题
- Linux下如何查看进程打开的文件以及修改进程打开文件数上限
- C#打开播放器后指定其播放的视频文件的路径代码怎么写啊!
- 修改Windows中的文件默认打开方式
- WIN7中修改Jar文件打开方式的方法