summaryrefslogtreecommitdiffstats
path: root/FMRecord
diff options
context:
space:
mode:
authorHu Wang <huw@codeaurora.org>2014-08-04 10:13:00 +0800
committerHu Wang <huw@codeaurora.org>2014-08-07 16:58:49 +0800
commitca0b3e8bf289c4667775e191ee90e3c232451048 (patch)
tree02fb2078254b2d3793df81211ba96a008cece2d8 /FMRecord
parent0c4cc4902de0ff8efe44a16cbd8bc1e4a48396d3 (diff)
downloadandroid_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.java38
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 };