2016-06-19 11 views
0

Ich versuche eine App zu erstellen, die Audio im Hintergrund aufzeichnet. Ich benutze Service Klasse für diesen Zweck. Da ich meine UI Thread nicht blockieren möchte, habe ich in meiner Service-Klasse eine HandlerThread erstellt, um den Aufzeichnungsvorgang durchzuführen. Wenn ich versuche, die Service auszuführen, löst meine App ANR (Application Not Responding) error. Ich kann nicht herausfinden, wie meine UI Thread blockiert wird. Erwähnenswert ist auch, dass ich einen CountUp Timer erstellt habe, der auf meinem UI Thread läuft.ANR beim Starten der Audioaufnahme im Hintergrunddienst

ist hier mein Code:

public class AudioRecorderService extends Service { 
    private Looper mLooper; 
    private AudioRecorderHandler mAudioRecorderHandler; 
    private MediaRecorder mAudioRecorder; 


    public AudioRecorderService() { 
    } 


    private final class AudioRecorderHandler extends Handler { 

     private String fileName; 

     public AudioRecorderHandler(Looper looper) { 
      super(looper); 
     } 

     @Override 
     public void handleMessage(Message msg) { 

      fileName = Environment.getDataDirectory().getAbsolutePath() + "/" + "test.mp4"; 

      mAudioRecorder = new MediaRecorder(); 
      mAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      mAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
      mAudioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
      mAudioRecorder.setAudioEncodingBitRate(256); 
      mAudioRecorder.setAudioChannels(1); 
      mAudioRecorder.setAudioSamplingRate(44100); 
      mAudioRecorder.setOutputFile(fileName); 

      try { 
       mAudioRecorder.prepare(); 
       mAudioRecorder.start(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    } 


    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     Toast.makeText(this, "Recording Started", Toast.LENGTH_LONG).show(); 

     Message msg = mAudioRecorderHandler.obtainMessage(); 
     msg.arg1 = startId; 

     mAudioRecorderHandler.sendMessage(msg); 

     return START_REDELIVER_INTENT; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO: Return the communication channel to the service. 
     throw new UnsupportedOperationException("Not yet implemented"); 
    } 

    @Override 
    public void onCreate() { 

     android.os.Debug.waitForDebugger(); 

     HandlerThread thread = new HandlerThread("AudioRecorder", Process.THREAD_PRIORITY_BACKGROUND); 
     thread.start(); 

     mLooper = thread.getLooper(); 
     mAudioRecorderHandler = new AudioRecorderHandler(mLooper); 
    } 

    @Override 
    public void onDestroy() { 

     if (mAudioRecorder != null) { 
      mAudioRecorder.stop(); 
      mAudioRecorder.release(); 
      mAudioRecorder = null; 
     } 

     Toast.makeText(this, "Recording Done", Toast.LENGTH_LONG).show(); 

     mLooper.quit(); 
     mLooper.getThread().interrupt(); 

    } 
} 

meine Fehlerprotokoll Hier wird:

06-19 16:22:15.971 509-551/? E/InputDispatcher: channel '41c32190 com.example.vaibhav.phrasesapp/com.example.vaibhav.phrasesapp.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 
06-19 16:22:17.025 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.026 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.027 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.028 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.029 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.030 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.031 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.032 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.032 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.032 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.032 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:17.032 509-536/? E/FWKEXT: Enter GetCurrentOP 
06-19 16:22:19.172 9787-9791/? E/Trace: error opening trace file: No such file or directory (2) 
06-19 16:22:19.176 9787-9793/? E/jdwp: jdwp::setsockopt(SO_SNDTIMEO) 
06-19 16:22:19.176 9787-9793/? E/jdwp: jdwp::setsockopt(SO_RCVTIMEO) 
06-19 16:22:19.264 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources 
06-19 16:22:19.266 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.pruneResourceCache 
06-19 16:22:19.292 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.295 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.295 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.296 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.319 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.333 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.337 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.340 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.transition.TransitionManager', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.349 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.361 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.368 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:19.374 9797-9797/com.example.vaibhav.phrasesapp E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.vaibhav.phrasesapp.MainActivity.access$super 
06-19 16:22:27.799 803-1055/? E/CellLocation: create GsmCellLocation 
06-19 16:22:27.802 803-1055/? E/CellLocation: create GsmCellLocation 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: Sorted scan results 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: 00:17:7c:3a:59:56 freq=2437 qual=0 noise=0 level=-66 flags=0xb 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: IEs 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: 000d2a2a2a2a76697275732a2a2a2a010882848b960c1218240301062a010032043048606c30140100000fac020100000fac020100000fac020000dd180050f2020101000003a4000027a4000042435e0062322f00dd0600e04c020160 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: Beacon IEs 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: 000d2a2a2a2a76697275732a2a2a2a010882848b960c1218240301060504000100002a010432043048606c30140100000fac020100000fac020100000fac020000dd180050f2020101000003a4000027a4000042435e0062322f00dd0600e04c020160 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: e4:f4:c6:43:dc:88 freq=2412 qual=0 noise=0 level=-70 flags=0x2b 
06-19 16:22:28.446 595-595/? E/wpa_supplicant: IEs 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 00094e4554474541523238010882848b961224486c0301012a010032040c1830602d1aee1117ffff0000010000000000000000000000000c00000000003d160105060000000000000000000000000000000000000030140100000fac040100000fac040100000fac020000dd180050f2020101000003a4000027a4000042435e0062322f000b05040023127a4a0e14000a002c01c800140005001900dd07000c43070000000706455520010d10dda80050f204104a0001101044000102103b0001031047001038833092309218838e48e4f4c643dc881021000d4e4554474541522c20496e632e1023001d4e45544745415220576972656c6573732041636365737320506f696e74102400064a52363135301042000831323334353637381054000800060050f2040001101100144a52363135302028576972656c6573732041502910080002210c103c0001011049000600372a000120 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: d0:92:9e:c7:ce:82 freq=2462 qual=0 noise=0 level=-73 flags=0xb 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: IEs 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 001157696e646f77732050686f6e6539373139010882848b960c12182403010b0706494e20010d142a010030140100000fac040100000fac040100000fac02000032043048606c2d1a2c011bff000000000000000000000080000000000000000000003d160b0804000000000000000000000000000000000000004a0e14000a00c800c8001400050019007f080100000000000040dd180050f2020101010003a4000027a4000042435e0062322f00dd0900037f01010000ff7fdd7f0050f204104a0001101044000102103b00010010470010d44ca65da82f4caca8ebd26a3866b85b102100094d6963726f736f66741023000757696e646f77731024000a31302e302e3134333637104200013010540008000a0050f20000001011000d57696e646f77732070686f6e651008000211681049000600372a000120dd080050f21102000000dd0e0050f2122b000600d0929ec7ce80dd31506f9a09020200253b0d2200d0929ec7ce8111e8000a0050f2000000001011000d57696e646f77732070686f6e650e0000 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: Beacon IEs 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 001157696e646f77732050686f6e6539373139010882848b960c12182403010b050800010000000000002a010030140100000fac040100000fac040100000fac02000032043048606c2d1a2c011bff000000000000000000000080000000000000000000003d160b0804000000000000000000000000000000000000004a0e14000a00c800c8001400050019007f080100000000000040dd180050f2020101010003a4000027a4000042435e0062322f00dd0900037f01010000ff7fdd350050f204104a00011010440001021049000600372a00012010540008000a0050f20000001011000d57696e646f77732070686f6e65dd080050f21102000000dd0e0050f2122b000600d0929ec7ce80dd12506f9a09020200253b030600d0929ec7ce81 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 0c:d2:b5:46:4d:40 freq=2462 qual=0 noise=0 level=-84 flags=0xb 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: IEs 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 00064d756b657368010882848b961224486c03010b2a010432040c1830602d1a6e1117ff000000010000000000000000000000000c00000000003d160b0006000000000000000000000000000000000000003e0100dd1a0050f20101000050f20202000050f2020050f20401000050f202dd180050f2020101000003a4000027a4000042435e0062322f004a0e14000a002c01c8001400050019007f0101dd07000c430400000007064d5820010b10 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: Beacon IEs 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 00064d756b657368010882848b961224486c03010b32040c18306007064d5820010b143308200102030405060733082105060708090a0b050400010020dd1a0050f20101000050f20202000050f2020050f20401000050f2022a01042d1a6e1117ff000000010000000000000000000000000c00000000003d160b0006000000000000000000000000000000000000004a0e14000a002c01c8001400050019007f0101dd180050f2020101000003a4000027a4000042435e0062322f00dd07000c4304000000 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: 0c:d2:b5:3f:b7:04 freq=2447 qual=0 noise=0 level=-87 flags=0xb 
06-19 16:22:28.447 595-595/? E/wpa_supplicant: IEs 
06-19 16:22:28.453 595-595/? E/wpa_supplicant: 001041697274656c5f5a65726f746f756368010882848b961224486c0301082a010432040c1830602d1a6e1117ff000000010000000000000000000000000c00000000003d16080406000000000000000000000000000000000000003e0100dd1a0050f20101000050f20202000050f2020050f20401000050f202dd180050f2020101000003a4000027a4000042435e0062322f004a0e14000a002c01c8001400050019007f0101dd07000c430400000007064d5820010b10 
06-19 16:22:28.461 595-595/? E/wpa_supplicant: WPS: WFA subelement id=0 len=1 
06-19 16:22:28.461 595-595/? E/wpa_supplicant: WPS: WFA subelement id=0 len=1 
06-19 16:22:28.461 595-595/? E/wpa_supplicant: WPS: WFA subelement id=0 len=1 
06-19 16:22:28.461 595-595/? E/wpa_supplicant: WPS: WFA subelement id=0 len=1 
06-19 16:22:28.461 595-595/? E/wpa_supplicant: WPS: WFA subelement id=0 len=1 
06-19 16:22:28.461 595-595/? E/wpa_supplicant: WPS: WFA subelement id=0 len=1 
06-19 16:22:49.020 509-528/? E/ANRManager: writeStringToFile error: /sys/module/mlog/parameters/do_mlog java.io.FileNotFoundException: /sys/module/mlog/parameters/do_mlog: open failed: ENOENT (No such file or directory) 
06-19 16:22:49.033 509-528/? E/ANRManager: writeStringToFile error: /sys/kernel/debug/tracing/tracing_on java.io.FileNotFoundException: /sys/kernel/debug/tracing/tracing_on: open failed: ENOENT (No such file or directory) 
06-19 16:22:49.034 509-528/? E/ANRManager: writeStringToFile error: /sys/kernel/debug/binder/transaction_log_enable java.io.FileNotFoundException: /sys/kernel/debug/binder/transaction_log_enable: open failed: ENOENT (No such file or directory) 
06-19 16:22:49.035 509-528/? E/ANRManager: writeStringToFile error: /sys/module/mlog/parameters/timer_intval java.io.FileNotFoundException: /sys/module/mlog/parameters/timer_intval: open failed: ENOENT (No such file or directory) 
06-19 16:22:50.830 509-528/? E/ANRManager: ANR in com.example.vaibhav.phrasesapp 
              Reason: Executing service com.example.vaibhav.phrasesapp/.AudioRecorderService 
              Load: 6.93/8.93/20.67 
              Android time :[2016-06-19 16:22:50.828] [54834.406] 
              CPU usage from 16261ms to 0ms ago: 
              2% 158/adbd: 0.4% user + 1.5% kernel/faults: 1122 minor 
              0.7% 9563/kworker/0:2: 0% user + 0.7% kernel 
              0.5% 9653/logcat: 0.2% user + 0.3% kernel 
              0.3% 509/system_server: 0.3% user + 0% kernel/faults: 43 minor 
              0.3% 45/bat_thread_kthr: 0% user + 0.3% kernel 
              0.1% 601/com.android.systemui: 0.1% user + 0% kernel/faults: 14 minor 
              0.1% 881/com.cleanmaster.boost:service: 0.1% user + 0% kernel/faults: 1 minor 
              0.1% 53/disp_config_upd: 0% user + 0.1% kernel 
              0.1% 133/surfaceflinger: 0% user + 0% kernel/faults: 4 minor 
              0.1% 9797/com.example.vaibhav.phrasesapp: 0% user + 0% kernel/faults: 11 minor 
              0% 54/mmcqd/0: 0% user + 0% kernel 
              0% 65/mt_gpufreq: 0% user + 0% kernel 
              0% 595/wpa_supplicant: 0% user + 0% kernel/faults: 1 minor 
              0% 665/com.android.phone: 0% user + 0% kernel/faults: 8 minor 
              0% 4987/com.google.android.apps.maps: 0% user + 0% kernel/faults: 1 minor 
              0% 7872/kworker/0:0: 0% user + 0% kernel 
              3.6% TOTAL: 1% user + 2.6% kernel 
06-19 16:22:50.832 509-528/? E/ActivityManager: get crashInfo fail. 

Kann jemand bitte helfen ?????

Antwort

0

erstellen Datei auf Ihrem Weg passieren sie dann auf den Player

File root = new File(Environment.getDataDirectory().getAbsolutePath() + "/" + "recordings"); 
if (!root.exists()) { 
    root.mkdirs();   
    } 

fileName = root.getPath().toString(); 

Und wenn Sie gegen API kompiliert werden 23 (6.0), dann haben Sie auch Berechtigungen Laufzeit erhalten.

+0

tat ich das, aber ich bin immer noch ANR .... @SohailZahid –

+0

@VaibhavAgarwal Welche API Version Sie verwenden? –

+0

ich es auf API-Ebene leite 17 –

0

Was ist der Mittelwert von "android.os.waitForDebugger()"? Es wird Ihren Thread (Ihren Hauptthread) schlafen, bis ein Debugger angeschlossen ist.

Ich denke, es ist das Problem.