Open iandygit opened 9 years ago
你的描述不是很清楚。约个时间讨论一下。
经测试,结合合理的逻辑处理之后,系统可控性得到很大提升。
开始录音时 出错 07-26 10:06:13.819 11872-11894/? E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-1069 java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord. at android.media.AudioRecord.startRecording(AudioRecord.java:515) at net.wyun.wmrecord.MessengerService.startRecord(MessengerService.java:272) at net.wyun.wmrecord.MessengerService.access$100(MessengerService.java:30) at net.wyun.wmrecord.MessengerService$1$1.run(MessengerService.java:180) at java.lang.Thread.run(Thread.java:838)
通过创建一个可以随系统启动的service,在service中增加IsRunning和IsRecording标识, 在其中的onCreate方法中,启动Running线程,此时IsRunning为true,当在Lib中或后来启动的Activity中接收到Recording指令时,IsRecording更新为true,录音开始。
因为是Bind的Service,在Activity被意外终止时,Service会自动重新启动,此时线程正常。可以实现我们的要求。
但由于是启动的新线程,当Service被系统管理程序强行终止后,进程不能正常退出,会造成系统录音重复。 此问题尚未有合适的解决方案,请尹总帮忙确认。