MonoTouch:帮助将几行Objective C转换为C#

时间:2011-02-12 07:48:21

标签: xamarin.ios

由于来自纯C#背景,我在使用一些Objective C语法时遇到了一些麻烦。我正在使用音频队列,我正在尝试设置InputAudioQueue属性EnableLevelMetering并获取CurrentLevelMeterDB属性。我在Objective C中找到了几个例子。

设置属性:

UInt32 enabledLevelMeter = true;
AudioQueueSetProperty(queue,kAudioQueueProperty_EnableLevelMetering,&enabledLevelMeter,sizeof(UInt32));

获得价值:

AudioQueueLevelMeterState levelMeter;
UInt32 levelMeterSize = sizeof(AudioQueueLevelMeterState);
AudioQueueGetProperty(queue,kAudioQueueProperty_CurrentLevelMeterDB,&levelMeter,&levelMeterSize);

Float32 peakDB = levelMeter.mPeakPower;
Float32 averageDB = levelMeter.mAveragePower;

AudioQueue的API reference非常小。我不确定在C#中使用以下值的内容。

public bool SetProperty (AudioQueueProperty property, int dataSize, IntPtr propertyData)
public IntPtr GetProperty (AudioQueueProperty property, out int size)

有人可以帮助我吗?感谢。

1 个答案:

答案 0 :(得分:1)

创建AudioQueue(输入或输出)后,您可以调用:

int enabled = queue.GetProperty<int> (AudioQueueProperty.EnableLevelMetering);

设置它有点烦人,你必须使用:

queue.SetProperty (AudioQueueProperty.EnableLevelMetering, 4, (IntPtr) &enabled);