--- a/packages/apps/SoundRecorder/src/com/android/soundrecorder/Recorder.java+++ b/packages/apps/SoundRecorder/src/com/android/soundrecorder/Recorder.java@@ -9,6 +9,11 @@ import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.os.storage.StorageManager; +import android.provider.MediaStore;+import android.net.Uri;+import android.database.Cursor;+import android.content.ContentResolver;+ import com.mediatek.featureoption.FeatureOption;  import java.io.File;@@ -276,6 +281,54 @@ public class Recorder implements OnCompletionListener {         signalStateChanged(IDLE_STATE);     } +    /**+     * <p>+     * Check file from Media DB, if the file is add by media scanner .+     * @param context+     * @param file+     * @return return true if exited in Media DB,else return fasle.+     */+    private boolean checkFromMediaDB(Context context ,File file ) {       +        Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;+        final String[] ids = new String[]{MediaStore.Audio.Media._ID};+        final String where = MediaStore.Audio.Media.DATA+                + " LIKE '%"+                + file.getAbsolutePath().replaceFirst(+                        "file:///", "") + "'";++        Cursor cursor = query(context,base, ids, where, null, null);+        try {+               return null != cursor && cursor.getCount() > 0;+        } catch (IllegalStateException e) {+            e.printStackTrace();+        } finally {+            if (cursor != null) {+                cursor.close();+            }+        }+        return false;+    }+    +    /*+     * A simple utility to do a query into the databases.+     */+    private Cursor query(Context context, Uri uri, String[] projection, String selection,+            String[] selectionArgs, String sortOrder) {++        try {+            ContentResolver resolver = context.getContentResolver();+            if (resolver == null) {+                return null;+            }+            return resolver.query(uri, projection, selection, selectionArgs,+                    sortOrder);++        } catch (UnsupportedOperationException ex) {+            return null;+        }+    }+     public void startRecording(int outputfileformat, int recordingType,             String extension, Context context) {         SRLogUtils.i(TAG, "in startRecording() 4 param");@@ -284,9 +337,14 @@ public class Recorder implements OnCompletionListener {                 && mSampleFile.exists()                 && !(mSoundRecorderDoWhat != null && mSoundRecorderDoWhat                         .equals(SoundRecorder.PLAY))) {-            if (!mSampleFile.delete()) {-                SRLogUtils.i(TAG, "<startRecording> delete file fail");+            //if the file is existing in media db, don't delete it.+            if(!checkFromMediaDB(context,mSampleFile)){+                if (!mSampleFile.delete()) {+                    SRLogUtils.i(TAG, "<startRecording> delete file fail");+                }               }+            //End         }          stop();

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android开发学习之事件处理和Button详解
  2. android快速点击生成两个相同页面的解决
  3. Android SDK Permission大全访问权限
  4. Android原生视频播放VideoView的使用
  5. Keep ProgressDialog while rotate the p
  6. 2012-7-17 android:layout_weight
  7. Android 弹框UI框架
  8. C#移动端开发之Xamarin.Forms使用文档(从
  9. 2012年4月6日学习记录
  10. Android横向拼接多个Bitmap