java-将AudioRecord.getState()放入循环是否有用?

java-将AudioRecord.getState()放入循环是否有用?,第1张

概述我正在处理一些调用AudioRecord构造函数的代码:AudioRecordlistener=newAudioRecord(listofparameters);do{}while(listener.getState()!=AudioRecord.STATE_INITIALIZED);如果AudioRecord在另一个线程中关闭并花费时间进行初始化,则此代码似乎很有意义.我不确定情

我正在处理一些调用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()放入循环是否有用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1211144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存