美文网首页
[Mtk][M0] 如何使文件管理器中的录音文件可以选择音乐播放

[Mtk][M0] 如何使文件管理器中的录音文件可以选择音乐播放

作者: 灰灰手记 | 来源:发表于2017-02-22 16:34 被阅读158次
[DESCRIPTION]

在文件管理器中播放录音文件(.3gp 或者 .ogg)时,默认是用 video player 播放,如何修改使其可以选择音乐播放器播放?

[SOLUTION]
涉及文件:
1、FileManager/src/com/mediatek/filemanager/service/FileManagerService.java
2、FileManager/src/com/mediatek/filemanager/FileInfo.java
3、Music/AndroidManifest.xml

请修改如下:

  1. 恢复 FileManagerService.java 中被注释掉的函数:
    public String update3gppMimetype(FileInfo fileInfo) 及其函数体
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;
    }

添加导包:

import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
  1. 恢复 FileInfo.java 中的部分代码;
private static HashMap<String, String> sMimeType3GPPMap = new HashMap<String, String>();
  • public String getFileMimeType(FileManagerService service) 中被注释的代码:
    ///M:@#3gp#@{the follow code is to handle the 3gp file.not do special handle now 这个注释以下的所有内容
///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}
  • private String getMimeType(File file) 中被注释掉的代码:
    ///M:#3gp#@{the follow code is to handle the 3gp file.not do special handle now 这个注释以下的所有内容
///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
  • 被注释掉的函数 public String getFileOriginMimeType() 全部恢复
///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
  • 添加导包
import java.util.HashMap;
  1. 在 music 的 androidManifest.xml 中,在
    <activity android:name="com.android.music.MediaPlaybackActivity"
    下添加如下intent filter:
<intent-filter android:priority="1">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="file"/>
        <data android:mimeType="audio/*"/>
        <data android:mimeType="application/ogg"/>
        <data android:mimeType="application/x-ogg"/>
        <data android:mimeType="application/itunes"/>
        <data android:mimeType="application/aac"/>
        <data android:mimeType="application/imy"/>
        <data android:mimeType="application/3gpp"/>
</intent-filter>

相关文章

网友评论

      本文标题:[Mtk][M0] 如何使文件管理器中的录音文件可以选择音乐播放

      本文链接:https://www.haomeiwen.com/subject/hidmwttx.html