diff options
author | Hu Wang <huw@codeaurora.org> | 2014-08-04 10:13:00 +0800 |
---|---|---|
committer | Hu Wang <huw@codeaurora.org> | 2014-08-07 16:58:49 +0800 |
commit | ca0b3e8bf289c4667775e191ee90e3c232451048 (patch) | |
tree | 02fb2078254b2d3793df81211ba96a008cece2d8 /FMRecord | |
parent | 0c4cc4902de0ff8efe44a16cbd8bc1e4a48396d3 (diff) | |
download | android_hardware_qcom_fm-ca0b3e8bf289c4667775e191ee90e3c232451048.tar.gz android_hardware_qcom_fm-ca0b3e8bf289c4667775e191ee90e3c232451048.tar.bz2 android_hardware_qcom_fm-ca0b3e8bf289c4667775e191ee90e3c232451048.zip |
FM: Fix the issue with save the recording file
If open file explorer during FM recording, audio file
will be added to video database.FM will fail to insert
into audio database when stop recording.
If the recorded file already exists with same name,
remove the same and insert the new recorded file.
CRs-Fixed: 696466
Change-Id: I644340658e652a7da9a4d4c05ad605b3000e2ef1
Diffstat (limited to 'FMRecord')
-rw-r--r-- | FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java index da55d8c..e101584 100644 --- a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java +++ b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java @@ -372,6 +372,7 @@ public class FMRecordingService extends Service { Log.d(TAG, "In addToMediaDB"); Resources res = getResources(); ContentValues cv = new ContentValues(); + int audioId = -1; long current = System.currentTimeMillis(); long modDate = file.lastModified(); long recordDuration = stopTimerMs - startTimerMs; @@ -393,6 +394,11 @@ public class FMRecordingService extends Service { res.getString(R.string.audio_db_artist_name)); cv.put(MediaStore.Audio.Media.ALBUM, res.getString(R.string.audio_db_album_name)); + audioId = getFileIdInVideoDB(file); + if (audioId != -1) {//remove the record if it is already added into video table. + removeRecordInVideoDB(audioId); + Log.d(TAG, "Remove audio record " + audioId + " in video database"); + } Log.d(TAG, "Inserting audio record: " + cv.toString()); ContentResolver resolver = getContentResolver(); Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; @@ -405,7 +411,7 @@ public class FMRecordingService extends Service { if (getPlaylistId(res) == -1) { createPlaylist(res, resolver); } - int audioId = Integer.valueOf(result.getLastPathSegment()); + audioId = Integer.valueOf(result.getLastPathSegment()); addToPlaylist(resolver, audioId, getPlaylistId(res)); // Notify those applications such as Music listening to the @@ -414,6 +420,36 @@ public class FMRecordingService extends Service { return result; } + private int getFileIdInVideoDB(File file) { + int id = -1; + final String where = MediaStore.Video.Media.DATA + "=?"; + final String[] args = new String[] { file.getAbsolutePath() }; + final String[] ids = new String[] { MediaStore.Video.Media._ID }; + Uri base = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + + Cursor cursor = query(base, ids, where, args, null); + if (cursor == null) { + Log.v(TAG, "Data query returns null"); + } else { + if (cursor.moveToNext() != false) { + id = cursor.getInt(0); + cursor.close(); + } + } + return id; + } + + private void removeRecordInVideoDB(int id) { + final String where = MediaStore.Video.Media._ID + "=" + id; + Uri base = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + ContentValues cv = new ContentValues(); + ContentResolver resolver = getContentResolver(); + + cv.put(MediaStore.Video.Media.DATA, "null"); + resolver.update(base, cv, where, null); + resolver.delete(base, where, null); + } + private int getPlaylistId(Resources res) { Uri uri = MediaStore.Audio.Playlists.getContentUri("external"); final String[] ids = new String[] { MediaStore.Audio.Playlists._ID }; |