2016-06-19 8 views
0

バックグラウンドで音声を記録するアプリケーションを作成しようとしています。私はこの目的のためにServiceクラスを使用しています。 UI Threadをブロックしたくないので、録音操作を実行するために私のサービスクラスにHandlerThreadを作成しました。しかし、Serviceを実行しようとすると、私のアプリはANR (Application Not Responding) errorを投げます。 UI Threadがどのようにブロックされているのか把握することができません。言及する価値があるのは、自分のUIスレッドで実行されるCountUp Timerを作成したことです。ここでバックグラウンドサービスで音声録音を開始する際のANR

は私のコードです:ここでは

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(); 

    } 
} 

は私のエラーログです:

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. 

誰も助けてください?????

答えて

0

その後、プレーヤーに

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

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

を渡し、あなたのパス上のファイルを作成し、API 23(6.0)に対してコンパイルしているならば、あなたはまた、時間の権限を実行しますしています。

+0

私はそれを行いましたが、まだANRを取得しています.... @SohailZahid –

+0

@VaibhavAgarwalどのAPIバージョンを使用していますか? –

+0

私はそれをAPIレベル17で実行しています –

0

「android.os.waitForDebugger()」の意味は?デバッガが接続されるまで、スレッド(メインスレッド)をスリープ状態にします。

私はそれが問題だと思います。

関連する問題