Android 系统APK-录音机 录音过程不能受外部USB插拔影响

Posted 王睿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 系统APK-录音机 录音过程不能受外部USB插拔影响相关的知识,希望对你有一定的参考价值。

路径:packages/apps/SoundRecorder/src/com/android/soundrecorder/SoundRecorder.java

思路:

  1. 根据常用方法,定位到录音机界面在 SoundRecorder.java
  2. 因为是插拔监听,所以怀疑是由广播接收器引起的,在SoundRecorder.java搜索 receiver
  3. 根据看到的SD Card这样的关键字样,于是搜索 SDCard 找到了四五个方法,然后分别在这几个方法里埋Log
  4. 根据打印,最后锁定在 registerExternalStorageListener(),在这个方法里可以看到一个广播接收器:mSDCardMountEventReceiver
  5. 最后根据分别打印里面接收器代码的执行顺序,看到最有可能导致问题产生的代码: mRecorder.delete(); 通过跟踪看到了这个方法不仅删除了录音文件同时他还停止了录音
  6. 注释掉 mRecorder.delete(); 即可。
    private void registerExternalStorageListener() 
        if (mSDCardMountEventReceiver == null) 
            mSDCardMountEventReceiver = new BroadcastReceiver() 
                @Override
                public void onReceive(Context context, Intent intent) 
                    String action = intent.getAction();
                    if (action.equals(Intent.ACTION_MEDIA_EJECT)) 
++ //                        mRecorder.delete();
                     else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) 
                        mSampleInterrupted = false;
                        updateUi();
                    
                
            ;
            IntentFilter iFilter = new IntentFilter();
            iFilter.addAction(Intent.ACTION_MEDIA_EJECT);
            iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
            iFilter.addDataScheme("file");
            registerReceiver(mSDCardMountEventReceiver, iFilter);
        
    

系统APK 开发系列:
Android 系统APK-录音机 横屏显示时录制时间不居中
Android 系统APK-录音机 录音过程不能受外部USB插拔影响
Android 系统APK-闹钟 长按进入夜间模式,松开退出夜间模式
Android 系统APK-闹钟 移除时钟内的音量按钮
Android 系统APK-音乐和视频 暂停、上一首、下一首按键修复

以上是关于Android 系统APK-录音机 录音过程不能受外部USB插拔影响的主要内容,如果未能解决你的问题,请参考以下文章

Android 11.0 修复在录音机APK(SoundRecorder),横屏显示时录制时间不能居中

Android 系统APK-录音机 横屏显示时录制时间不居中

Android学习之路-录音功能实现

MT6737 Android N 平台 Audio系统学习----录音到播放录音流程分析

Android 语音通话录音无法在系统上播放

itest考试会录音吗