1:应用驱动学习
letvRecorder 录制的音频不希望在Music app中显示,Music app 通过查询mediaData 来查找设备中的音频。
通过判断字段 is_music = 0, 而通过
ContentValues cv = new ContentValues(); long current = System.currentTimeMillis(); long modDate = file.lastModified(); cv.put(MediaStore.Audio.Media.IS_MUSIC, "0"); cv.put(MediaStore.Audio.Media.TITLE, entry.getRecordName()); cv.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath()); cv.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000)); cv.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / 1000)); cv.put(MediaStore.Audio.Media.DURATION, entry.getRecordDuring()); cv.put(MediaStore.Audio.Media.ARTIST,res.getString(R.string.audio_db_artist_name)); cv.put(MediaStore.Audio.Media.ALBUM,res.getString(R.string.audio_db_album_name)); // Log.d(TAG, "Inserting audio record: " + cv.toString()); ContentResolver resolver = getContentResolver(); Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; // Log.d(TAG, "ContentURI: " + base);
Uri result = resolver.insert(base, cv);
//只能添加指定的字段信息
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE));
//系统获取媒体文件信息,然后保存到mediaData中
好的处理方法是:
1:系统扫描,添加信息到mediaData
2: 回调方法作后续的处理
//-->>>method 2 MediaScannerConnection.scanFile(context,new String[]{newFile.getAbsolutePath()},null,new MediaScannerConnection.OnScanCompletedListener(){ @Override public void onScanCompleted(String path, Uri uri) { if (uri!=null){ ContentValues cv = new ContentValues(); cv.put(MediaStore.Audio.Media.IS_MUSIC, "0"); context.getContentResolver().update(uri, cv, "is_music = ?", new String[]{"1"}); } } }); //<<<--method 2