Android 8.1用系统自带的Sound Recorder录音的时候,Voice quality选择High(.3gpp)的时候,录音文件保存的后缀是3gpp,如果此时去改名,然后利用系统自带的文件系统File去查看的时候发现3gpp文件被分类成video而不是audio,这是有问题的。
原因是录音的时候录音文件的file媒体类型是audio/3gpp,当你对其进行重命名的时候,MediaScanner会对这个文件重新扫描,而MeidaScanner仅仅是通过后缀去判断文件的类型,结果将其判断成video/3gpp,从而导致分类出错。
详细可以从MediaFile.java这个文件中分析出来
public class MediaFile {
// Audio file types
public static final int FILE_TYPE_MP3 = 1;
public static final int FILE_TYPE_M4A = 2;
public static final int FILE_TYPE_WAV = 3;
public static final int FILE_TYPE_AMR = 4;
public static final int FILE_TYPE_AWB = 5;
public static final int FILE_TYPE_WMA = 6;
public static final int FILE_TYPE_OGG = 7;
public static final int FILE_TYPE_AAC = 8;
public static final int FILE_TYPE_MKA = 9;
public static final int FILE_TYPE_APE = 10;
public static final int FILE_TYPE_FLAC = 11;
private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;
private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_FLAC;
// MIDI file types
public static final int FILE_TYPE_MID = 12;
public static final int FILE_TYPE_SMF = 13;
public static final int FILE_TYPE_IMY = 14;
private static final int FIRST_MIDI_FILE_TYPE = FILE_TYPE_MID;
// Video file types
public static final int FILE_TYPE_TRP = 18;
public static final int FILE_TYPE_FLV = 19;
public static final int FILE_TYPE_MPG = 20;
public static final int FILE_TYPE_MP4 = 21;
public static final int FILE_TYPE_M4V = 22;
public static final int FILE_TYPE_3GPP = 23;
public static final int FILE_TYPE_3GPP2 = 24;
public static final int FILE_TYPE_WMV = 25;
public static final int FILE_TYPE_ASF = 26;
public static final int FILE_TYPE_MKV = 27;
public static final int FILE_TYPE_MP2TS = 28;
public static final int FILE_TYPE_AVI = 29;
pu