c# - Xamarin Android Visualizer SetDataCaptureListener 抛出 InvalidCastException

标签 c# android xamarin xamarin.android

基于the answer of this questionthis example我使用 Xamarin 实现了一个 Visualizer

myVisualizer = new Visualizer(0);
myVisualizer.SetEnabled(false);
myVisualizer.SetCaptureSize(Visualizer.GetCaptureSizeRange()[1]);
myVisualizer.SetDataCaptureListener(new VisualizerCapturer(), Visualizer.MaxCaptureRate, true, false);

代码一直有效,直到我调用 myVisualizer.SetDataCaptureListener(...) 并出现异常

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidCastException: Specified cast is not valid. at Android.Media.Audiofx.Visualizer.SetDataCaptureListener (Android.Media.Audiofx.Visualizer+IOnDataCaptureListener listener, System.Int32 rate, System.Boolean waveform, System.Boolean fft) [0x0000b] in /Users/builder/data/lanes/4009/9578cdcd/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Media.Audiofx.Visualizer.cs:811

被抛出。我的 IOnDataCaptureListener 实现没有任何代码(我在方法内设置了断点,在抛出异常之前没有调用任何方法)

public class VisualizerCapturer : Visualizer.IOnDataCaptureListener
{
    public IntPtr Handle
    {
        get
        {
            throw new NotImplementedException();
        }
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }

    public void OnFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate)
    {
        throw new NotImplementedException();
    }

    public void OnWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate)
    {
        throw new NotImplementedException();
    }
}

我完全不知道我的问题是什么,我希望任何人都可以帮助我解决我的问题。

最佳答案

您的 Visualizer.IOnDataCaptureListener 实现不是从 Java.Lang.Object 继承的,因此它是一个普通的 C# 类,而不是 Android Callable Wrapper (ACW ) 基于类,因此您的 VisualizerCapturer 对象无法在 C# 和 Java 运行时之间传递。

Java.Lang.Object 继承 VisualizerCapturer 并实现 Visualizer.IOnDataCaptureListener 方法,您将没问题:

public class VisualizerCapturer : Java.Lang.Object, Visualizer.IOnDataCaptureListener
{
 ~~~~
}

关于c# - Xamarin Android Visualizer SetDataCaptureListener 抛出 InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42629257/

相关文章:

c# - 运行 Visual Web Developer 2008 Express 时出错

c# - 通过C#代码创建DataGridTemplateColumn

android - 当第一个项目的高度为 0 时,SwipeRefreshLayout 不起作用

java - "onPreferenceStartFragment()"单击首选项时未调用方法

c# - 从 URL 加载图像作为 base64 字符串

c# - 在 Xamarin 跨平台应用程序中呈现带有 ObservableCollection 数据的 DisplayActionSheet

c# - 反汇编代码中的属性顺序

c# - 数据库特定类型是否进入域模型或数据访问层?

android - 如果 MapView 的位图从未可见,则获取该位图会失败

c# - 带有图标的 Xamarin.Forms 列表应用程序(仅限 Android)