2017-03-06 9 views
2

the answer of this questionthis exampleに基づいて、Xamarinを使用してVisualizerを実装しました。Xamarin Android Visualizer SetDataCaptureListenerがInvalidCastExceptionをスローする

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:例外が呼び出しのターゲットによって を投げてきました。 ---> System.InvalidCastException: 指定されたキャストは無効です。 Android.Media.Audiofx.Visualizer.SetDataCaptureListener(Android.Media.Audiofx.Visualizer + IOnDataCaptureListenerリスナー、 可能System.Int32率、可能System.Boolean波形可能System.Boolean FFT)で [0x0000b] /ユーザ/ビルダーで/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

答えて

3

あなたの実装では、このように、それはプレーンなC#クラスではなくAndroidの呼び出し可能ラッパー(ACW)ベースのクラスであり、したがって、あなたのVisualizerCapturerオブジェクトはC#とJavaランタイムの間で渡すことが有効ではありませんJava.Lang.Objectから継承しません。

Java.Lang.ObjectからあなたVisualizerCapturerを継承し、Visualizer.IOnDataCaptureListenerメソッドを実装して、あなたは罰金になります:

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

完璧な答え、魔法のように動作し、おかげでたくさん! – Fruchtzwerg

+0

@Fruchtzwerg喜んで私は助けることができた、幸せなXam'ieコーディング – SushiHangover

関連する問題