我正在处理一些调用AudioRecord构造函数的代码:
AudioRecord Listener = new AudioRecord(List of parameters);do {} while (Listener.getState() != AudioRecord.STATE_INITIAliZED);
如果AudioRecord在另一个线程中关闭并花费时间进行初始化,则此代码似乎很有意义.我不确定情况是否如此,如果不是这样,只检查代码并返回异常似乎会好得多,以免在初始化确实失败的某个时刻启动无限循环(尽管我可以将支票的数量限制为有限).
我应该保留原代码还是将第二行替换为以下内容?
if(Listener.getState() != AudioRecord.STATE_INITIAliZED) { throw new Exception("AudioRecord Failed to initialize");}
解决方法:
当您查看源代码时,将非常清楚:
public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes) throws IllegalArgumentException { mState = STATE_UNINITIAliZED; mRecordingState = RECORDSTATE_StopPED; ... //parameter checks // native initialization //update native initialization when information about harDWare init failure //due to capture device already open is available. int initResult = native_setup( new WeakReference<AudioRecord>(this), mRecordSource, mSampleRate, mChannels, mAudioFormat, mNativeBufferSizeInBytes); if (initResult != SUCCESS) { loge("Error code "+initResult+" when initializing native AudioRecord object."); return; // with mState == STATE_UNINITIAliZED } mState = STATE_INITIAliZED; }
因此,您不必等待其状态转换.调用构造函数一次后,只需检查状态.如果native_setup中有任何错误,则状态将为STATE_UNINITIAliZED.
总结以上是内存溢出为你收集整理的java-将AudioRecord.getState()放入循环是否有用?全部内容,希望文章能够帮你解决java-将AudioRecord.getState()放入循环是否有用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)